summaryrefslogtreecommitdiff
path: root/src/zmalloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/zmalloc.c')
-rw-r--r--src/zmalloc.c19
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