1 /* Copyright (c) 2003-2004, Roger Dingledine
2  * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
3  * Copyright (c) 2007-2021, The Tor Project, Inc. */
4 /* See LICENSE for licensing information */
5 
6 /**
7  * @file subsystem_list.c
8  * @brief List of Tor's subsystems.
9  **/
10 
11 #include "orconfig.h"
12 #include "app/main/subsysmgr.h"
13 #include "lib/cc/compat_compiler.h"
14 #include "lib/cc/torint.h"
15 
16 #include "core/mainloop/mainloop_sys.h"
17 #include "core/or/dos_sys.h"
18 #include "core/or/or_sys.h"
19 #include "feature/control/btrack_sys.h"
20 #include "lib/compress/compress_sys.h"
21 #include "lib/crypt_ops/crypto_sys.h"
22 #include "lib/err/torerr_sys.h"
23 #include "lib/log/log_sys.h"
24 #include "lib/net/network_sys.h"
25 #include "lib/process/process_sys.h"
26 #include "lib/llharden/winprocess_sys.h"
27 #include "lib/thread/thread_sys.h"
28 #include "lib/time/time_sys.h"
29 #include "lib/tls/tortls_sys.h"
30 #include "lib/trace/trace_sys.h"
31 #include "lib/wallclock/wallclock_sys.h"
32 #include "lib/evloop/evloop_sys.h"
33 
34 #include "feature/dirauth/dirauth_sys.h"
35 #include "feature/hs/hs_sys.h"
36 #include "feature/metrics/metrics_sys.h"
37 #include "feature/relay/relay_sys.h"
38 
39 #include <stddef.h>
40 
41 /**
42  * Global list of the subsystems in Tor, in the order of their initialization.
43  * Want to know the exact level numbers?
44  * We'll implement a level dump command in #31614.
45  **/
46 const subsys_fns_t *tor_subsystems[] = {
47   &sys_winprocess,
48   &sys_torerr,
49 
50   &sys_wallclock,
51   &sys_logging,
52   &sys_threads,
53 
54   &sys_tracing,
55 
56   &sys_time,
57 
58   &sys_crypto,
59   &sys_compress,
60   &sys_network,
61   &sys_tortls,
62 
63   &sys_evloop,
64   &sys_process,
65 
66   &sys_mainloop,
67   &sys_or,
68   &sys_dos,
69 
70   &sys_relay,
71   &sys_hs,
72 
73   &sys_btrack,
74 
75   &sys_dirauth,
76   &sys_metrics,
77 };
78 
79 const unsigned n_tor_subsystems = ARRAY_LENGTH(tor_subsystems);
80