diff options
author | David Carlier <devnexen@gmail.com> | 2019-09-15 14:05:00 +0100 |
---|---|---|
committer | David Carlier <devnexen@gmail.com> | 2019-09-15 14:05:00 +0100 |
commit | 819a661be5efcb045be4d34d7269ab35dc0fcb88 (patch) | |
tree | 781b842606ec42e001dd232a23cab98b08c0291c | |
parent | 888efc1b3642959b05815473663a5f0971af53ac (diff) | |
download | redis-819a661be5efcb045be4d34d7269ab35dc0fcb88.tar.gz |
Getting region date per process in Darwin
-rw-r--r-- | src/zmalloc.c | 12 | ||||
-rw-r--r-- | src/zmalloc.h | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/zmalloc.c b/src/zmalloc.c index fd8bb6938..48f4b1e99 100644 --- a/src/zmalloc.c +++ b/src/zmalloc.c @@ -396,6 +396,18 @@ size_t zmalloc_get_smap_bytes_by_field(char *field, long pid) { } #else 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; + } + } + return 0; +#endif ((void) field); ((void) pid); return 0; diff --git a/src/zmalloc.h b/src/zmalloc.h index 6fb19b046..4aa33509d 100644 --- a/src/zmalloc.h +++ b/src/zmalloc.h @@ -57,6 +57,7 @@ #elif defined(__APPLE__) #include <malloc/malloc.h> +#include <libproc.h> #define HAVE_MALLOC_SIZE 1 #define zmalloc_size(p) malloc_size(p) #endif |