glibc (2.38)

(root)/
include/
sys/
personality.h
       1  /* Copyright (C) 2002-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  /* Taken verbatim from Linux 2.6 (include/linux/personality.h).  */
      19  
      20  #ifndef _SYS_PERSONALITY_H
      21  #define _SYS_PERSONALITY_H 1
      22  
      23  #include <features.h>
      24  
      25  /* Flags for bug emulation.
      26     These occupy the top three bytes.  */
      27  enum
      28    {
      29      UNAME26 = 0x0020000,
      30      ADDR_NO_RANDOMIZE = 0x0040000,
      31      FDPIC_FUNCPTRS = 0x0080000,
      32      MMAP_PAGE_ZERO = 0x0100000,
      33      ADDR_COMPAT_LAYOUT = 0x0200000,
      34      READ_IMPLIES_EXEC = 0x0400000,
      35      ADDR_LIMIT_32BIT = 0x0800000,
      36      SHORT_INODE = 0x1000000,
      37      WHOLE_SECONDS = 0x2000000,
      38      STICKY_TIMEOUTS = 0x4000000,
      39      ADDR_LIMIT_3GB = 	0x8000000
      40    };
      41  
      42  /* Personality types.
      43  
      44     These go in the low byte.  Avoid using the top bit, it will
      45     conflict with error returns.  */
      46  enum
      47    {
      48      PER_LINUX = 0x0000,
      49      PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
      50      PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS,
      51      PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
      52      PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
      53      PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE,
      54      PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
      55      PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
      56      PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS,
      57      PER_BSD = 0x0006,
      58      PER_SUNOS = 0x0006 | STICKY_TIMEOUTS,
      59      PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
      60      PER_LINUX32 = 0x0008,
      61      PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB,
      62      PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,	/* IRIX5 32-bit */
      63      PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,	/* IRIX6 new 32-bit */
      64      PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,	/* IRIX6 64-bit */
      65      PER_RISCOS = 0x000c,
      66      PER_SOLARIS = 0x000d | STICKY_TIMEOUTS,
      67      PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
      68      PER_OSF4 = 0x000f,
      69      PER_HPUX = 0x0010,
      70      PER_MASK = 0x00ff,
      71    };
      72  
      73  __BEGIN_DECLS
      74  
      75  /* Set different ABIs (personalities).  */
      76  extern int personality (unsigned long int __persona) __THROW;
      77  
      78  __END_DECLS
      79  
      80  #endif /* sys/personality.h */