hsysinfo.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef H_SYS_INFO_H_
  2. #define H_SYS_INFO_H_
  3. #include "hplatform.h"
  4. #ifdef OS_LINUX
  5. #include <sys/sysinfo.h>
  6. #endif
  7. inline int get_ncpu() {
  8. #ifdef OS_WIN
  9. SYSTEM_INFO si;
  10. GetSystemInfo(&si);
  11. return si.dwNumberOfProcessors;
  12. #else
  13. //return get_nprocs();
  14. //return get_nprocs_conf();
  15. //return sysconf(_SC_NPROCESSORS_ONLN); // processors available
  16. return sysconf(_SC_NPROCESSORS_CONF); // processors configured
  17. #endif
  18. }
  19. typedef struct meminfo_s {
  20. unsigned long total; // KB
  21. unsigned long free; // KB
  22. } meminfo_t;
  23. inline int get_meminfo(meminfo_t* mem) {
  24. #ifdef OS_WIN
  25. MEMORYSTATUSEX memstat;
  26. memset(&memstat, 0, sizeof(memstat));
  27. memstat.dwLength = sizeof(memstat);
  28. GlobalMemoryStatusEx(&memstat);
  29. mem->total = memstat.ullTotalPhys >> 10;
  30. mem->free = memstat.ullAvailPhys >> 10;
  31. return 0;
  32. #elif defined(OS_LINUX)
  33. struct sysinfo info;
  34. if (sysinfo(&info) < 0) {
  35. return errno;
  36. }
  37. mem->total = info.totalram * info.mem_unit >> 10;
  38. mem->free = info.freeram * info.mem_unit >> 10;
  39. return 0;
  40. #else
  41. return -10;
  42. #endif
  43. }
  44. #endif // H_SYS_INFO_H_