diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-11-01 08:18:29 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-11-01 12:55:52 -0400 |
commit | 0ce1f2d46646fd73abee56888650288055f16a53 (patch) | |
tree | b167b5b955499c9fd4686ea53cd5b28f475fad3e /src/lib/subsys | |
parent | a0402c6f33206468f57c381c0022e547520d14c2 (diff) | |
download | tor-0ce1f2d46646fd73abee56888650288055f16a53.tar.gz tor-0ce1f2d46646fd73abee56888650288055f16a53.zip |
Declare the subsystem structure.
Diffstat (limited to 'src/lib/subsys')
-rw-r--r-- | src/lib/subsys/.may_include | 1 | ||||
-rw-r--r-- | src/lib/subsys/include.am | 3 | ||||
-rw-r--r-- | src/lib/subsys/subsys.h | 63 |
3 files changed, 67 insertions, 0 deletions
diff --git a/src/lib/subsys/.may_include b/src/lib/subsys/.may_include new file mode 100644 index 0000000000..2b06e8519c --- /dev/null +++ b/src/lib/subsys/.may_include @@ -0,0 +1 @@ +orconfig.h diff --git a/src/lib/subsys/include.am b/src/lib/subsys/include.am new file mode 100644 index 0000000000..4741126b14 --- /dev/null +++ b/src/lib/subsys/include.am @@ -0,0 +1,3 @@ + +noinst_HEADERS += \ + src/lib/subsys/subsys.h diff --git a/src/lib/subsys/subsys.h b/src/lib/subsys/subsys.h new file mode 100644 index 0000000000..7e4fe53636 --- /dev/null +++ b/src/lib/subsys/subsys.h @@ -0,0 +1,63 @@ +/* Copyright (c) 2003-2004, Roger Dingledine + * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. + * Copyright (c) 2007-2018, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +#ifndef TOR_SUBSYS_T +#define TOR_SUBSYS_T + +#include <stdbool.h> + +struct dispatch_connector_t; + +/** + * A subsystem is a part of Tor that is initialized, shut down, configured, + * and connected to other parts of Tor. + * + * Subsystems + **/ +typedef struct subsys_fns_t { + /** + * The name of this subsystem. It should be a programmer-readable + * identifier. + **/ + const char *name; + + /** + * Whether this subsystem is supported -- that is, whether it is compiled + * into Tor. For most subsystems, this should be true. + **/ + bool supported; + + /** + * The 'initialization level' for the subsystem. It should run from -100 + * through +100. The subsystems are initialized from lowest level to + * highest, and shut down from highest level to lowest. + **/ + int level; + + /** + * Initialize any global components of this subsystem. + * + * This function MAY rely on any lower-level subsystem being initialized. + * + * This function MUST NOT rely on any runtime configuration information; + * it is only for global state or pre-configuration state. + **/ + int (*initialize)(void); + + /** + * Connect a subsystem to the message dispatch system. + **/ + int (*add_pubsub)(struct dispatch_connector_t *); + + /** + * Free all resources held by this subsystem. + * + * This function is not allowed to fail. + **/ + void (*shutdown)(void); + +} subsys_fns_t; + +#endif |