aboutsummaryrefslogtreecommitdiff
path: root/src/lib/wallclock/approx_time.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/wallclock/approx_time.c')
-rw-r--r--src/lib/wallclock/approx_time.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/lib/wallclock/approx_time.c b/src/lib/wallclock/approx_time.c
index ee498702d5..c815f20e51 100644
--- a/src/lib/wallclock/approx_time.c
+++ b/src/lib/wallclock/approx_time.c
@@ -1,6 +1,6 @@
/* Copyright (c) 2003, Roger Dingledine
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
- * Copyright (c) 2007-2019, The Tor Project, Inc. */
+ * Copyright (c) 2007-2020, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
@@ -9,7 +9,9 @@
**/
#include "orconfig.h"
+#include "lib/subsys/subsys.h"
#include "lib/wallclock/approx_time.h"
+#include "lib/wallclock/wallclock_sys.h"
/* =====
* Cached time
@@ -41,3 +43,26 @@ update_approx_time(time_t now)
cached_approx_time = now;
}
#endif /* !defined(TIME_IS_FAST) */
+
+/**
+ * Initialize the "wallclock" subsystem by setting the current cached time.
+ **/
+static int
+subsys_wallclock_initialize(void)
+{
+ update_approx_time(time(NULL));
+ return 0;
+}
+
+/**
+ * Subsystem function table describing the "wallclock" subsystem.
+ **/
+const subsys_fns_t sys_wallclock = {
+ .name = "wallclock",
+ SUBSYS_DECLARE_LOCATION(),
+ .supported = true,
+ /* Approximate time is a diagnostic feature, we want it to init right after
+ * low-level error handling. */
+ .level = -98,
+ .initialize = subsys_wallclock_initialize,
+};