Use the sysfs interface for zram introduced in Linux 4.11 19/179819/1
authorŁukasz Stelmach <l.stelmach@samsung.com>
Tue, 22 May 2018 10:34:55 +0000 (12:34 +0200)
committerŁukasz Stelmach <l.stelmach@samsung.com>
Tue, 22 May 2018 12:11:59 +0000 (14:11 +0200)
Change-Id: If6a5132f0727feddb4acdb462b64409881038c20
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
src/common/procfs.c

index ade9e7ed80392bca591c4b6ef366beec089006f1..1bdf31843ae289893bdf99186bb7f5b1a55a00d9 100644 (file)
@@ -320,7 +320,11 @@ int proc_get_zram_usage(pid_t pid, unsigned int *usage)
                return ret;
 
        /* Read current total memory usage of zram device */
-       ret = fread_uint(SWAP_ZRAM_SYSFILE"mem_used_total", &zram_usage);
+       ret = fread_nth_uint(SWAP_ZRAM_SYSFILE"mm_stat", 2, &zram_usage);
+       if (ret == -ENOENT) {
+               ret = fread_uint(SWAP_ZRAM_SYSFILE"mem_used_total", &zram_usage);
+       }
+
        if (ret < 0)
                return RESOURCED_ERROR_FAIL;
 
@@ -923,7 +927,12 @@ void proc_print_meninfo(FILE *fp)
        used = total_mem - available;
        swap_used = swap_total - swap_free;
 
-       if (fread_uint("/sys/block/zram0/mem_used_total", &zram_used) != RESOURCED_ERROR_NONE)
+       ret = fread_nth_uint(SWAP_ZRAM_SYSFILE"mm_stat", 2, &zram_used);
+       if (ret == -ENOENT) {
+               ret = fread_uint(SWAP_ZRAM_SYSFILE"mem_used_total", &zram_used);
+       }
+
+       if (ret != RESOURCED_ERROR_NONE)
                zram_used = 0;
 
        LOG_DUMP(fp, "====================================================================\n");