glibc (2.38)

(root)/
include/
bits/
shm.h
       1  /* Copyright (C) 1995-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  #ifndef _SYS_SHM_H
      19  # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
      20  #endif
      21  
      22  #include <bits/types.h>
      23  #include <bits/wordsize.h>
      24  #include <bits/shmlba.h>
      25  
      26  /* Permission flag for shmget.  */
      27  #define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */
      28  #define SHM_W		0200		/* or S_IWUGO from <linux/stat.h> */
      29  
      30  /* Flags for `shmat'.  */
      31  #define SHM_RDONLY	010000		/* attach read-only else read-write */
      32  #define SHM_RND		020000		/* round attach address to SHMLBA */
      33  #define SHM_REMAP	040000		/* take-over region on attach */
      34  #define SHM_EXEC	0100000		/* execution access */
      35  
      36  /* Commands for `shmctl'.  */
      37  #define SHM_LOCK	11		/* lock segment (root only) */
      38  #define SHM_UNLOCK	12		/* unlock segment (root only) */
      39  
      40  __BEGIN_DECLS
      41  
      42  /* Type to count number of attaches.  */
      43  typedef __syscall_ulong_t shmatt_t;
      44  
      45  #include <bits/types/struct_shmid_ds.h>
      46  #include <bits/types/struct_shmid64_ds.h>
      47  
      48  #ifdef __USE_MISC
      49  
      50  /* ipcs ctl commands */
      51  # define SHM_STAT 	13
      52  # define SHM_INFO 	14
      53  # define SHM_STAT_ANY	15
      54  
      55  /* shm_mode upper byte flags */
      56  # define SHM_DEST	01000	/* segment will be destroyed on last detach */
      57  # define SHM_LOCKED	02000   /* segment will not be swapped */
      58  # define SHM_HUGETLB	04000	/* segment is mapped via hugetlb */
      59  # define SHM_NORESERVE	010000	/* don't check for reservations */
      60  
      61  struct	shminfo
      62    {
      63      __syscall_ulong_t shmmax;
      64      __syscall_ulong_t shmmin;
      65      __syscall_ulong_t shmmni;
      66      __syscall_ulong_t shmseg;
      67      __syscall_ulong_t shmall;
      68      __syscall_ulong_t __glibc_reserved1;
      69      __syscall_ulong_t __glibc_reserved2;
      70      __syscall_ulong_t __glibc_reserved3;
      71      __syscall_ulong_t __glibc_reserved4;
      72    };
      73  
      74  struct shm_info
      75    {
      76      int used_ids;
      77      __syscall_ulong_t shm_tot;	/* total allocated shm */
      78      __syscall_ulong_t shm_rss;	/* total resident shm */
      79      __syscall_ulong_t shm_swp;	/* total swapped shm */
      80      __syscall_ulong_t swap_attempts;
      81      __syscall_ulong_t swap_successes;
      82    };
      83  
      84  #endif /* __USE_MISC */
      85  
      86  __END_DECLS