summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonald Oussoren <ronaldoussoren@mac.com>2024-01-12 15:56:18 (GMT)
committerGitHub <noreply@github.com>2024-01-12 15:56:18 (GMT)
commit79970792fd2c70f77c38e08c7b3a9daf6a11bde1 (patch)
treeaa43dea3357ba8f281f1df335034928c5192c0db
parent8aa0088ea2422ed6b95076fe48a13df7562a4355 (diff)
downloadcpython-79970792fd2c70f77c38e08c7b3a9daf6a11bde1.zip
cpython-79970792fd2c70f77c38e08c7b3a9daf6a11bde1.tar.gz
cpython-79970792fd2c70f77c38e08c7b3a9daf6a11bde1.tar.bz2
gh-113868: Add a number of MAP_* flags from macOS to module mmap (#113869)
The new flags were extracted from the macOS 14.2 SDK. Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
-rw-r--r--Doc/library/mmap.rst30
-rw-r--r--Misc/NEWS.d/next/Library/2024-01-09-18-07-08.gh-issue-113868.DlZG2r.rst6
-rw-r--r--Modules/mmapmodule.c33
3 files changed, 63 insertions, 6 deletions
diff --git a/Doc/library/mmap.rst b/Doc/library/mmap.rst
index 1e8bfdf..ef6631d 100644
--- a/Doc/library/mmap.rst
+++ b/Doc/library/mmap.rst
@@ -372,14 +372,25 @@ MAP_* Constants
.. data:: MAP_SHARED
MAP_PRIVATE
- MAP_DENYWRITE
- MAP_EXECUTABLE
+ MAP_32BIT
+ MAP_ALIGNED_SUPER
MAP_ANON
MAP_ANONYMOUS
+ MAP_CONCEAL
+ MAP_DENYWRITE
+ MAP_EXECUTABLE
+ MAP_HASSEMAPHORE
+ MAP_JIT
+ MAP_NOCACHE
+ MAP_NOEXTEND
+ MAP_NORESERVE
MAP_POPULATE
+ MAP_RESILIENT_CODESIGN
+ MAP_RESILIENT_MEDIA
MAP_STACK
- MAP_ALIGNED_SUPER
- MAP_CONCEAL
+ MAP_TPRO
+ MAP_TRANSLATED_ALLOW_EXECUTE
+ MAP_UNIX03
These are the various flags that can be passed to :meth:`mmap.mmap`. :data:`MAP_ALIGNED_SUPER`
is only available at FreeBSD and :data:`MAP_CONCEAL` is only available at OpenBSD. Note
@@ -392,5 +403,12 @@ MAP_* Constants
Added :data:`MAP_STACK` constant.
.. versionadded:: 3.12
- Added :data:`MAP_ALIGNED_SUPER` constant.
- Added :data:`MAP_CONCEAL` constant.
+ Added :data:`MAP_ALIGNED_SUPER` and :data:`MAP_CONCEAL` constants.
+
+ .. versionadded:: 3.13
+ Added :data:`MAP_32BIT`, :data:`MAP_HASSEMAPHORE`, :data:`MAP_JIT`,
+ :data:`MAP_NOCACHE`, :data:`MAP_NOEXTEND`, :data:`MAP_NORESERVE`,
+ :data:`MAP_RESILIENT_CODESIGN`, :data:`MAP_RESILIENT_MEDIA`,
+ :data:`MAP_TPRO`, :data:`MAP_TRANSLATED_ALLOW_EXECUTE`, and
+ :data:`MAP_UNIX03` constants.
+
diff --git a/Misc/NEWS.d/next/Library/2024-01-09-18-07-08.gh-issue-113868.DlZG2r.rst b/Misc/NEWS.d/next/Library/2024-01-09-18-07-08.gh-issue-113868.DlZG2r.rst
new file mode 100644
index 0000000..3fe1821
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-01-09-18-07-08.gh-issue-113868.DlZG2r.rst
@@ -0,0 +1,6 @@
+Added :data:`mmap.MAP_NORESERVE`, :data:`mmap.MAP_NOEXTEND`,
+:data:`mmap.MAP_HASSEMAPHORE`, :data:`mmap.MAP_NOCACHE`,
+:data:`mmap.MAP_JIT`, :data:`mmap.MAP_RESILIENT_CODESIGN`,
+:data:`mmap.MAP_RESILIENT_MEDIA`, :data:`mmap.MAP_32BIT`,
+:data:`mmap.MAP_TRANSLATED_ALLOW_EXECUTE`, :data:`mmap.MAP_UNIX03` and
+:data:`mmap.MAP_TPRO`. All of them are ``mmap(2)`` flags on macOS.
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index d0014e3..48902fb 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -1654,6 +1654,39 @@ mmap_exec(PyObject *module)
#ifdef MAP_CONCEAL
ADD_INT_MACRO(module, MAP_CONCEAL);
#endif
+#ifdef MAP_NORESERVE
+ ADD_INT_MACRO(module, MAP_NORESERVE);
+#endif
+#ifdef MAP_NOEXTEND
+ ADD_INT_MACRO(module, MAP_NOEXTEND);
+#endif
+#ifdef MAP_HASSEMAPHORE
+ ADD_INT_MACRO(module, MAP_HASSEMAPHORE);
+#endif
+#ifdef MAP_NOCACHE
+ ADD_INT_MACRO(module, MAP_NOCACHE);
+#endif
+#ifdef MAP_JIT
+ ADD_INT_MACRO(module, MAP_JIT);
+#endif
+#ifdef MAP_RESILIENT_CODESIGN
+ ADD_INT_MACRO(module, MAP_RESILIENT_CODESIGN);
+#endif
+#ifdef MAP_RESILIENT_MEDIA
+ ADD_INT_MACRO(module, MAP_RESILIENT_MEDIA);
+#endif
+#ifdef MAP_32BIT
+ ADD_INT_MACRO(module, MAP_32BIT);
+#endif
+#ifdef MAP_TRANSLATED_ALLOW_EXECUTE
+ ADD_INT_MACRO(module, MAP_TRANSLATED_ALLOW_EXECUTE);
+#endif
+#ifdef MAP_UNIX03
+ ADD_INT_MACRO(module, MAP_UNIX03);
+#endif
+#ifdef MAP_TPRO
+ ADD_INT_MACRO(module, MAP_TPRO);
+#endif
if (PyModule_AddIntConstant(module, "PAGESIZE", (long)my_getpagesize()) < 0 ) {
return -1;
}