modernc.org/cc@v1.0.1/v2/headers/linux_386/usr/include/i386-linux-gnu/bits/mman-shared.h (about) 1 /* Memory-mapping-related declarations/definitions, not architecture-specific. 2 Copyright (C) 2017-2018 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <http://www.gnu.org/licenses/>. */ 18 19 #ifndef _SYS_MMAN_H 20 # error "Never use <bits/mman-shared.h> directly; include <sys/mman.h> instead." 21 #endif 22 23 #ifdef __USE_GNU 24 /* Flags for memfd_create. */ 25 # ifndef MFD_CLOEXEC 26 # define MFD_CLOEXEC 1U 27 # define MFD_ALLOW_SEALING 2U 28 # define MFD_HUGETLB 4U 29 # endif 30 31 /* Flags for mlock2. */ 32 # ifndef MLOCK_ONFAULT 33 # define MLOCK_ONFAULT 1U 34 # endif 35 36 /* Access rights for pkey_alloc. */ 37 # ifndef PKEY_DISABLE_ACCESS 38 # define PKEY_DISABLE_ACCESS 0x1 39 # define PKEY_DISABLE_WRITE 0x2 40 # endif 41 42 __BEGIN_DECLS 43 /* Create a new memory file descriptor. NAME is a name for debugging. 44 FLAGS is a combination of the MFD_* constants. */ 45 int memfd_create(const char *__name, unsigned int __flags) __THROW; 46 47 /* Lock pages from ADDR (inclusive) to ADDR + LENGTH (exclusive) into 48 memory. FLAGS is a combination of the MLOCK_* flags above. */ 49 int mlock2(const void *__addr, size_t __length, unsigned int __flags) __THROW; 50 51 /* Allocate a new protection key, with the PKEY_DISABLE_* bits 52 specified in ACCESS_RIGHTS. The protection key mask for the 53 current thread is updated to match the access privilege for the new 54 key. */ 55 int pkey_alloc(unsigned int __flags, unsigned int __access_rights) __THROW; 56 57 /* Update the access rights for the current thread for KEY, which must 58 have been allocated using pkey_alloc. */ 59 int pkey_set(int __key, unsigned int __access_rights) __THROW; 60 61 /* Return the access rights for the current thread for KEY, which must 62 have been allocated using pkey_alloc. */ 63 int pkey_get(int __key) __THROW; 64 65 /* Free an allocated protection key, which must have been allocated 66 using pkey_alloc. */ 67 int pkey_free(int __key) __THROW; 68 69 /* Apply memory protection flags for KEY to the specified address 70 range. */ 71 int pkey_mprotect(void *__addr, size_t __len, int __prot, int __pkey) __THROW; 72 73 __END_DECLS 74 #endif /* __USE_GNU */