mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Merge remote-tracking branch 'tor-github/pr/1517'
This commit is contained in:
commit
c34fb3413d
3
changes/ticket32415
Normal file
3
changes/ticket32415
Normal 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.
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
||||
/** @{ */
|
||||
|
@ -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;
|
||||
|
@ -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 *),
|
||||
|
@ -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. */
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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_;
|
||||
|
||||
/**
|
||||
|
@ -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,
|
||||
|
@ -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 */
|
||||
|
@ -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. */
|
||||
};
|
||||
|
||||
|
@ -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 ***************************/
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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_)
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -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
|
||||
|
||||
|
@ -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).
|
||||
*/
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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_)
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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) \
|
||||
|
@ -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
|
||||
|
@ -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); \
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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) */
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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.*/
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
@ -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)
|
||||
|
@ -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};
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user