diff options
Diffstat (limited to 'src/zmalloc.c')
-rw-r--r-- | src/zmalloc.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/zmalloc.c b/src/zmalloc.c index 86b15b0ee..eacce67bd 100644 --- a/src/zmalloc.c +++ b/src/zmalloc.c @@ -580,15 +580,18 @@ size_t zmalloc_get_smap_bytes_by_field(char *field, long pid) { size_t zmalloc_get_smap_bytes_by_field(char *field, long pid) { #if defined(__APPLE__) struct proc_regioninfo pri; - if (proc_pidinfo(pid, PROC_PIDREGIONINFO, 0, &pri, PROC_PIDREGIONINFO_SIZE) == - PROC_PIDREGIONINFO_SIZE) { - if (!strcmp(field, "Private_Dirty:")) { - return (size_t)pri.pri_pages_dirtied * 4096; - } else if (!strcmp(field, "Rss:")) { - return (size_t)pri.pri_pages_resident * 4096; - } else if (!strcmp(field, "AnonHugePages:")) { + if (pid == -1) pid = getpid(); + if (proc_pidinfo(pid, PROC_PIDREGIONINFO, 0, &pri, + PROC_PIDREGIONINFO_SIZE) == PROC_PIDREGIONINFO_SIZE) + { + int pagesize = getpagesize(); + if (!strcmp(field, "Private_Dirty:")) { + return (size_t)pri.pri_pages_dirtied * pagesize; + } else if (!strcmp(field, "Rss:")) { + return (size_t)pri.pri_pages_resident * pagesize; + } else if (!strcmp(field, "AnonHugePages:")) { return 0; - } + } } return 0; #endif |