Merge remote-tracking branch 'tor-github/pr/1517'

This commit is contained in:
teor 2019-11-18 11:21:37 +10:00
commit c34fb3413d
No known key found for this signature in database
GPG Key ID: 10FEAA0E7075672A
60 changed files with 349 additions and 340 deletions

3
changes/ticket32415 Normal file
View File

@ -0,0 +1,3 @@
o Code simplification and refactoring:
- Make all the structs we declare follow the same naming convention
of ending with "_t". Closes ticket 32415.

View File

@ -6766,7 +6766,7 @@ get_num_cpus(const or_options_t *options)
static void
init_libevent(const or_options_t *options)
{
tor_libevent_cfg cfg;
tor_libevent_cfg_t cfg;
tor_assert(options);

View File

@ -66,7 +66,7 @@ static int nt_service_cmd_stop(void);
/** Struct to hold dynamically loaded NT-service related function pointers.
*/
struct service_fns {
struct {
int loaded;
/** @{ */

View File

@ -37,7 +37,7 @@
static void queue_pending_tasks(void);
typedef struct worker_state_s {
typedef struct worker_state_t {
int generation;
server_onion_keys_t *onion_keys;
} worker_state_t;
@ -160,7 +160,7 @@ typedef struct cpuworker_reply_t {
uint8_t rend_auth_material[DIGEST_LEN];
} cpuworker_reply_t;
typedef struct cpuworker_job_u {
typedef struct cpuworker_job_u_t {
or_circuit_t *circ;
union {
cpuworker_request_t request;

View File

@ -14,10 +14,10 @@
void cpu_init(void);
void cpuworkers_rotate_keyinfo(void);
struct workqueue_entry_s;
struct workqueue_entry_t;
enum workqueue_reply_t;
enum workqueue_priority_t;
MOCK_DECL(struct workqueue_entry_s *, cpuworker_queue_work, (
MOCK_DECL(struct workqueue_entry_t *, cpuworker_queue_work, (
enum workqueue_priority_t priority,
enum workqueue_reply_t (*fn)(void *, void *),
void (*reply_fn)(void *),

View File

@ -27,7 +27,7 @@ struct packed_cell_t {
* or_connection_t's outbuf. */
struct cell_queue_t {
/** Linked list of packed_cell_t*/
TOR_SIMPLEQ_HEAD(cell_simpleq, packed_cell_t) head;
TOR_SIMPLEQ_HEAD(cell_simpleq_t, packed_cell_t) head;
int n; /**< The number of cells in the queue. */
};

View File

@ -106,7 +106,7 @@ static smartlist_t *finished_listeners = NULL;
/** Map from channel->global_identifier to channel. Contains the same
* elements as all_channels. */
static HT_HEAD(channel_gid_map, channel_s) channel_gid_map = HT_INITIALIZER();
static HT_HEAD(channel_gid_map, channel_t) channel_gid_map = HT_INITIALIZER();
static unsigned
channel_id_hash(const channel_t *chan)
@ -118,13 +118,13 @@ channel_id_eq(const channel_t *a, const channel_t *b)
{
return a->global_identifier == b->global_identifier;
}
HT_PROTOTYPE(channel_gid_map, channel_s, gidmap_node,
HT_PROTOTYPE(channel_gid_map, channel_t, gidmap_node,
channel_id_hash, channel_id_eq)
HT_GENERATE2(channel_gid_map, channel_s, gidmap_node,
HT_GENERATE2(channel_gid_map, channel_t, gidmap_node,
channel_id_hash, channel_id_eq,
0.6, tor_reallocarray_, tor_free_)
HANDLE_IMPL(channel, channel_s,)
HANDLE_IMPL(channel, channel_t,)
/* Counter for ID numbers */
static uint64_t n_channels_allocated = 0;
@ -137,13 +137,13 @@ static uint64_t n_channels_allocated = 0;
* If more than one channel exists, follow the next_with_same_id pointer
* as a linked list.
*/
static HT_HEAD(channel_idmap, channel_idmap_entry_s) channel_identity_map =
static HT_HEAD(channel_idmap, channel_idmap_entry_t) channel_identity_map =
HT_INITIALIZER();
typedef struct channel_idmap_entry_s {
HT_ENTRY(channel_idmap_entry_s) node;
typedef struct channel_idmap_entry_t {
HT_ENTRY(channel_idmap_entry_t) node;
uint8_t digest[DIGEST_LEN];
TOR_LIST_HEAD(channel_list_s, channel_s) channel_list;
TOR_LIST_HEAD(channel_list_t, channel_t) channel_list;
} channel_idmap_entry_t;
static inline unsigned
@ -159,9 +159,9 @@ channel_idmap_eq(const channel_idmap_entry_t *a,
return tor_memeq(a->digest, b->digest, DIGEST_LEN);
}
HT_PROTOTYPE(channel_idmap, channel_idmap_entry_s, node, channel_idmap_hash,
HT_PROTOTYPE(channel_idmap, channel_idmap_entry_t, node, channel_idmap_hash,
channel_idmap_eq)
HT_GENERATE2(channel_idmap, channel_idmap_entry_s, node, channel_idmap_hash,
HT_GENERATE2(channel_idmap, channel_idmap_entry_t, node, channel_idmap_hash,
channel_idmap_eq, 0.5, tor_reallocarray_, tor_free_)
/* Functions to maintain the digest map */
@ -3406,7 +3406,7 @@ channel_sort_by_ed25519_identity(const void **a_, const void **b_)
* all of which MUST have the same RSA ID. (They MAY have different
* Ed25519 IDs.) */
static void
channel_rsa_id_group_set_badness(struct channel_list_s *lst, int force)
channel_rsa_id_group_set_badness(struct channel_list_t *lst, int force)
{
/*XXXX This function should really be about channels. 15056 */
channel_t *chan = TOR_LIST_FIRST(lst);

View File

@ -178,15 +178,15 @@ typedef enum {
* to a particular node, and once constructed support the abstract operations
* defined below.
*/
struct channel_s {
struct channel_t {
/** Magic number for type-checking cast macros */
uint32_t magic;
/** List entry for hashtable for global-identifier lookup. */
HT_ENTRY(channel_s) gidmap_node;
HT_ENTRY(channel_t) gidmap_node;
/** Handle entry for handle-based lookup */
HANDLE_ENTRY(channel, channel_s);
HANDLE_ENTRY(channel, channel_t);
/** Current channel state */
channel_state_t state;
@ -397,7 +397,7 @@ struct channel_s {
* Linked list of channels with the same RSA identity digest, for use with
* the digest->channel map
*/
TOR_LIST_ENTRY(channel_s) next_with_same_id;
TOR_LIST_ENTRY(channel_t) next_with_same_id;
/** Circuit mux for circuits sending on this channel */
circuitmux_t *cmux;
@ -464,7 +464,7 @@ struct channel_s {
uint64_t n_cells_xmitted, n_bytes_xmitted;
};
struct channel_listener_s {
struct channel_listener_t {
/** Current channel listener state */
channel_listener_state_t state;
@ -773,7 +773,7 @@ int packed_cell_is_destroy(channel_t *chan,
circid_t *circid_out);
/* Declare the handle helpers */
HANDLE_DECL(channel, channel_s,)
HANDLE_DECL(channel, channel_t,)
#define channel_handle_free(h) \
FREE_AND_NULL(channel_handle_t, channel_handle_free_, (h))
#undef tor_timer_t

View File

@ -24,7 +24,7 @@ struct curve25519_public_key_t;
#ifdef TOR_CHANNEL_INTERNAL_
struct channel_tls_s {
struct channel_tls_t {
/* Base channel_t struct */
channel_t base_;
/* or_connection_t pointer */

View File

@ -94,14 +94,14 @@ typedef struct chanid_circid_muxinfo_t chanid_circid_muxinfo_t;
* a count of queued cells.
*/
typedef struct circuit_muxinfo_s circuit_muxinfo_t;
typedef struct circuit_muxinfo_t circuit_muxinfo_t;
/*
* This struct holds whatever we want to store per attached circuit on a
* circuitmux_t; right now, just the count of queued cells and the direction.
*/
struct circuit_muxinfo_s {
struct circuit_muxinfo_t {
/* Count of cells on this circuit at last update */
unsigned int cell_count;
/* Direction of flow */

View File

@ -12,11 +12,11 @@
#include "core/or/or.h"
#include "lib/testsupport/testsupport.h"
typedef struct circuitmux_policy_s circuitmux_policy_t;
typedef struct circuitmux_policy_data_s circuitmux_policy_data_t;
typedef struct circuitmux_policy_circ_data_s circuitmux_policy_circ_data_t;
typedef struct circuitmux_policy_t circuitmux_policy_t;
typedef struct circuitmux_policy_data_t circuitmux_policy_data_t;
typedef struct circuitmux_policy_circ_data_t circuitmux_policy_circ_data_t;
struct circuitmux_policy_s {
struct circuitmux_policy_t {
/* Allocate cmux-wide policy-specific data */
circuitmux_policy_data_t * (*alloc_cmux_data)(circuitmux_t *cmux);
/* Free cmux-wide policy-specific data */
@ -67,7 +67,7 @@ struct circuitmux_policy_s {
* wide data; it just has the magic number in the base struct.
*/
struct circuitmux_policy_data_s {
struct circuitmux_policy_data_t {
uint32_t magic;
};
@ -76,7 +76,7 @@ struct circuitmux_policy_data_s {
* specific data; it just has the magic number in the base struct.
*/
struct circuitmux_policy_circ_data_s {
struct circuitmux_policy_circ_data_t {
uint32_t magic;
};
@ -173,7 +173,7 @@ typedef HT_HEAD(chanid_circid_muxinfo_map, chanid_circid_muxinfo_t)
* Structures for circuitmux.c
*/
struct circuitmux_s {
struct circuitmux_t {
/* Keep count of attached, active circuits */
unsigned int n_circuits, n_active_circuits;

View File

@ -25,9 +25,9 @@ void circuitmux_ewma_free_all(void);
/*** EWMA structures ***/
typedef struct cell_ewma_s cell_ewma_t;
typedef struct ewma_policy_data_s ewma_policy_data_t;
typedef struct ewma_policy_circ_data_s ewma_policy_circ_data_t;
typedef struct cell_ewma_t cell_ewma_t;
typedef struct ewma_policy_data_t ewma_policy_data_t;
typedef struct ewma_policy_circ_data_t ewma_policy_circ_data_t;
/**
* The cell_ewma_t structure keeps track of how many cells a circuit has
@ -36,7 +36,7 @@ typedef struct ewma_policy_circ_data_s ewma_policy_circ_data_t;
* connection in channel_flush_from_first_active_circuit().
*/
struct cell_ewma_s {
struct cell_ewma_t {
/** The last 'tick' at which we recalibrated cell_count.
*
* A cell sent at exactly the start of this tick has weight 1.0. Cells sent
@ -53,7 +53,7 @@ struct cell_ewma_s {
int heap_index;
};
struct ewma_policy_data_s {
struct ewma_policy_data_t {
circuitmux_policy_data_t base_;
/**
@ -72,7 +72,7 @@ struct ewma_policy_data_s {
unsigned int active_circuit_pqueue_last_recalibrated;
};
struct ewma_policy_circ_data_s {
struct ewma_policy_circ_data_t {
circuitmux_policy_circ_data_t base_;
/**

View File

@ -688,7 +688,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
case CIRCPAD_DIST_UNIFORM:
{
// param2 is upper bound, param1 is lower
const struct uniform my_uniform = {
const struct uniform_t my_uniform = {
.base = UNIFORM(my_uniform),
.a = dist.param1,
.b = dist.param2,
@ -698,7 +698,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
case CIRCPAD_DIST_LOGISTIC:
{
/* param1 is Mu, param2 is sigma. */
const struct logistic my_logistic = {
const struct logistic_t my_logistic = {
.base = LOGISTIC(my_logistic),
.mu = dist.param1,
.sigma = dist.param2,
@ -708,7 +708,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
case CIRCPAD_DIST_LOG_LOGISTIC:
{
/* param1 is Alpha, param2 is 1.0/Beta */
const struct log_logistic my_log_logistic = {
const struct log_logistic_t my_log_logistic = {
.base = LOG_LOGISTIC(my_log_logistic),
.alpha = dist.param1,
.beta = dist.param2,
@ -718,7 +718,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
case CIRCPAD_DIST_GEOMETRIC:
{
/* param1 is 'p' (success probability) */
const struct geometric my_geometric = {
const struct geometric_t my_geometric = {
.base = GEOMETRIC(my_geometric),
.p = dist.param1,
};
@ -727,7 +727,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
case CIRCPAD_DIST_WEIBULL:
{
/* param1 is k, param2 is Lambda */
const struct weibull my_weibull = {
const struct weibull_t my_weibull = {
.base = WEIBULL(my_weibull),
.k = dist.param1,
.lambda = dist.param2,
@ -737,7 +737,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
case CIRCPAD_DIST_PARETO:
{
/* param1 is sigma, param2 is xi, no more params for mu so we use 0 */
const struct genpareto my_genpareto = {
const struct genpareto_t my_genpareto = {
.base = GENPARETO(my_genpareto),
.mu = 0,
.sigma = dist.param1,

View File

@ -175,7 +175,7 @@ typedef struct {
} network_liveness_t;
/** Structure for circuit build times history */
struct circuit_build_times_s {
struct circuit_build_times_t {
/** The circular array of recorded build times in milliseconds */
build_time_t circuit_build_times[CBT_NCIRCUITS_TO_OBSERVE];
/** Current index in the circuit_build_times circular array */

View File

@ -26,7 +26,7 @@ struct destroy_cell_t {
/** A queue of destroy cells on a channel. */
struct destroy_cell_queue_t {
/** Linked list of packed_cell_t */
TOR_SIMPLEQ_HEAD(dcell_simpleq, destroy_cell_t) head;
TOR_SIMPLEQ_HEAD(dcell_simpleq_t, destroy_cell_t) head;
int n; /**< The number of cells in the queue. */
};

View File

@ -609,21 +609,21 @@ typedef uint32_t circid_t;
/** Identifies a stream on a circuit */
typedef uint16_t streamid_t;
/* channel_t typedef; struct channel_s is in channel.h */
/* channel_t typedef; struct channel_t is in channel.h */
typedef struct channel_s channel_t;
typedef struct channel_t channel_t;
/* channel_listener_t typedef; struct channel_listener_s is in channel.h */
/* channel_listener_t typedef; struct channel_listener_t is in channel.h */
typedef struct channel_listener_s channel_listener_t;
typedef struct channel_listener_t channel_listener_t;
/* TLS channel stuff */
typedef struct channel_tls_s channel_tls_t;
typedef struct channel_tls_t channel_tls_t;
/* circuitmux_t typedef; struct circuitmux_s is in circuitmux.h */
/* circuitmux_t typedef; struct circuitmux_t is in circuitmux.h */
typedef struct circuitmux_s circuitmux_t;
typedef struct circuitmux_t circuitmux_t;
typedef struct cell_t cell_t;
typedef struct var_cell_t var_cell_t;
@ -1013,7 +1013,7 @@ typedef struct or_state_t or_state_t;
#define BW_MIN_WEIGHT_SCALE 1
#define BW_MAX_WEIGHT_SCALE INT32_MAX
typedef struct circuit_build_times_s circuit_build_times_t;
typedef struct circuit_build_times_t circuit_build_times_t;
/********************************* config.c ***************************/

View File

@ -27,7 +27,7 @@ struct or_circuit_t {
/** Pointer to a workqueue entry, if this circuit has given an onionskin to
* a cpuworker and is waiting for a response. Used to decide whether it is
* safe to free a circuit or if it is still in use by a cpuworker. */
struct workqueue_entry_s *workqueue_entry;
struct workqueue_entry_t *workqueue_entry;
/** The circuit_id used in the previous (backward) hop of this circuit. */
circid_t p_circ_id;

View File

@ -107,7 +107,7 @@ handle_relay_cell_command(cell_t *cell, circuit_t *circ,
STATIC int connected_cell_parse(const relay_header_t *rh, const cell_t *cell,
tor_addr_t *addr_out, int *ttl_out);
/** An address-and-ttl tuple as yielded by resolved_cell_parse */
typedef struct address_ttl_s {
typedef struct address_ttl_t {
tor_addr_t addr;
char *hostname;
int ttl;

View File

@ -12,7 +12,7 @@
#ifndef RELAY_CRYPTO_ST_H
#define RELAY_CRYPTO_ST_H
#define crypto_cipher_t aes_cnt_cipher
#define crypto_cipher_t aes_cnt_cipher_t
struct crypto_cipher_t;
struct crypto_digest_t;

View File

@ -40,7 +40,7 @@ typedef enum {
* doesn't create any state for itself, thus it has nothing to free when Tor
* is shutting down), then set that function pointer to NULL.
*/
typedef struct scheduler_s {
typedef struct scheduler_t {
/* Scheduler type. This is used for logging when the scheduler is switched
* during runtime. */
scheduler_types_t type;
@ -173,8 +173,8 @@ void scheduler_touch_channel(channel_t *chan);
/* Socket table entry which holds information of a channel's socket and kernel
* TCP information. Only used by KIST. */
typedef struct socket_table_ent_s {
HT_ENTRY(socket_table_ent_s) node;
typedef struct socket_table_ent_t {
HT_ENTRY(socket_table_ent_t) node;
const channel_t *chan;
/* Amount written this scheduling run */
uint64_t written;
@ -187,7 +187,7 @@ typedef struct socket_table_ent_s {
uint32_t notsent;
} socket_table_ent_t;
typedef HT_HEAD(outbuf_table_s, outbuf_table_ent_s) outbuf_table_t;
typedef HT_HEAD(outbuf_table_s, outbuf_table_ent_t) outbuf_table_t;
MOCK_DECL(int, channel_should_write_to_kernel,
(outbuf_table_t *table, channel_t *chan));

View File

@ -51,13 +51,13 @@ socket_table_ent_eq(const socket_table_ent_t *a, const socket_table_ent_t *b)
return a->chan == b->chan;
}
typedef HT_HEAD(socket_table_s, socket_table_ent_s) socket_table_t;
typedef HT_HEAD(socket_table_s, socket_table_ent_t) socket_table_t;
static socket_table_t socket_table = HT_INITIALIZER();
HT_PROTOTYPE(socket_table_s, socket_table_ent_s, node, socket_table_ent_hash,
HT_PROTOTYPE(socket_table_s, socket_table_ent_t, node, socket_table_ent_hash,
socket_table_ent_eq)
HT_GENERATE2(socket_table_s, socket_table_ent_s, node, socket_table_ent_hash,
HT_GENERATE2(socket_table_s, socket_table_ent_t, node, socket_table_ent_hash,
socket_table_ent_eq, 0.6, tor_reallocarray, tor_free_)
/* outbuf_table hash table stuff. The outbuf_table keeps track of which
@ -65,8 +65,8 @@ HT_GENERATE2(socket_table_s, socket_table_ent_s, node, socket_table_ent_hash,
* a write from outbuf to kernel periodically during a run and at the end of a
* run. */
typedef struct outbuf_table_ent_s {
HT_ENTRY(outbuf_table_ent_s) node;
typedef struct outbuf_table_ent_t {
HT_ENTRY(outbuf_table_ent_t) node;
channel_t *chan;
} outbuf_table_ent_t;
@ -82,9 +82,9 @@ outbuf_table_ent_eq(const outbuf_table_ent_t *a, const outbuf_table_ent_t *b)
return a->chan->global_identifier == b->chan->global_identifier;
}
HT_PROTOTYPE(outbuf_table_s, outbuf_table_ent_s, node, outbuf_table_ent_hash,
HT_PROTOTYPE(outbuf_table_s, outbuf_table_ent_t, node, outbuf_table_ent_hash,
outbuf_table_ent_eq)
HT_GENERATE2(outbuf_table_s, outbuf_table_ent_s, node, outbuf_table_ent_hash,
HT_GENERATE2(outbuf_table_s, outbuf_table_ent_t, node, outbuf_table_ent_hash,
outbuf_table_ent_eq, 0.6, tor_reallocarray, tor_free_)
/*****************************************************************************

View File

@ -89,10 +89,10 @@ typedef uint64_t timeout_t;
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef TIMEOUT_CB_OVERRIDE
struct timeout_cb {
struct timeout_cb_t {
void (*fn)(void);
void *arg;
}; /* struct timeout_cb */
}; /* struct timeout_cb_t */
#endif
/*
@ -125,7 +125,7 @@ struct timeout {
/* entry member for struct timeout_list lists */
#ifndef TIMEOUT_DISABLE_CALLBACKS
struct timeout_cb callback;
struct timeout_cb_t callback;
/* optional callback information */
#endif

View File

@ -15,7 +15,7 @@
#include "lib/container/handles.h"
/* Forward declare for guard_selection_t; entrynodes.c has the real struct */
typedef struct guard_selection_s guard_selection_t;
typedef struct guard_selection_t guard_selection_t;
/* Forward declare for entry_guard_t; the real declaration is private. */
typedef struct entry_guard_t entry_guard_t;
@ -210,7 +210,7 @@ typedef enum guard_selection_type_t {
* See the module documentation for entrynodes.c for more information
* about guard selection algorithms.
*/
struct guard_selection_s {
struct guard_selection_t {
/**
* The name for this guard-selection object. (Must not contain spaces).
*/

View File

@ -317,7 +317,7 @@ control_per_second_events(void)
/** Represents an event that's queued to be sent to one or more
* controllers. */
typedef struct queued_event_s {
typedef struct queued_event_t {
uint16_t event;
char *msg;
} queued_event_t;
@ -1211,7 +1211,7 @@ control_event_circuit_cell_stats(void)
static int next_measurement_idx = 0;
/* number of entries set in n_measurements */
static int n_measurements = 0;
static struct cached_bw_event_s {
static struct cached_bw_event_t {
uint32_t n_read;
uint32_t n_written;
} cached_bw_events[N_BW_EVENTS_TO_CACHE];
@ -1250,7 +1250,7 @@ get_bw_samples(void)
for (i = 0; i < n_measurements; ++i) {
tor_assert(0 <= idx && idx < N_BW_EVENTS_TO_CACHE);
const struct cached_bw_event_s *bwe = &cached_bw_events[idx];
const struct cached_bw_event_t *bwe = &cached_bw_events[idx];
smartlist_add_asprintf(elements, "%u,%u",
(unsigned)bwe->n_read,

View File

@ -56,7 +56,7 @@ dirserv_get_last_n_measured_bws(void)
}
/** Measured bandwidth cache entry */
typedef struct mbw_cache_entry_s {
typedef struct mbw_cache_entry_t {
long mbw_kb;
time_t as_of;
} mbw_cache_entry_t;

View File

@ -32,8 +32,8 @@ static void dircollator_collate_by_ed25519(dircollator_t *dc);
/** Hashtable entry mapping a pair of digests (actually an ed25519 key and an
* RSA SHA1 digest) to an array of vote_routerstatus_t. */
typedef struct ddmap_entry_s {
HT_ENTRY(ddmap_entry_s) node;
typedef struct ddmap_entry_t {
HT_ENTRY(ddmap_entry_t) node;
/** A SHA1-RSA1024 identity digest and Ed25519 identity key,
* concatenated. (If there is no ed25519 identity key, there is no
* entry in this table.) */
@ -89,9 +89,9 @@ ddmap_entry_set_digests(ddmap_entry_t *ent,
memcpy(ent->d + DIGEST_LEN, ed25519, DIGEST256_LEN);
}
HT_PROTOTYPE(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash,
HT_PROTOTYPE(double_digest_map, ddmap_entry_t, node, ddmap_entry_hash,
ddmap_entry_eq)
HT_GENERATE2(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash,
HT_GENERATE2(double_digest_map, ddmap_entry_t, node, ddmap_entry_hash,
ddmap_entry_eq, 0.6, tor_reallocarray, tor_free_)
/** Helper: add a single vote_routerstatus_t <b>vrs</b> to the collator

View File

@ -15,7 +15,7 @@
#include "lib/testsupport/testsupport.h"
#include "core/or/or.h"
typedef struct dircollator_s dircollator_t;
typedef struct dircollator_t dircollator_t;
dircollator_t *dircollator_new(int n_votes, int n_authorities);
void dircollator_free_(dircollator_t *obj);
@ -30,11 +30,11 @@ vote_routerstatus_t **dircollator_get_votes_for_router(dircollator_t *dc,
int idx);
#ifdef DIRCOLLATE_PRIVATE
struct ddmap_entry_s;
typedef HT_HEAD(double_digest_map, ddmap_entry_s) double_digest_map_t;
struct ddmap_entry_t;
typedef HT_HEAD(double_digest_map, ddmap_entry_t) double_digest_map_t;
/** A dircollator keeps track of all the routerstatus entries in a
* set of networkstatus votes, and matches them by an appropriate rule. */
struct dircollator_s {
struct dircollator_t {
/** True iff we have run the collation algorithm. */
int is_collated;
/** The total number of votes that we received. */

View File

@ -138,7 +138,7 @@ consensus_cache_may_overallocate(consensus_cache_t *cache)
*/
int
consensus_cache_register_with_sandbox(consensus_cache_t *cache,
struct sandbox_cfg_elem **cfg)
struct sandbox_cfg_elem_t **cfg)
{
#ifdef MUST_UNMAP_TO_UNLINK
/* Our Linux sandbox doesn't support huge file lists like the one that would

View File

@ -23,10 +23,10 @@ consensus_cache_t *consensus_cache_open(const char *subdir, int max_entries);
void consensus_cache_free_(consensus_cache_t *cache);
#define consensus_cache_free(cache) \
FREE_AND_NULL(consensus_cache_t, consensus_cache_free_, (cache))
struct sandbox_cfg_elem;
struct sandbox_cfg_elem_t;
int consensus_cache_may_overallocate(consensus_cache_t *cache);
int consensus_cache_register_with_sandbox(consensus_cache_t *cache,
struct sandbox_cfg_elem **cfg);
struct sandbox_cfg_elem_t **cfg);
void consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff);
void consensus_cache_delete_pending(consensus_cache_t *cache,
int force);

View File

@ -844,7 +844,7 @@ consdiffmgr_configure(const consdiff_cfg_t *cfg)
* operations that the consensus diff manager will need.
*/
int
consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem **cfg)
consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem_t **cfg)
{
return consensus_cache_register_with_sandbox(cdm_cache_get(), cfg);
}

View File

@ -60,8 +60,8 @@ void consdiffmgr_rescan(void);
int consdiffmgr_cleanup(void);
void consdiffmgr_enable_background_compression(void);
void consdiffmgr_configure(const consdiff_cfg_t *cfg);
struct sandbox_cfg_elem;
int consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem **cfg);
struct sandbox_cfg_elem_t;
int consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem_t **cfg);
void consdiffmgr_free_all(void);
int consdiffmgr_validate(void);

View File

@ -334,7 +334,7 @@ typedef struct get_handler_args_t {
* an arguments structure, and must return 0 on success or -1 if we should
* close the connection.
**/
typedef struct url_table_ent_s {
typedef struct url_table_ent_t {
const char *string;
int is_prefix;
int (*handler)(dir_connection_t *conn, const get_handler_args_t *args);

View File

@ -22,14 +22,14 @@
/* Define fp_pair_map_t structures */
struct fp_pair_map_entry_s {
HT_ENTRY(fp_pair_map_entry_s) node;
struct fp_pair_map_entry_t {
HT_ENTRY(fp_pair_map_entry_t) node;
void *val;
fp_pair_t key;
};
struct fp_pair_map_s {
HT_HEAD(fp_pair_map_impl, fp_pair_map_entry_s) head;
struct fp_pair_map_t {
HT_HEAD(fp_pair_map_impl, fp_pair_map_entry_t) head;
};
/*
@ -56,9 +56,9 @@ fp_pair_map_entry_hash(const fp_pair_map_entry_t *a)
* Hash table functions for fp_pair_map_t
*/
HT_PROTOTYPE(fp_pair_map_impl, fp_pair_map_entry_s, node,
HT_PROTOTYPE(fp_pair_map_impl, fp_pair_map_entry_t, node,
fp_pair_map_entry_hash, fp_pair_map_entries_eq)
HT_GENERATE2(fp_pair_map_impl, fp_pair_map_entry_s, node,
HT_GENERATE2(fp_pair_map_impl, fp_pair_map_entry_t, node,
fp_pair_map_entry_hash, fp_pair_map_entries_eq,
0.6, tor_reallocarray_, tor_free_)

View File

@ -19,8 +19,8 @@ typedef struct {
* Declare fp_pair_map_t functions and structs
*/
typedef struct fp_pair_map_entry_s fp_pair_map_entry_t;
typedef struct fp_pair_map_s fp_pair_map_t;
typedef struct fp_pair_map_entry_t fp_pair_map_entry_t;
typedef struct fp_pair_map_t fp_pair_map_t;
typedef fp_pair_map_entry_t *fp_pair_map_iter_t;
fp_pair_map_t * fp_pair_map_new(void);

View File

@ -194,8 +194,8 @@
/** Macro: yield a pointer to the field at position <b>off</b> within the
* structure <b>st</b>. Example:
* <pre>
* struct a { int foo; int bar; } x;
* ptrdiff_t bar_offset = offsetof(struct a, bar);
* struct a_t { int foo; int bar; } x;
* ptrdiff_t bar_offset = offsetof(struct a_t, bar);
* int *bar_p = STRUCT_VAR_P(&x, bar_offset);
* *bar_p = 3;
* </pre>
@ -205,10 +205,10 @@
/** Macro: yield a pointer to an enclosing structure given a pointer to
* a substructure at offset <b>off</b>. Example:
* <pre>
* struct base { ... };
* struct subtype { int x; struct base b; } x;
* struct base *bp = &x.base;
* struct *sp = SUBTYPE_P(bp, struct subtype, b);
* struct base_t { ... };
* struct subtype_t { int x; struct base_t b; } x;
* struct base_t *bp = &x.base;
* struct *sp = SUBTYPE_P(bp, struct subtype_t, b);
* </pre>
*/
#define SUBTYPE_P(p, subtype, basemember) \

View File

@ -16,33 +16,33 @@
* To enable a type to have handles, add a HANDLE_ENTRY() field in its
* definition, as in:
*
* struct walrus {
* HANDLE_ENTRY(wlr, walrus);
* struct walrus_t {
* HANDLE_ENTRY(wlr, walrus_t);
* // ...
* };
*
* And invoke HANDLE_DECL(wlr, walrus, [static]) to declare the handle
* And invoke HANDLE_DECL(wlr, walrus_t, [static]) to declare the handle
* manipulation functions (typically in a header):
*
* // opaque handle to walrus.
* typedef struct wlr_handle_t wlr_handle_t;
*
* // make a new handle
* struct wlr_handle_t *wlr_handle_new(struct walrus *);
* struct wlr_handle_t *wlr_handle_new(struct walrus_t *);
*
* // release a handle
* void wlr_handle_free(wlr_handle_t *);
*
* // return the pointed-to walrus, or NULL.
* struct walrus *wlr_handle_get(wlr_handle_t *).
* struct walrus_t *wlr_handle_get(wlr_handle_t *).
*
* // call this function when you're about to free the walrus;
* // it invalidates all handles. (IF YOU DON'T, YOU WILL HAVE
* // DANGLING REFERENCES)
* void wlr_handles_clear(struct walrus *);
* void wlr_handles_clear(struct walrus_t *);
*
* Finally, use HANDLE_IMPL() to define the above functions in some
* appropriate C file: HANDLE_IMPL(wlr, walrus, [static])
* appropriate C file: HANDLE_IMPL(wlr, walrus_t, [static])
*
**/
@ -57,12 +57,13 @@
#define HANDLE_ENTRY(name, structname) \
struct name ## _handle_head_t *handle_head
#define HANDLE_DECL(name, structname, linkage) \
#define HANDLE_DECL(name, structname_t, linkage) \
typedef struct name ## _handle_t name ## _handle_t; \
linkage name ## _handle_t *name ## _handle_new(struct structname *object); \
linkage name ## _handle_t *name ## _handle_new( \
struct structname_t *object); \
linkage void name ## _handle_free_(name ## _handle_t *); \
linkage struct structname *name ## _handle_get(name ## _handle_t *); \
linkage void name ## _handles_clear(struct structname *object);
linkage struct structname_t *name ## _handle_get(name ## _handle_t *); \
linkage void name ## _handles_clear(struct structname_t *object);
/*
* Implementation notes: there are lots of possible implementations here. We

View File

@ -17,22 +17,23 @@
#include "ext/siphash.h"
#define DECLARE_MAP_FNS(maptype, keytype, prefix) \
typedef struct maptype maptype; \
#define DECLARE_MAP_FNS(mapname_t, keytype, prefix) \
typedef struct mapname_t mapname_t; \
typedef struct prefix##entry_t *prefix##iter_t; \
MOCK_DECL(maptype*, prefix##new, (void)); \
void* prefix##set(maptype *map, keytype key, void *val); \
void* prefix##get(const maptype *map, keytype key); \
void* prefix##remove(maptype *map, keytype key); \
MOCK_DECL(void, prefix##free_, (maptype *map, void (*free_val)(void*))); \
int prefix##isempty(const maptype *map); \
int prefix##size(const maptype *map); \
prefix##iter_t *prefix##iter_init(maptype *map); \
prefix##iter_t *prefix##iter_next(maptype *map, prefix##iter_t *iter); \
prefix##iter_t *prefix##iter_next_rmv(maptype *map, prefix##iter_t *iter); \
MOCK_DECL(mapname_t*, prefix##new, (void)); \
void* prefix##set(mapname_t *map, keytype key, void *val); \
void* prefix##get(const mapname_t *map, keytype key); \
void* prefix##remove(mapname_t *map, keytype key); \
MOCK_DECL(void, prefix##free_, (mapname_t *map, void (*free_val)(void*))); \
int prefix##isempty(const mapname_t *map); \
int prefix##size(const mapname_t *map); \
prefix##iter_t *prefix##iter_init(mapname_t *map); \
prefix##iter_t *prefix##iter_next(mapname_t *map, prefix##iter_t *iter); \
prefix##iter_t *prefix##iter_next_rmv(mapname_t *map, \
prefix##iter_t *iter); \
void prefix##iter_get(prefix##iter_t *iter, keytype *keyp, void **valp); \
int prefix##iter_done(prefix##iter_t *iter); \
void prefix##assert_ok(const maptype *map)
void prefix##assert_ok(const mapname_t *map)
/* Map from const char * to void *. Implemented with a hash table. */
DECLARE_MAP_FNS(strmap_t, const char *, strmap_);
@ -42,9 +43,9 @@ DECLARE_MAP_FNS(digestmap_t, const char *, digestmap_);
* table. */
DECLARE_MAP_FNS(digest256map_t, const uint8_t *, digest256map_);
#define MAP_FREE_AND_NULL(maptype, map, fn) \
#define MAP_FREE_AND_NULL(mapname_t, map, fn) \
do { \
maptype ## _free_((map), (fn)); \
mapname_t ## _free_((map), (fn)); \
(map) = NULL; \
} while (0)
@ -183,62 +184,62 @@ void* strmap_set_lc(strmap_t *map, const char *key, void *val);
void* strmap_get_lc(const strmap_t *map, const char *key);
void* strmap_remove_lc(strmap_t *map, const char *key);
#define DECLARE_TYPED_DIGESTMAP_FNS(prefix, maptype, valtype) \
typedef struct maptype maptype; \
#define DECLARE_TYPED_DIGESTMAP_FNS(prefix, mapname_t, valtype) \
typedef struct mapname_t mapname_t; \
typedef struct prefix##iter_t *prefix##iter_t; \
ATTR_UNUSED static inline maptype* \
ATTR_UNUSED static inline mapname_t* \
prefix##new(void) \
{ \
return (maptype*)digestmap_new(); \
return (mapname_t*)digestmap_new(); \
} \
ATTR_UNUSED static inline digestmap_t* \
prefix##to_digestmap(maptype *map) \
prefix##to_digestmap(mapname_t *map) \
{ \
return (digestmap_t*)map; \
} \
ATTR_UNUSED static inline valtype* \
prefix##get(maptype *map, const char *key) \
prefix##get(mapname_t *map, const char *key) \
{ \
return (valtype*)digestmap_get((digestmap_t*)map, key); \
} \
ATTR_UNUSED static inline valtype* \
prefix##set(maptype *map, const char *key, valtype *val) \
prefix##set(mapname_t *map, const char *key, valtype *val) \
{ \
return (valtype*)digestmap_set((digestmap_t*)map, key, val); \
} \
ATTR_UNUSED static inline valtype* \
prefix##remove(maptype *map, const char *key) \
prefix##remove(mapname_t *map, const char *key) \
{ \
return (valtype*)digestmap_remove((digestmap_t*)map, key); \
} \
ATTR_UNUSED static inline void \
prefix##f##ree_(maptype *map, void (*free_val)(void*)) \
prefix##f##ree_(mapname_t *map, void (*free_val)(void*)) \
{ \
digestmap_free_((digestmap_t*)map, free_val); \
} \
ATTR_UNUSED static inline int \
prefix##isempty(maptype *map) \
prefix##isempty(mapname_t *map) \
{ \
return digestmap_isempty((digestmap_t*)map); \
} \
ATTR_UNUSED static inline int \
prefix##size(maptype *map) \
prefix##size(mapname_t *map) \
{ \
return digestmap_size((digestmap_t*)map); \
} \
ATTR_UNUSED static inline \
prefix##iter_t *prefix##iter_init(maptype *map) \
prefix##iter_t *prefix##iter_init(mapname_t *map) \
{ \
return (prefix##iter_t*) digestmap_iter_init((digestmap_t*)map); \
} \
ATTR_UNUSED static inline \
prefix##iter_t *prefix##iter_next(maptype *map, prefix##iter_t *iter) \
prefix##iter_t *prefix##iter_next(mapname_t *map, prefix##iter_t *iter) \
{ \
return (prefix##iter_t*) digestmap_iter_next( \
(digestmap_t*)map, (digestmap_iter_t*)iter); \
} \
ATTR_UNUSED static inline prefix##iter_t* \
prefix##iter_next_rmv(maptype *map, prefix##iter_t *iter) \
prefix##iter_next_rmv(mapname_t *map, prefix##iter_t *iter) \
{ \
return (prefix##iter_t*) digestmap_iter_next_rmv( \
(digestmap_t*)map, (digestmap_iter_t*)iter); \

View File

@ -16,7 +16,7 @@
#include "lib/cc/torint.h"
#include "lib/malloc/malloc.h"
typedef struct aes_cnt_cipher aes_cnt_cipher_t;
typedef struct aes_cnt_cipher_t aes_cnt_cipher_t;
aes_cnt_cipher_t* aes_new_cipher(const uint8_t *key, const uint8_t *iv,
int key_bits);

View File

@ -154,7 +154,7 @@ evaluate_ctr_for_aes(void)
/* Interface to AES code, and counter implementation */
/** Implements an AES counter-mode cipher. */
struct aes_cnt_cipher {
struct aes_cnt_cipher_t {
/** This next element (however it's defined) is the AES key. */
union {
EVP_CIPHER_CTX evp;

View File

@ -25,7 +25,7 @@
/** Length of our symmetric cipher's keys of 256-bit. */
#define CIPHER256_KEY_LEN 32
typedef struct aes_cnt_cipher crypto_cipher_t;
typedef struct aes_cnt_cipher_t crypto_cipher_t;
/* environment setup */
crypto_cipher_t *crypto_cipher_new(const char *key);

View File

@ -42,10 +42,10 @@ void crypto_ope_free_(crypto_ope_t *ope);
uint64_t crypto_ope_encrypt(const crypto_ope_t *ope, int plaintext);
#ifdef CRYPTO_OPE_PRIVATE
struct aes_cnt_cipher;
STATIC struct aes_cnt_cipher *ope_get_cipher(const crypto_ope_t *ope,
struct aes_cnt_cipher_t;
STATIC struct aes_cnt_cipher_t *ope_get_cipher(const crypto_ope_t *ope,
uint32_t initial_idx);
STATIC uint64_t sum_values_from_cipher(struct aes_cnt_cipher *c, size_t n);
STATIC uint64_t sum_values_from_cipher(struct aes_cnt_cipher_t *c, size_t n);
#endif /* defined(CRYPTO_OPE_PRIVATE) */
#endif /* !defined(CRYPTO_OPE_H) */

View File

@ -102,16 +102,16 @@ struct crypto_fast_rng_t {
* crypto_strongest_rand().
*/
int16_t n_till_reseed;
/** How many bytes are remaining in cbuf.bytes? */
/** How many bytes are remaining in cbuf_t.bytes? */
uint16_t bytes_left;
#ifdef CHECK_PID
/** Which process owns this fast_rng? If this value is zero, we do not
* need to test the owner. */
pid_t owner;
#endif
struct cbuf {
struct cbuf_t {
/** The seed (key and IV) that we will use the next time that we refill
* cbuf. */
* cbuf_t. */
uint8_t seed[SEED_LEN];
/**
* Bytes that we are yielding to the user. The next byte to be
@ -122,9 +122,9 @@ struct crypto_fast_rng_t {
} buf;
};
/* alignof(uint8_t) should be 1, so there shouldn't be any padding in cbuf.
/* alignof(uint8_t) should be 1, so there shouldn't be any padding in cbuf_t.
*/
CTASSERT(sizeof(struct cbuf) == BUFLEN+SEED_LEN);
CTASSERT(sizeof(struct cbuf_t) == BUFLEN+SEED_LEN);
/* We're trying to fit all of the RNG state into a nice mmapable chunk.
*/
CTASSERT(sizeof(crypto_fast_rng_t) <= MAPLEN);

View File

@ -130,7 +130,7 @@ rescan_mainloop_cb(evutil_socket_t fd, short events, void *arg)
/** Initialize the Libevent library and set up the event base. */
void
tor_libevent_initialize(tor_libevent_cfg *torcfg)
tor_libevent_initialize(tor_libevent_cfg_t *torcfg)
{
tor_assert(the_event_base == NULL);
/* some paths below don't use torcfg, so avoid unused variable warnings */

View File

@ -61,15 +61,15 @@ void mainloop_event_free_(mainloop_event_t *event);
/** Defines a configuration for using libevent with Tor: passed as an argument
* to tor_libevent_initialize() to describe how we want to set up. */
typedef struct tor_libevent_cfg {
typedef struct tor_libevent_cfg_t {
/** How many CPUs should we use (not currently useful). */
int num_cpus;
/** How many milliseconds should we allow between updating bandwidth limits?
* (Not currently useful). */
int msec_per_tick;
} tor_libevent_cfg;
} tor_libevent_cfg_t;
void tor_libevent_initialize(tor_libevent_cfg *cfg);
void tor_libevent_initialize(tor_libevent_cfg_t *cfg);
bool tor_libevent_is_initialized(void);
MOCK_DECL(struct event_base *, tor_libevent_get_base, (void));
const char *tor_libevent_get_method(void);

View File

@ -48,7 +48,7 @@
#include <winsock2.h>
#endif
struct timeout_cb {
struct timeout_cb_t {
timer_cb_fn_t cb;
void *arg;
};
@ -70,7 +70,7 @@ struct timeout_cb {
/* We always know the global_timeouts object, so we don't need each timeout
* to keep a pointer to it. */
#define TIMEOUT_DISABLE_RELATIVE_ACCESS
/* We're providing our own struct timeout_cb. */
/* We're providing our own struct timeout_cb_t. */
#define TIMEOUT_CB_OVERRIDE
/* We're going to support timers that are pretty far out in advance. Making
* this big can be inefficient, but having a significant number of timers

View File

@ -44,13 +44,13 @@
#define WORKQUEUE_PRIORITY_LAST WQ_PRI_LOW
#define WORKQUEUE_N_PRIORITIES (((int) WORKQUEUE_PRIORITY_LAST)+1)
TOR_TAILQ_HEAD(work_tailq_t, workqueue_entry_s);
TOR_TAILQ_HEAD(work_tailq_t, workqueue_entry_t);
typedef struct work_tailq_t work_tailq_t;
struct threadpool_s {
struct threadpool_t {
/** An array of pointers to workerthread_t: one for each running worker
* thread. */
struct workerthread_s **threads;
struct workerthread_t **threads;
/** Condition variable that we wait on when we have no work, and which
* gets signaled when our queue becomes nonempty. */
@ -92,14 +92,14 @@ struct threadpool_s {
/** Number of bits needed to hold all legal values of workqueue_priority_t */
#define WORKQUEUE_PRIORITY_BITS 2
struct workqueue_entry_s {
struct workqueue_entry_t {
/** The next workqueue_entry_t that's pending on the same thread or
* reply queue. */
TOR_TAILQ_ENTRY(workqueue_entry_s) next_work;
TOR_TAILQ_ENTRY(workqueue_entry_t) next_work;
/** The threadpool to which this workqueue_entry_t was assigned. This field
* is set when the workqueue_entry_t is created, and won't be cleared until
* after it's handled in the main thread. */
struct threadpool_s *on_pool;
struct threadpool_t *on_pool;
/** True iff this entry is waiting for a worker to start processing it. */
uint8_t pending;
/** Priority of this entry. */
@ -112,22 +112,22 @@ struct workqueue_entry_s {
void *arg;
};
struct replyqueue_s {
struct replyqueue_t {
/** Mutex to protect the answers field */
tor_mutex_t lock;
/** Doubly-linked list of answers that the reply queue needs to handle. */
TOR_TAILQ_HEAD(, workqueue_entry_s) answers;
TOR_TAILQ_HEAD(, workqueue_entry_t) answers;
/** Mechanism to wake up the main thread when it is receiving answers. */
alert_sockets_t alert;
};
/** A worker thread represents a single thread in a thread pool. */
typedef struct workerthread_s {
typedef struct workerthread_t {
/** Which thread it this? In range 0..in_pool->n_threads-1 */
int index;
/** The pool this thread is a part of. */
struct threadpool_s *in_pool;
struct threadpool_t *in_pool;
/** User-supplied state field that we pass to the worker functions of each
* work item. */
void *state;

View File

@ -13,12 +13,12 @@
/** A replyqueue is used to tell the main thread about the outcome of
* work that we queued for the workers. */
typedef struct replyqueue_s replyqueue_t;
typedef struct replyqueue_t replyqueue_t;
/** A thread-pool manages starting threads and passing work to them. */
typedef struct threadpool_s threadpool_t;
typedef struct threadpool_t threadpool_t;
/** A workqueue entry represents a request that has been passed to a thread
* pool. */
typedef struct workqueue_entry_s workqueue_entry_t;
typedef struct workqueue_entry_t workqueue_entry_t;
/** Possible return value from a work function: */
typedef enum workqueue_reply_t {

View File

@ -15,7 +15,7 @@
typedef struct storage_dir_t storage_dir_t;
struct config_line_t;
struct sandbox_cfg_elem;
struct sandbox_cfg_elem_t;
struct tor_mmap_t;
struct smartlist_t;
@ -25,7 +25,7 @@ void storage_dir_free_(storage_dir_t *d);
FREE_AND_NULL(storage_dir_t, storage_dir_free_, (d))
int storage_dir_register_with_sandbox(storage_dir_t *d,
struct sandbox_cfg_elem **cfg);
struct sandbox_cfg_elem_t **cfg);
const struct smartlist_t *storage_dir_list(storage_dir_t *d);
uint64_t storage_dir_get_usage(storage_dir_t *d);
struct tor_mmap_t *storage_dir_map(storage_dir_t *d, const char *fname);

View File

@ -52,14 +52,15 @@
#include <math.h>
#include <stddef.h>
#ifndef COCCI
/** Declare a function that downcasts from a generic dist struct to the actual
* subtype probablity distribution it represents. */
#define DECLARE_PROB_DISTR_DOWNCAST_FN(name) \
static inline \
const struct name * \
dist_to_const_##name(const struct dist *obj) { \
const struct name##_t * \
dist_to_const_##name(const struct dist_t *obj) { \
tor_assert(obj->ops == &name##_ops); \
return SUBTYPE_P(obj, struct name, base); \
return SUBTYPE_P(obj, struct name ## _t, base); \
}
DECLARE_PROB_DISTR_DOWNCAST_FN(uniform)
DECLARE_PROB_DISTR_DOWNCAST_FN(geometric)
@ -67,6 +68,7 @@ DECLARE_PROB_DISTR_DOWNCAST_FN(logistic)
DECLARE_PROB_DISTR_DOWNCAST_FN(log_logistic)
DECLARE_PROB_DISTR_DOWNCAST_FN(genpareto)
DECLARE_PROB_DISTR_DOWNCAST_FN(weibull)
#endif
/**
* Count number of one bits in 32-bit word.
@ -1324,42 +1326,42 @@ sample_geometric(uint32_t s, double p0, double p)
/** Returns the name of the distribution in <b>dist</b>. */
const char *
dist_name(const struct dist *dist)
dist_name(const struct dist_t *dist)
{
return dist->ops->name;
}
/* Sample a value from <b>dist</b> and return it. */
double
dist_sample(const struct dist *dist)
dist_sample(const struct dist_t *dist)
{
return dist->ops->sample(dist);
}
/** Compute the CDF of <b>dist</b> at <b>x</b>. */
double
dist_cdf(const struct dist *dist, double x)
dist_cdf(const struct dist_t *dist, double x)
{
return dist->ops->cdf(dist, x);
}
/** Compute the SF (Survival function) of <b>dist</b> at <b>x</b>. */
double
dist_sf(const struct dist *dist, double x)
dist_sf(const struct dist_t *dist, double x)
{
return dist->ops->sf(dist, x);
}
/** Compute the iCDF (Inverse CDF) of <b>dist</b> at <b>x</b>. */
double
dist_icdf(const struct dist *dist, double p)
dist_icdf(const struct dist_t *dist, double p)
{
return dist->ops->icdf(dist, p);
}
/** Compute the iSF (Inverse Survival function) of <b>dist</b> at <b>x</b>. */
double
dist_isf(const struct dist *dist, double p)
dist_isf(const struct dist_t *dist, double p)
{
return dist->ops->isf(dist, p);
}
@ -1367,18 +1369,18 @@ dist_isf(const struct dist *dist, double p)
/** Functions for uniform distribution */
static double
uniform_sample(const struct dist *dist)
uniform_sample(const struct dist_t *dist)
{
const struct uniform *U = dist_to_const_uniform(dist);
const struct uniform_t *U = dist_to_const_uniform(dist);
double p0 = random_uniform_01();
return sample_uniform_interval(p0, U->a, U->b);
}
static double
uniform_cdf(const struct dist *dist, double x)
uniform_cdf(const struct dist_t *dist, double x)
{
const struct uniform *U = dist_to_const_uniform(dist);
const struct uniform_t *U = dist_to_const_uniform(dist);
if (x < U->a)
return 0;
else if (x < U->b)
@ -1388,9 +1390,9 @@ uniform_cdf(const struct dist *dist, double x)
}
static double
uniform_sf(const struct dist *dist, double x)
uniform_sf(const struct dist_t *dist, double x)
{
const struct uniform *U = dist_to_const_uniform(dist);
const struct uniform_t *U = dist_to_const_uniform(dist);
if (x > U->b)
return 0;
@ -1401,24 +1403,24 @@ uniform_sf(const struct dist *dist, double x)
}
static double
uniform_icdf(const struct dist *dist, double p)
uniform_icdf(const struct dist_t *dist, double p)
{
const struct uniform *U = dist_to_const_uniform(dist);
const struct uniform_t *U = dist_to_const_uniform(dist);
double w = U->b - U->a;
return (p < 0.5 ? (U->a + w*p) : (U->b - w*(1 - p)));
}
static double
uniform_isf(const struct dist *dist, double p)
uniform_isf(const struct dist_t *dist, double p)
{
const struct uniform *U = dist_to_const_uniform(dist);
const struct uniform_t *U = dist_to_const_uniform(dist);
double w = U->b - U->a;
return (p < 0.5 ? (U->b - w*p) : (U->a + w*(1 - p)));
}
const struct dist_ops uniform_ops = {
const struct dist_ops_t uniform_ops = {
.name = "uniform",
.sample = uniform_sample,
.cdf = uniform_cdf,
@ -1434,9 +1436,9 @@ const struct dist_ops uniform_ops = {
/** Functions for logistic distribution: */
static double
logistic_sample(const struct dist *dist)
logistic_sample(const struct dist_t *dist)
{
const struct logistic *L = dist_to_const_logistic(dist);
const struct logistic_t *L = dist_to_const_logistic(dist);
uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
double t = random_uniform_01();
double p0 = random_uniform_01();
@ -1445,34 +1447,34 @@ logistic_sample(const struct dist *dist)
}
static double
logistic_cdf(const struct dist *dist, double x)
logistic_cdf(const struct dist_t *dist, double x)
{
const struct logistic *L = dist_to_const_logistic(dist);
const struct logistic_t *L = dist_to_const_logistic(dist);
return cdf_logistic(x, L->mu, L->sigma);
}
static double
logistic_sf(const struct dist *dist, double x)
logistic_sf(const struct dist_t *dist, double x)
{
const struct logistic *L = dist_to_const_logistic(dist);
const struct logistic_t *L = dist_to_const_logistic(dist);
return sf_logistic(x, L->mu, L->sigma);
}
static double
logistic_icdf(const struct dist *dist, double p)
logistic_icdf(const struct dist_t *dist, double p)
{
const struct logistic *L = dist_to_const_logistic(dist);
const struct logistic_t *L = dist_to_const_logistic(dist);
return icdf_logistic(p, L->mu, L->sigma);
}
static double
logistic_isf(const struct dist *dist, double p)
logistic_isf(const struct dist_t *dist, double p)
{
const struct logistic *L = dist_to_const_logistic(dist);
const struct logistic_t *L = dist_to_const_logistic(dist);
return isf_logistic(p, L->mu, L->sigma);
}
const struct dist_ops logistic_ops = {
const struct dist_ops_t logistic_ops = {
.name = "logistic",
.sample = logistic_sample,
.cdf = logistic_cdf,
@ -1484,9 +1486,9 @@ const struct dist_ops logistic_ops = {
/** Functions for log-logistic distribution: */
static double
log_logistic_sample(const struct dist *dist)
log_logistic_sample(const struct dist_t *dist)
{
const struct log_logistic *LL = dist_to_const_log_logistic(dist);
const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
double p0 = random_uniform_01();
@ -1494,34 +1496,34 @@ log_logistic_sample(const struct dist *dist)
}
static double
log_logistic_cdf(const struct dist *dist, double x)
log_logistic_cdf(const struct dist_t *dist, double x)
{
const struct log_logistic *LL = dist_to_const_log_logistic(dist);
const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
return cdf_log_logistic(x, LL->alpha, LL->beta);
}
static double
log_logistic_sf(const struct dist *dist, double x)
log_logistic_sf(const struct dist_t *dist, double x)
{
const struct log_logistic *LL = dist_to_const_log_logistic(dist);
const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
return sf_log_logistic(x, LL->alpha, LL->beta);
}
static double
log_logistic_icdf(const struct dist *dist, double p)
log_logistic_icdf(const struct dist_t *dist, double p)
{
const struct log_logistic *LL = dist_to_const_log_logistic(dist);
const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
return icdf_log_logistic(p, LL->alpha, LL->beta);
}
static double
log_logistic_isf(const struct dist *dist, double p)
log_logistic_isf(const struct dist_t *dist, double p)
{
const struct log_logistic *LL = dist_to_const_log_logistic(dist);
const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
return isf_log_logistic(p, LL->alpha, LL->beta);
}
const struct dist_ops log_logistic_ops = {
const struct dist_ops_t log_logistic_ops = {
.name = "log logistic",
.sample = log_logistic_sample,
.cdf = log_logistic_cdf,
@ -1533,9 +1535,9 @@ const struct dist_ops log_logistic_ops = {
/** Functions for Weibull distribution */
static double
weibull_sample(const struct dist *dist)
weibull_sample(const struct dist_t *dist)
{
const struct weibull *W = dist_to_const_weibull(dist);
const struct weibull_t *W = dist_to_const_weibull(dist);
uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
double p0 = random_uniform_01();
@ -1543,34 +1545,34 @@ weibull_sample(const struct dist *dist)
}
static double
weibull_cdf(const struct dist *dist, double x)
weibull_cdf(const struct dist_t *dist, double x)
{
const struct weibull *W = dist_to_const_weibull(dist);
const struct weibull_t *W = dist_to_const_weibull(dist);
return cdf_weibull(x, W->lambda, W->k);
}
static double
weibull_sf(const struct dist *dist, double x)
weibull_sf(const struct dist_t *dist, double x)
{
const struct weibull *W = dist_to_const_weibull(dist);
const struct weibull_t *W = dist_to_const_weibull(dist);
return sf_weibull(x, W->lambda, W->k);
}
static double
weibull_icdf(const struct dist *dist, double p)
weibull_icdf(const struct dist_t *dist, double p)
{
const struct weibull *W = dist_to_const_weibull(dist);
const struct weibull_t *W = dist_to_const_weibull(dist);
return icdf_weibull(p, W->lambda, W->k);
}
static double
weibull_isf(const struct dist *dist, double p)
weibull_isf(const struct dist_t *dist, double p)
{
const struct weibull *W = dist_to_const_weibull(dist);
const struct weibull_t *W = dist_to_const_weibull(dist);
return isf_weibull(p, W->lambda, W->k);
}
const struct dist_ops weibull_ops = {
const struct dist_ops_t weibull_ops = {
.name = "Weibull",
.sample = weibull_sample,
.cdf = weibull_cdf,
@ -1582,9 +1584,9 @@ const struct dist_ops weibull_ops = {
/** Functions for generalized Pareto distributions */
static double
genpareto_sample(const struct dist *dist)
genpareto_sample(const struct dist_t *dist)
{
const struct genpareto *GP = dist_to_const_genpareto(dist);
const struct genpareto_t *GP = dist_to_const_genpareto(dist);
uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
double p0 = random_uniform_01();
@ -1592,34 +1594,34 @@ genpareto_sample(const struct dist *dist)
}
static double
genpareto_cdf(const struct dist *dist, double x)
genpareto_cdf(const struct dist_t *dist, double x)
{
const struct genpareto *GP = dist_to_const_genpareto(dist);
const struct genpareto_t *GP = dist_to_const_genpareto(dist);
return cdf_genpareto(x, GP->mu, GP->sigma, GP->xi);
}
static double
genpareto_sf(const struct dist *dist, double x)
genpareto_sf(const struct dist_t *dist, double x)
{
const struct genpareto *GP = dist_to_const_genpareto(dist);
const struct genpareto_t *GP = dist_to_const_genpareto(dist);
return sf_genpareto(x, GP->mu, GP->sigma, GP->xi);
}
static double
genpareto_icdf(const struct dist *dist, double p)
genpareto_icdf(const struct dist_t *dist, double p)
{
const struct genpareto *GP = dist_to_const_genpareto(dist);
const struct genpareto_t *GP = dist_to_const_genpareto(dist);
return icdf_genpareto(p, GP->mu, GP->sigma, GP->xi);
}
static double
genpareto_isf(const struct dist *dist, double p)
genpareto_isf(const struct dist_t *dist, double p)
{
const struct genpareto *GP = dist_to_const_genpareto(dist);
const struct genpareto_t *GP = dist_to_const_genpareto(dist);
return isf_genpareto(p, GP->mu, GP->sigma, GP->xi);
}
const struct dist_ops genpareto_ops = {
const struct dist_ops_t genpareto_ops = {
.name = "generalized Pareto",
.sample = genpareto_sample,
.cdf = genpareto_cdf,
@ -1631,9 +1633,9 @@ const struct dist_ops genpareto_ops = {
/** Functions for geometric distribution on number of trials before success */
static double
geometric_sample(const struct dist *dist)
geometric_sample(const struct dist_t *dist)
{
const struct geometric *G = dist_to_const_geometric(dist);
const struct geometric_t *G = dist_to_const_geometric(dist);
uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
double p0 = random_uniform_01();
@ -1641,9 +1643,9 @@ geometric_sample(const struct dist *dist)
}
static double
geometric_cdf(const struct dist *dist, double x)
geometric_cdf(const struct dist_t *dist, double x)
{
const struct geometric *G = dist_to_const_geometric(dist);
const struct geometric_t *G = dist_to_const_geometric(dist);
if (x < 1)
return 0;
@ -1652,9 +1654,9 @@ geometric_cdf(const struct dist *dist, double x)
}
static double
geometric_sf(const struct dist *dist, double x)
geometric_sf(const struct dist_t *dist, double x)
{
const struct geometric *G = dist_to_const_geometric(dist);
const struct geometric_t *G = dist_to_const_geometric(dist);
if (x < 1)
return 0;
@ -1663,22 +1665,22 @@ geometric_sf(const struct dist *dist, double x)
}
static double
geometric_icdf(const struct dist *dist, double p)
geometric_icdf(const struct dist_t *dist, double p)
{
const struct geometric *G = dist_to_const_geometric(dist);
const struct geometric_t *G = dist_to_const_geometric(dist);
return log1p(-p)/log1p(-G->p);
}
static double
geometric_isf(const struct dist *dist, double p)
geometric_isf(const struct dist_t *dist, double p)
{
const struct geometric *G = dist_to_const_geometric(dist);
const struct geometric_t *G = dist_to_const_geometric(dist);
return log(p)/log1p(-G->p);
}
const struct dist_ops geometric_ops = {
const struct dist_ops_t geometric_ops = {
.name = "geometric (1-based)",
.sample = geometric_sample,
.cdf = geometric_cdf,

View File

@ -15,13 +15,13 @@
/**
* Container for distribution parameters for sampling, CDF, &c.
*/
struct dist {
const struct dist_ops *ops;
struct dist_t {
const struct dist_ops_t *ops;
};
/**
* Untyped initializer element for struct dist using the specified
* struct dist_ops pointer. Don't actually use this directly -- use
* Untyped initializer element for struct dist_t using the specified
* struct dist_ops_t pointer. Don't actually use this directly -- use
* the type-specific macro built out of DIST_BASE_TYPED below -- but if
* you did use this directly, it would be something like:
*
@ -61,13 +61,13 @@ struct dist {
#endif /* defined(__COVERITY__) */
/**
* Typed initializer element for struct dist using the specified struct
* dist_ops pointer. Don't actually use this directly -- use a
* Typed initializer element for struct dist_t using the specified struct
* dist_ops_t pointer. Don't actually use this directly -- use a
* type-specific macro built out of it -- but if you did use this
* directly, it would be something like:
*
* struct weibull mydist = {
* DIST_BASE_TYPED(&weibull_ops, mydist, struct weibull),
* DIST_BASE_TYPED(&weibull_ops, mydist, struct weibull_t),
* .lambda = ...,
* .k = ...,
* };
@ -75,20 +75,20 @@ struct dist {
* If you want to define a distribution type, define a canonical set of
* operations and define a type-specific initializer element like so:
*
* struct foo {
* struct dist base;
* struct foo_t {
* struct dist_t base;
* int omega;
* double tau;
* double phi;
* };
*
* struct dist_ops foo_ops = ...;
* struct dist_ops_t foo_ops = ...;
*
* #define FOO(OBJ) DIST_BASE_TYPED(&foo_ops, OBJ, struct foo)
* #define FOO(OBJ) DIST_BASE_TYPED(&foo_ops, OBJ, struct foo_t)
*
* Then users can do:
*
* struct foo mydist = {
* struct foo_t mydist = {
* FOO(mydist),
* .omega = ...,
* .tau = ...,
@ -97,7 +97,7 @@ struct dist {
*
* If you accidentally write
*
* struct bar mydist = {
* struct bar_t mydist = {
* FOO(mydist),
* ...
* };
@ -110,107 +110,107 @@ struct dist {
/**
* Generic operations on distributions. These simply defer to the
* corresponding dist_ops function. In the parlance of C++, these call
* corresponding dist_ops_t function. In the parlance of C++, these call
* virtual member functions.
*/
const char *dist_name(const struct dist *);
double dist_sample(const struct dist *);
double dist_cdf(const struct dist *, double x);
double dist_sf(const struct dist *, double x);
double dist_icdf(const struct dist *, double p);
double dist_isf(const struct dist *, double p);
const char *dist_name(const struct dist_t *);
double dist_sample(const struct dist_t *);
double dist_cdf(const struct dist_t *, double x);
double dist_sf(const struct dist_t *, double x);
double dist_icdf(const struct dist_t *, double p);
double dist_isf(const struct dist_t *, double p);
/**
* Set of operations on a potentially parametric family of
* distributions. In the parlance of C++, this would be called a
* `vtable' and the members are virtual member functions.
*/
struct dist_ops {
struct dist_ops_t {
const char *name;
double (*sample)(const struct dist *);
double (*cdf)(const struct dist *, double x);
double (*sf)(const struct dist *, double x);
double (*icdf)(const struct dist *, double p);
double (*isf)(const struct dist *, double p);
double (*sample)(const struct dist_t *);
double (*cdf)(const struct dist_t *, double x);
double (*sf)(const struct dist_t *, double x);
double (*icdf)(const struct dist_t *, double p);
double (*isf)(const struct dist_t *, double p);
};
/* Geometric distribution on positive number of trials before first success */
struct geometric {
struct dist base;
struct geometric_t {
struct dist_t base;
double p; /* success probability */
};
extern const struct dist_ops geometric_ops;
extern const struct dist_ops_t geometric_ops;
#define GEOMETRIC(OBJ) \
DIST_BASE_TYPED(&geometric_ops, OBJ, struct geometric)
DIST_BASE_TYPED(&geometric_ops, OBJ, struct geometric_t)
/* Pareto distribution */
struct genpareto {
struct dist base;
struct genpareto_t {
struct dist_t base;
double mu;
double sigma;
double xi;
};
extern const struct dist_ops genpareto_ops;
extern const struct dist_ops_t genpareto_ops;
#define GENPARETO(OBJ) \
DIST_BASE_TYPED(&genpareto_ops, OBJ, struct genpareto)
DIST_BASE_TYPED(&genpareto_ops, OBJ, struct genpareto_t)
/* Weibull distribution */
struct weibull {
struct dist base;
struct weibull_t {
struct dist_t base;
double lambda;
double k;
};
extern const struct dist_ops weibull_ops;
extern const struct dist_ops_t weibull_ops;
#define WEIBULL(OBJ) \
DIST_BASE_TYPED(&weibull_ops, OBJ, struct weibull)
DIST_BASE_TYPED(&weibull_ops, OBJ, struct weibull_t)
/* Log-logistic distribution */
struct log_logistic {
struct dist base;
struct log_logistic_t {
struct dist_t base;
double alpha;
double beta;
};
extern const struct dist_ops log_logistic_ops;
extern const struct dist_ops_t log_logistic_ops;
#define LOG_LOGISTIC(OBJ) \
DIST_BASE_TYPED(&log_logistic_ops, OBJ, struct log_logistic)
DIST_BASE_TYPED(&log_logistic_ops, OBJ, struct log_logistic_t)
/* Logistic distribution */
struct logistic {
struct dist base;
struct logistic_t {
struct dist_t base;
double mu;
double sigma;
};
extern const struct dist_ops logistic_ops;
extern const struct dist_ops_t logistic_ops;
#define LOGISTIC(OBJ) \
DIST_BASE_TYPED(&logistic_ops, OBJ, struct logistic)
DIST_BASE_TYPED(&logistic_ops, OBJ, struct logistic_t)
/* Uniform distribution */
struct uniform {
struct dist base;
struct uniform_t {
struct dist_t base;
double a;
double b;
};
extern const struct dist_ops uniform_ops;
extern const struct dist_ops_t uniform_ops;
#define UNIFORM(OBJ) \
DIST_BASE_TYPED(&uniform_ops, OBJ, struct uniform)
DIST_BASE_TYPED(&uniform_ops, OBJ, struct uniform_t)
/** Only by unittests */

View File

@ -29,10 +29,10 @@
#define USE_LIBSECCOMP
#endif
struct sandbox_cfg_elem;
struct sandbox_cfg_elem_t;
/** Typedef to structure used to manage a sandbox configuration. */
typedef struct sandbox_cfg_elem sandbox_cfg_t;
typedef struct sandbox_cfg_elem_t sandbox_cfg_t;
/**
* Linux definitions
@ -58,7 +58,7 @@ typedef enum {
* Configuration parameter structure associated with the LIBSECCOMP2
* implementation.
*/
typedef struct smp_param {
typedef struct smp_param_t {
/** syscall associated with parameter. */
int syscall;
@ -77,7 +77,7 @@ typedef struct smp_param {
* It is implemented as a linked list of parameters. Currently only controls
* parameters for open, openat, execve, stat64.
*/
struct sandbox_cfg_elem {
struct sandbox_cfg_elem_t {
/** Sandbox implementation which dictates the parameter type. */
SB_IMPL implem;
@ -85,7 +85,7 @@ struct sandbox_cfg_elem {
smp_param_t *param;
/** Next element of the configuration*/
struct sandbox_cfg_elem *next;
struct sandbox_cfg_elem_t *next;
};
/** Function pointer defining the prototype of a filter function.*/

View File

@ -63,7 +63,7 @@ int tor_cond_wait(tor_cond_t *cond, tor_mutex_t *mutex,
void tor_cond_signal_one(tor_cond_t *cond);
void tor_cond_signal_all(tor_cond_t *cond);
typedef struct tor_threadlocal_s {
typedef struct tor_threadlocal_t {
#ifdef _WIN32
DWORD index;
#else

View File

@ -59,7 +59,7 @@ main(int argc, char **argv)
{
(void)argc;
(void)argv;
tor_libevent_cfg cfg;
tor_libevent_cfg_t cfg;
memset(&cfg, 0, sizeof(cfg));
tor_libevent_initialize(&cfg);
timers_initialize();

View File

@ -119,7 +119,7 @@ typedef struct fake_work_queue_ent_t {
void (*reply_fn)(void *);
void *arg;
} fake_work_queue_ent_t;
static struct workqueue_entry_s *
static struct workqueue_entry_t *
mock_cpuworker_queue_work(workqueue_priority_t prio,
enum workqueue_reply_t (*fn)(void *, void *),
void (*reply_fn)(void *),
@ -135,7 +135,7 @@ mock_cpuworker_queue_work(workqueue_priority_t prio,
ent->reply_fn = reply_fn;
ent->arg = arg;
smartlist_add(fake_cpuworker_queue, ent);
return (struct workqueue_entry_s *)ent;
return (struct workqueue_entry_t *)ent;
}
static int
mock_cpuworker_run_work(void)

View File

@ -167,7 +167,7 @@ test_dispatch_no_recipient(void *arg)
dcfg_free(cfg);
}
struct coord { int x; int y; };
struct coord_t { int x; int y; };
static void
free_coord(msg_aux_data_t d)
{
@ -177,7 +177,7 @@ static char *
fmt_coord(msg_aux_data_t d)
{
char *v;
struct coord *c = d.ptr;
struct coord_t *c = d.ptr;
tor_asprintf(&v, "[%d, %d]", c->x, c->y);
return v;
}
@ -225,7 +225,7 @@ test_dispatch_with_types(void *arg)
r = dispatch_set_alert_fn(d, 2, alert_run_immediate, NULL);
tt_int_op(r, OP_EQ, 0);
struct coord *xy = tor_malloc(sizeof(*xy));
struct coord_t *xy = tor_malloc(sizeof(*xy));
xy->x = 13;
xy->y = 37;
msg_aux_data_t data = {.ptr = xy};

View File

@ -325,7 +325,7 @@ test_link_handshake_certs_ok(void *arg)
crypto_pk_free(key2);
}
typedef struct certs_data_s {
typedef struct certs_data_t {
int is_ed;
int is_link_cert;
or_connection_t *c;
@ -972,7 +972,7 @@ test_link_handshake_send_authchallenge(void *arg)
crypto_pk_free(rsa1);
}
typedef struct authchallenge_data_s {
typedef struct authchallenge_data_t {
or_connection_t *c;
channel_tls_t *chan;
var_cell_t *cell;
@ -1171,7 +1171,7 @@ mock_set_circid_type(channel_t *chan,
(void) consider_identity;
}
typedef struct authenticate_data_s {
typedef struct authenticate_data_t {
int is_ed;
or_connection_t *c1, *c2;
channel_tls_t *chan2;

View File

@ -946,7 +946,7 @@ psi_test(const size_t C[PSI_DF], const double logP[PSI_DF], size_t N)
static bool
test_stochastic_geometric_impl(double p)
{
const struct geometric geometric = {
const struct geometric_t geometric = {
.base = GEOMETRIC(geometric),
.p = p,
};
@ -1012,7 +1012,8 @@ test_stochastic_geometric_impl(double p)
* +inf, and x_i = i*(hi - lo)/(n - 2).
*/
static void
bin_cdfs(const struct dist *dist, double lo, double hi, double *logP, size_t n)
bin_cdfs(const struct dist_t *dist, double lo, double hi, double *logP,
size_t n)
{
#define CDF(x) dist_cdf(dist, x)
#define SF(x) dist_sf(dist, x)
@ -1059,7 +1060,8 @@ bin_cdfs(const struct dist *dist, double lo, double hi, double *logP, size_t n)
* +inf, and x_i = i*(hi - lo)/(n - 2).
*/
static void
bin_samples(const struct dist *dist, double lo, double hi, size_t *C, size_t n)
bin_samples(const struct dist_t *dist, double lo, double hi, size_t *C,
size_t n)
{
const double w = (hi - lo)/(n - 2);
size_t i;
@ -1088,7 +1090,7 @@ bin_samples(const struct dist *dist, double lo, double hi, size_t *C, size_t n)
* 0.01^2 = 0.0001.
*/
static bool
test_psi_dist_sample(const struct dist *dist)
test_psi_dist_sample(const struct dist_t *dist)
{
double logP[PSI_DF] = {0};
unsigned ntry = NTRIALS, npass = 0;
@ -1134,32 +1136,32 @@ test_stochastic_uniform(void *arg)
{
(void) arg;
const struct uniform uniform01 = {
const struct uniform_t uniform01 = {
.base = UNIFORM(uniform01),
.a = 0,
.b = 1,
};
const struct uniform uniform_pos = {
const struct uniform_t uniform_pos = {
.base = UNIFORM(uniform_pos),
.a = 1.23,
.b = 4.56,
};
const struct uniform uniform_neg = {
const struct uniform_t uniform_neg = {
.base = UNIFORM(uniform_neg),
.a = -10,
.b = -1,
};
const struct uniform uniform_cross = {
const struct uniform_t uniform_cross = {
.base = UNIFORM(uniform_cross),
.a = -1.23,
.b = 4.56,
};
const struct uniform uniform_subnormal = {
const struct uniform_t uniform_subnormal = {
.base = UNIFORM(uniform_subnormal),
.a = 4e-324,
.b = 4e-310,
};
const struct uniform uniform_subnormal_cross = {
const struct uniform_t uniform_subnormal_cross = {
.base = UNIFORM(uniform_subnormal_cross),
.a = -4e-324,
.b = 4e-310,
@ -1189,7 +1191,7 @@ test_stochastic_uniform(void *arg)
static bool
test_stochastic_logistic_impl(double mu, double sigma)
{
const struct logistic dist = {
const struct logistic_t dist = {
.base = LOGISTIC(dist),
.mu = mu,
.sigma = sigma,
@ -1202,7 +1204,7 @@ test_stochastic_logistic_impl(double mu, double sigma)
static bool
test_stochastic_log_logistic_impl(double alpha, double beta)
{
const struct log_logistic dist = {
const struct log_logistic_t dist = {
.base = LOG_LOGISTIC(dist),
.alpha = alpha,
.beta = beta,
@ -1215,7 +1217,7 @@ test_stochastic_log_logistic_impl(double alpha, double beta)
static bool
test_stochastic_weibull_impl(double lambda, double k)
{
const struct weibull dist = {
const struct weibull_t dist = {
.base = WEIBULL(dist),
.lambda = lambda,
.k = k,
@ -1235,7 +1237,7 @@ test_stochastic_weibull_impl(double lambda, double k)
static bool
test_stochastic_genpareto_impl(double mu, double sigma, double xi)
{
const struct genpareto dist = {
const struct genpareto_t dist = {
.base = GENPARETO(dist),
.mu = mu,
.sigma = sigma,

View File

@ -155,7 +155,7 @@ test_threads_basic(void *arg)
tor_mutex_free(thread_test_start2_);
}
typedef struct cv_testinfo_s {
typedef struct cv_testinfo_t {
tor_cond_t *cond;
tor_mutex_t *mutex;
int value;

View File

@ -32,7 +32,7 @@ int handled_len;
bitarray_t *handled;
#endif
typedef struct state_s {
typedef struct state_t {
int magic;
int n_handled;
crypto_pk_t *rsa;
@ -40,13 +40,13 @@ typedef struct state_s {
int is_shutdown;
} state_t;
typedef struct rsa_work_s {
typedef struct rsa_work_t {
int serial;
uint8_t msg[128];
uint8_t msglen;
} rsa_work_t;
typedef struct ecdh_work_s {
typedef struct ecdh_work_t {
int serial;
union {
curve25519_public_key_t pk;
@ -339,7 +339,7 @@ main(int argc, char **argv)
replyqueue_t *rq;
threadpool_t *tp;
int i;
tor_libevent_cfg evcfg;
tor_libevent_cfg_t evcfg;
uint32_t as_flags = 0;
for (i = 1; i < argc; ++i) {

View File

@ -266,7 +266,7 @@ main(int c, const char **v)
options = options_new();
struct tor_libevent_cfg cfg;
struct tor_libevent_cfg_t cfg;
memset(&cfg, 0, sizeof(cfg));
tor_libevent_initialize(&cfg);