summaryrefslogtreecommitdiff
path: root/Zend/zend_alloc.c
diff options
context:
space:
mode:
authorDavid Carlier <devnexen@gmail.com>2019-07-27 13:33:48 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-09-17 12:54:46 +0200
commitce25fa0d245b1a5be84af8cc24790ad91286df47 (patch)
treea98de79a1bff9e92df27861a67a33d7866b45b08 /Zend/zend_alloc.c
parent1a5f04688ebde8f7f149d8df993f4fc5386f064d (diff)
downloadphp-git-ce25fa0d245b1a5be84af8cc24790ad91286df47.tar.gz
Monitoring anonymous pages on mac via vmmap tag
Diffstat (limited to 'Zend/zend_alloc.c')
-rw-r--r--Zend/zend_alloc.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c
index 21dc9073e5..d3349fe395 100644
--- a/Zend/zend_alloc.c
+++ b/Zend/zend_alloc.c
@@ -111,6 +111,15 @@ static size_t _real_page_size = ZEND_MM_PAGE_SIZE;
# undef HAVE_MREMAP
#endif
+#ifndef __APPLE__
+# define ZEND_MM_FD -1
+#else
+/* Mac allows to track anonymous page via vmmap per TAG id.
+ * user land applications are allowed to take from 240 to 255.
+ */
+# define ZEND_MM_FD (250<<24)
+#endif
+
#ifndef ZEND_MM_STAT
# define ZEND_MM_STAT 1 /* track current and peak memory usage */
#endif
@@ -417,7 +426,7 @@ static void *zend_mm_mmap_fixed(void *addr, size_t size)
flags |= MAP_FIXED | MAP_EXCL;
#endif
/* MAP_FIXED leads to discarding of the old mapping, so it can't be used. */
- void *ptr = mmap(addr, size, PROT_READ | PROT_WRITE, flags /*| MAP_POPULATE | MAP_HUGETLB*/, -1, 0);
+ void *ptr = mmap(addr, size, PROT_READ | PROT_WRITE, flags /*| MAP_POPULATE | MAP_HUGETLB*/, ZEND_MM_FD, 0);
if (ptr == MAP_FAILED) {
#if ZEND_MM_ERROR && !defined(MAP_EXCL)
@@ -461,7 +470,7 @@ static void *zend_mm_mmap(size_t size)
}
#endif
- ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+ ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, ZEND_MM_FD, 0);
if (ptr == MAP_FAILED) {
#if ZEND_MM_ERROR