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 */