diff -Naur ./gkrellm-2.3.11/src/sysdeps/linux.c ./gkrellm-2.3.11-new/src/sysdeps/linux.c --- ./gkrellm-2.3.11/src/sysdeps/linux.c 2019-07-25 06:50:12.000000000 -0700 +++ ./gkrellm-2.3.11-new/src/sysdeps/linux.c 2021-08-30 15:45:15.419917471 -0700 @@ -1283,7 +1283,7 @@ #define PROC_MEMINFO_FILE "/proc/meminfo" #define PROC_VMSTAT_FILE "/proc/vmstat" -static guint64 swap_total, swap_used; +static guint64 swap_total, swap_used, swap_free; /* Kernels >= 2.5.x have tagged formats only in kb units. */ @@ -1309,47 +1309,46 @@ if ((f = fopen(PROC_MEMINFO_FILE, "r")) == NULL) return; - while ((fgets(buf, sizeof(buf), f)) != NULL) - { - if (buf[0] == 'M') - { - if (!strncmp(buf, "Mem:", 4)) - sscanf(buf + 5, - "%" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64, - &total, &x_used, &free, - &shared, &buffers, &cached); - else if (!strncmp(buf, "MemTotal:", 9)) - { + while ((fgets(buf, sizeof(buf), f)) != NULL){ + if (buf[0] == 'M'){ + if (!strncmp(buf, "Mem:", 4)){ + sscanf(buf + 5, "%" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64, + &total, &x_used, &free, &shared, &buffers, &cached); + }else if(!strncmp(buf, "MemTotal:", 9)){ tagged_format_meminfo(buf + 10, &total); using_tagged = TRUE; - } - else if (!strncmp(buf, "MemFree:", 8)) + }else if(!strncmp(buf, "MemFree:", 8)){ tagged_format_meminfo(buf + 9, &free); - else if (!strncmp(buf, "MemShared:", 10)) - tagged_format_meminfo(buf + 11, &shared); + } - else if (buf[0] == 'S') - { + }else if (buf[0] == 'S'){ +//SwapCached: +//SwapTotal: +//SwapFree: if (!strncmp(buf, "Swap:", 5)) - sscanf(buf + 6,"%" PRIu64 " %" PRIu64, - &swap_total, &swap_used); + sscanf(buf + 6,"%" PRIu64 " %" PRIu64, &swap_total, &swap_used); else if (!strncmp(buf, "SwapTotal:", 10)) tagged_format_meminfo(buf + 11, &swap_total); else if (!strncmp(buf, "SwapFree:", 9)) - tagged_format_meminfo(buf + 10, &swap_used); + tagged_format_meminfo(buf + 10, &swap_free); + //else if (!strncmp(buf, "SwapCached:", 9)) + // tagged_format_meminfo(buf + 11, &swap_cached); else if (!strncmp(buf, "Slab:", 5)) tagged_format_meminfo(buf + 6, &slab); - } - else if (buf[0] == 'B' && !strncmp(buf, "Buffers:", 8)) + else if(!strncmp(buf, "Shmem:", 6)) + tagged_format_meminfo(buf + 7, &shared); + }else if (buf[0] == 'B' && !strncmp(buf, "Buffers:", 8)){ tagged_format_meminfo(buf + 9, &buffers); - else if (buf[0] == 'C' && !strncmp(buf, "Cached:", 7)) + }else if (buf[0] == 'C' && !strncmp(buf, "Cached:", 7)){ tagged_format_meminfo(buf + 8, &cached); } + } fclose(f); if (using_tagged) { x_used = total - free; - swap_used = swap_total - swap_used; + //swap_used = swap_total - swap_used - swap_cached; + swap_used = swap_total - swap_free; } used = x_used - buffers - cached - slab; gkrellm_mem_assign_data(total, used, free, shared, buffers, cached + slab);