os.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_OS_H
  3. #define NETDATA_OS_H
  4. #include "libnetdata.h"
  5. // =====================================================================================================================
  6. // FreeBSD
  7. #if __FreeBSD__
  8. #include <sys/sysctl.h>
  9. #define GETSYSCTL_BY_NAME(name, var) getsysctl_by_name(name, &(var), sizeof(var))
  10. extern int getsysctl_by_name(const char *name, void *ptr, size_t len);
  11. #define GETSYSCTL_MIB(name, mib) getsysctl_mib(name, mib, sizeof(mib)/sizeof(int))
  12. extern int getsysctl_mib(const char *name, int *mib, size_t len);
  13. #define GETSYSCTL_SIMPLE(name, mib, var) getsysctl_simple(name, mib, sizeof(mib)/sizeof(int), &(var), sizeof(var))
  14. #define GETSYSCTL_WSIZE(name, mib, var, size) getsysctl_simple(name, mib, sizeof(mib)/sizeof(int), var, size)
  15. extern int getsysctl_simple(const char *name, int *mib, size_t miblen, void *ptr, size_t len);
  16. #define GETSYSCTL_SIZE(name, mib, size) getsysctl(name, mib, sizeof(mib)/sizeof(int), NULL, &(size))
  17. #define GETSYSCTL(name, mib, var, size) getsysctl(name, mib, sizeof(mib)/sizeof(int), &(var), &(size))
  18. extern int getsysctl(const char *name, int *mib, size_t miblen, void *ptr, size_t *len);
  19. #endif
  20. // =====================================================================================================================
  21. // MacOS
  22. #if __APPLE__
  23. #include <sys/sysctl.h>
  24. #define GETSYSCTL_BY_NAME(name, var) getsysctl_by_name(name, &(var), sizeof(var))
  25. extern int getsysctl_by_name(const char *name, void *ptr, size_t len);
  26. #endif
  27. // =====================================================================================================================
  28. // common defs for Apple/FreeBSD/Linux
  29. extern const char *os_type;
  30. extern int processors;
  31. extern long get_system_cpus(void);
  32. extern pid_t pid_max;
  33. extern pid_t get_system_pid_max(void);
  34. extern unsigned int system_hz;
  35. extern void get_system_HZ(void);
  36. #include <sys/timex.h>
  37. #if defined(__FreeBSD__) || defined(__APPLE__)
  38. #define ADJUST_TIMEX(x) ntp_adjtime(x)
  39. #else
  40. #define ADJUST_TIMEX(x) adjtimex(x)
  41. #endif
  42. #endif //NETDATA_OS_H