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>
This commit is contained in:
Ronald Oussoren 2024-01-12 16:56:18 +01:00 committed by GitHub
parent 8aa0088ea2
commit 79970792fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 64 additions and 7 deletions

View file

@ -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_POPULATE
MAP_STACK
MAP_ALIGNED_SUPER
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_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.

View file

@ -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.

View file

@ -1653,6 +1653,39 @@ mmap_exec(PyObject *module)
#endif
#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;