Browse Source

Add a subsystem for our threading support

Nick Mathewson 5 years ago
parent
commit
b8c50eabfe

+ 0 - 1
src/app/main/main.c

@@ -1397,7 +1397,6 @@ tor_run_main(const tor_main_configuration_t *tor_cfg)
   init_protocol_warning_severity_level();
 
   update_approx_time(time(NULL));
-  tor_threads_init();
   tor_compress_init();
   init_logging(0);
   monotime_init();

+ 2 - 0
src/app/main/subsystem_list.c

@@ -10,6 +10,7 @@
 
 #include "lib/err/torerr_sys.h"
 #include "lib/process/winprocess_sys.h"
+#include "lib/thread/thread_sys.h"
 
 #include <stddef.h>
 
@@ -19,6 +20,7 @@
 const subsys_fns_t *tor_subsystems[] = {
   &sys_winprocess,
   &sys_torerr,
+  &sys_threads,
 };
 
 const unsigned n_tor_subsystems = ARRAY_LENGTH(tor_subsystems);

+ 1 - 0
src/lib/thread/.may_include

@@ -2,5 +2,6 @@ orconfig.h
 lib/cc/*.h
 lib/lock/*.h
 lib/log/*.h
+lib/subsys/*.h
 lib/testsupport/*.h
 lib/thread/*.h

+ 16 - 0
src/lib/thread/compat_threads.c

@@ -14,9 +14,11 @@
 #include "orconfig.h"
 #include <stdlib.h>
 #include "lib/thread/threads.h"
+#include "lib/thread/thread_sys.h"
 
 #include "lib/log/log.h"
 #include "lib/log/util_bug.h"
+#include "lib/subsys/subsys.h"
 
 #include <string.h>
 
@@ -109,3 +111,17 @@ atomic_counter_exchange(atomic_counter_t *counter, size_t newval)
   return oldval;
 }
 #endif /* !defined(HAVE_WORKING_STDATOMIC) */
+
+static int
+sys_threads_initialize(void)
+{
+  tor_threads_init();
+  return 0;
+}
+
+const subsys_fns_t sys_threads = {
+  .name = "threads",
+  .supported = true,
+  .level = -95,
+  .initialize = sys_threads_initialize,
+};

+ 3 - 2
src/lib/thread/include.am

@@ -23,5 +23,6 @@ src_lib_libtor_thread_testing_a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_CPPFLAGS)
 src_lib_libtor_thread_testing_a_CFLAGS = $(AM_CFLAGS) $(TEST_CFLAGS)
 
 noinst_HEADERS +=					\
-	src/lib/thread/threads.h			\
-	src/lib/thread/numcpus.h
+	src/lib/thread/numcpus.h			\
+	src/lib/thread/thread_sys.h			\
+	src/lib/thread/threads.h

+ 14 - 0
src/lib/thread/thread_sys.h

@@ -0,0 +1,14 @@
+/* Copyright (c) 2018, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file threads_sys.h
+ * \brief Declare subsystem object for threads library
+ **/
+
+#ifndef TOR_THREADS_SYS_H
+#define TOR_THREADS_SYS_H
+
+extern const struct subsys_fns_t sys_threads;
+
+#endif /* !defined(TOR_THREADS_SYS_H) */