Browse Source

timex: this plugin enables timex plugin for non-linux systems (#12489)

* timex: this plugin enables timex plugin for non-linux system

* refactoring and fixing PR comments

* move OS specific macros to libnetdata

* Update README.md

Co-authored-by: Ilya Mashchenko <ilya@netdata.cloud>
Co-authored-by: Tina Luedtke <kickoke@users.noreply.github.com>
Suraj Neupane 3 years ago
parent
commit
06300b1e42
5 changed files with 22 additions and 4 deletions
  1. 1 1
      CMakeLists.txt
  2. 1 1
      Makefile.am
  3. 3 2
      collectors/timex.plugin/plugin_timex.c
  4. 10 0
      daemon/static_threads.c
  5. 7 0
      libnetdata/os.h

+ 1 - 1
CMakeLists.txt

@@ -1134,6 +1134,7 @@ list(APPEND NETDATA_COMMON_LIBRARIES ${PROTOBUF_LIBRARIES})
 list(APPEND NETDATA_COMMON_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIRS})
 list(APPEND NETDATA_COMMON_CFLAGS ${PROTOBUF_CFLAGS_OTHER})
 list(APPEND NETDATA_FILES ${ACLK_ALWAYS_BUILD})
+list(APPEND NETDATA_FILES ${TIMEX_PLUGIN_FILES})
 list(APPEND NETDATA_FILES ${ACLK_FILES} ${ACLK_PROTO_BUILT_SRCS} ${ACLK_PROTO_BUILT_HDRS})
 list(APPEND NETDATA_FILES ${ACLK_COMMON_FILES})
 include_directories(BEFORE ${CMAKE_SOURCE_DIR}/aclk/aclk-schemas)
@@ -1151,7 +1152,6 @@ IF(LINUX)
     add_executable(netdata config.h ${NETDATA_FILES}
             ${CGROUPS_PLUGIN_FILES}
             ${DISKSPACE_PLUGIN_FILES}
-            ${TIMEX_PLUGIN_FILES}
             ${PROC_PLUGIN_FILES}
             ${TC_PLUGIN_FILES}
             )

+ 1 - 1
Makefile.am

@@ -864,6 +864,7 @@ NETDATA_FILES = \
     $(ACLK_COMMON_FILES) \
     $(ACLK_FILES) \
     $(SPAWN_PLUGIN_FILES) \
+    $(TIMEX_PLUGIN_FILES) \
     $(NULL)
 
 if FREEBSD
@@ -885,7 +886,6 @@ if LINUX
         daemon/static_threads_linux.c \
         $(CGROUPS_PLUGIN_FILES) \
         $(DISKSPACE_PLUGIN_FILES) \
-        $(TIMEX_PLUGIN_FILES) \
         $(PROC_PLUGIN_FILES) \
         $(TC_PLUGIN_FILES) \
         $(NULL)

+ 3 - 2
collectors/timex.plugin/plugin_timex.c

@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "daemon/common.h"
-#include "sys/timex.h"
+#include "libnetdata/os.h"
 
 #define PLUGIN_TIMEX_NAME "timex.plugin"
 
@@ -44,7 +44,8 @@ void *timex_main(void *ptr)
 
         struct timex timex_buf = {};
         int sync_state = 0;
-        sync_state = adjtimex(&timex_buf);
+
+        sync_state = ADJUST_TIMEX(&timex_buf);
 
         collected_number divisor = USEC_PER_MS;
         if (timex_buf.status & STA_NANO)

+ 10 - 0
daemon/static_threads.c

@@ -11,8 +11,18 @@ extern void *health_main(void *ptr);
 extern void *pluginsd_main(void *ptr);
 extern void *service_main(void *ptr);
 extern void *statsd_main(void *ptr);
+extern void *timex_main(void *ptr);
 
 const struct netdata_static_thread static_threads_common[] = {
+    {
+        .name = "PLUGIN[timex]",
+        .config_section = CONFIG_SECTION_PLUGINS,
+        .config_name = "timex",
+        .enabled = 1,
+        .thread = NULL,
+        .init_routine = NULL,
+        .start_routine = timex_main
+    },
     {
         .name = "PLUGIN[check]",
         .config_section = CONFIG_SECTION_PLUGINS,

+ 7 - 0
libnetdata/os.h

@@ -57,4 +57,11 @@ extern pid_t get_system_pid_max(void);
 extern unsigned int system_hz;
 extern void get_system_HZ(void);
 
+#include <sys/timex.h>
+#if defined(__FreeBSD__) || defined(__APPLE__)
+#define ADJUST_TIMEX(x) ntp_adjtime(x)
+#else
+#define ADJUST_TIMEX(x) adjtimex(x)
+#endif
+
 #endif //NETDATA_OS_H