os.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. // Linux
  7. #if (TARGET_OS == OS_LINUX)
  8. // =====================================================================================================================
  9. // FreeBSD
  10. #elif (TARGET_OS == OS_FREEBSD)
  11. #include <sys/sysctl.h>
  12. #define GETSYSCTL_BY_NAME(name, var) getsysctl_by_name(name, &(var), sizeof(var))
  13. extern int getsysctl_by_name(const char *name, void *ptr, size_t len);
  14. #define GETSYSCTL_MIB(name, mib) getsysctl_mib(name, mib, sizeof(mib)/sizeof(int))
  15. extern int getsysctl_mib(const char *name, int *mib, size_t len);
  16. #define GETSYSCTL_SIMPLE(name, mib, var) getsysctl_simple(name, mib, sizeof(mib)/sizeof(int), &(var), sizeof(var))
  17. #define GETSYSCTL_WSIZE(name, mib, var, size) getsysctl_simple(name, mib, sizeof(mib)/sizeof(int), var, size)
  18. extern int getsysctl_simple(const char *name, int *mib, size_t miblen, void *ptr, size_t len);
  19. #define GETSYSCTL_SIZE(name, mib, size) getsysctl(name, mib, sizeof(mib)/sizeof(int), NULL, &(size))
  20. #define GETSYSCTL(name, mib, var, size) getsysctl(name, mib, sizeof(mib)/sizeof(int), &(var), &(size))
  21. extern int getsysctl(const char *name, int *mib, size_t miblen, void *ptr, size_t *len);
  22. // =====================================================================================================================
  23. // MacOS
  24. #elif (TARGET_OS == OS_MACOS)
  25. #include <sys/sysctl.h>
  26. #define GETSYSCTL_BY_NAME(name, var) getsysctl_by_name(name, &(var), sizeof(var))
  27. extern int getsysctl_by_name(const char *name, void *ptr, size_t len);
  28. // =====================================================================================================================
  29. // unknown O/S
  30. #else
  31. #error unsupported operating system
  32. #endif
  33. // =====================================================================================================================
  34. // common for all O/S
  35. extern int processors;
  36. extern long get_system_cpus(void);
  37. extern pid_t pid_max;
  38. extern pid_t get_system_pid_max(void);
  39. extern unsigned int system_hz;
  40. extern void get_system_HZ(void);
  41. #endif //NETDATA_OS_H