mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
4845ab53f0
This is an automated commit, generated by this command:
./scripts/maint/rename_c_identifier.py \
address_ttl_s address_ttl_t \
aes_cnt_cipher aes_cnt_cipher_t \
authchallenge_data_s authchallenge_data_t \
authenticate_data_s authenticate_data_t \
cached_bw_event_s cached_bw_event_t \
cbuf cbuf_t \
cell_ewma_s cell_ewma_t \
certs_data_s certs_data_t \
channel_idmap_entry_s channel_idmap_entry_t \
channel_listener_s channel_listener_t \
channel_s channel_t \
channel_tls_s channel_tls_t \
circuit_build_times_s circuit_build_times_t \
circuit_muxinfo_s circuit_muxinfo_t \
circuitmux_policy_circ_data_s circuitmux_policy_circ_data_t \
circuitmux_policy_data_s circuitmux_policy_data_t \
circuitmux_policy_s circuitmux_policy_t \
circuitmux_s circuitmux_t \
coord coord_t \
cpuworker_job_u cpuworker_job_u_t \
cv_testinfo_s cv_testinfo_t \
ddmap_entry_s ddmap_entry_t \
dircollator_s dircollator_t \
dist_ops dist_ops_t \
ecdh_work_s ecdh_work_t \
ewma_policy_circ_data_s ewma_policy_circ_data_t \
ewma_policy_data_s ewma_policy_data_t \
fp_pair_map_entry_s fp_pair_map_entry_t \
fp_pair_map_s fp_pair_map_t \
guard_selection_s guard_selection_t \
mbw_cache_entry_s mbw_cache_entry_t \
outbuf_table_ent_s outbuf_table_ent_t \
queued_event_s queued_event_t \
replyqueue_s replyqueue_t \
rsa_work_s rsa_work_t \
sandbox_cfg_elem sandbox_cfg_elem_t \
scheduler_s scheduler_t \
smp_param smp_param_t \
socket_table_ent_s socket_table_ent_t \
state_s state_t \
threadpool_s threadpool_t \
timeout_cb timeout_cb_t \
tor_libevent_cfg tor_libevent_cfg_t \
tor_threadlocal_s tor_threadlocal_t \
url_table_ent_s url_table_ent_t \
worker_state_s worker_state_t \
workerthread_s workerthread_t \
workqueue_entry_s workqueue_entry_t
70 lines
2.7 KiB
C
70 lines
2.7 KiB
C
/* Copyright (c) 2013-2019, The Tor Project, Inc. */
|
|
/* See LICENSE for licensing information */
|
|
|
|
/**
|
|
* \file workqueue.h
|
|
* \brief Header for workqueue.c
|
|
**/
|
|
|
|
#ifndef TOR_WORKQUEUE_H
|
|
#define TOR_WORKQUEUE_H
|
|
|
|
#include "lib/cc/torint.h"
|
|
|
|
/** A replyqueue is used to tell the main thread about the outcome of
|
|
* work that we queued for the workers. */
|
|
typedef struct replyqueue_t replyqueue_t;
|
|
/** A thread-pool manages starting threads and passing work to them. */
|
|
typedef struct threadpool_t threadpool_t;
|
|
/** A workqueue entry represents a request that has been passed to a thread
|
|
* pool. */
|
|
typedef struct workqueue_entry_t workqueue_entry_t;
|
|
|
|
/** Possible return value from a work function: */
|
|
typedef enum workqueue_reply_t {
|
|
WQ_RPL_REPLY = 0, /** indicates success */
|
|
WQ_RPL_ERROR = 1, /** indicates fatal error */
|
|
WQ_RPL_SHUTDOWN = 2, /** indicates thread is shutting down */
|
|
} workqueue_reply_t;
|
|
|
|
/** Possible priorities for work. Lower numeric values are more important. */
|
|
typedef enum workqueue_priority_t {
|
|
WQ_PRI_HIGH = 0,
|
|
WQ_PRI_MED = 1,
|
|
WQ_PRI_LOW = 2,
|
|
} workqueue_priority_t;
|
|
|
|
workqueue_entry_t *threadpool_queue_work_priority(threadpool_t *pool,
|
|
workqueue_priority_t prio,
|
|
workqueue_reply_t (*fn)(void *,
|
|
void *),
|
|
void (*reply_fn)(void *),
|
|
void *arg);
|
|
|
|
workqueue_entry_t *threadpool_queue_work(threadpool_t *pool,
|
|
workqueue_reply_t (*fn)(void *,
|
|
void *),
|
|
void (*reply_fn)(void *),
|
|
void *arg);
|
|
|
|
int threadpool_queue_update(threadpool_t *pool,
|
|
void *(*dup_fn)(void *),
|
|
workqueue_reply_t (*fn)(void *, void *),
|
|
void (*free_fn)(void *),
|
|
void *arg);
|
|
void *workqueue_entry_cancel(workqueue_entry_t *pending_work);
|
|
threadpool_t *threadpool_new(int n_threads,
|
|
replyqueue_t *replyqueue,
|
|
void *(*new_thread_state_fn)(void*),
|
|
void (*free_thread_state_fn)(void*),
|
|
void *arg);
|
|
replyqueue_t *threadpool_get_replyqueue(threadpool_t *tp);
|
|
|
|
replyqueue_t *replyqueue_new(uint32_t alertsocks_flags);
|
|
void replyqueue_process(replyqueue_t *queue);
|
|
|
|
int threadpool_register_reply_event(threadpool_t *tp,
|
|
void (*cb)(threadpool_t *tp));
|
|
|
|
#endif /* !defined(TOR_WORKQUEUE_H) */
|