ram.c 725 B

123456789101112131415161718192021222324252627
  1. #include "ram.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. ark_ram_info_t ark_sys_ram_get_info(void) {
  6. ark_ram_info_t info = {0, 0};
  7. FILE *fp = fopen("/proc/meminfo", "r");
  8. if (!fp) return info;
  9. char line[256];
  10. uint64_t total_kb = 0;
  11. uint64_t avail_kb = 0;
  12. while (fgets(line, sizeof(line), fp)) {
  13. if (strncmp(line, "MemTotal:", 9) == 0) {
  14. sscanf(line, "MemTotal: %lu kB", &total_kb);
  15. } else if (strncmp(line, "MemAvailable:", 13) == 0) {
  16. sscanf(line, "MemAvailable: %lu kB", &avail_kb);
  17. }
  18. }
  19. fclose(fp);
  20. info.total_mb = total_kb / 1024;
  21. info.used_mb = (total_kb - avail_kb) / 1024;
  22. return info;
  23. }