(root)/
glibc-2.38/
sysdeps/
gnu/
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/ipctypes.h>
      24  
      25  /* Permission flag for shmget.  */
      26  #define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */
      27  #define SHM_W		0200		/* or S_IWUGO from <linux/stat.h> */
      28  
      29  /* Flags for `shmat'.  */
      30  #define SHM_RDONLY	010000		/* attach read-only else read-write */
      31  #define SHM_RND		020000		/* round attach address to SHMLBA */
      32  #define SHM_REMAP	040000		/* take-over region on attach */
      33  
      34  /* Commands for `shmctl'.  */
      35  #define SHM_LOCK	11		/* lock segment (root only) */
      36  #define SHM_UNLOCK	12		/* unlock segment (root only) */
      37  
      38  __BEGIN_DECLS
      39  
      40  /* Segment low boundary address multiple.  */
      41  #define SHMLBA		(__getpagesize ())
      42  extern int __getpagesize (void) __THROW __attribute__ ((__const__));
      43  
      44  
      45  /* Type to count number of attaches.  */
      46  typedef unsigned short int shmatt_t;
      47  
      48  #include <bits/types/struct_shmid_ds.h>
      49  
      50  #ifdef __USE_MISC
      51  
      52  /* ipcs ctl commands */
      53  # define SHM_STAT 	13
      54  # define SHM_INFO 	14
      55  
      56  /* shm_mode upper byte flags */
      57  # define SHM_DEST	01000	/* segment will be destroyed on last detach */
      58  # define SHM_LOCKED	02000   /* segment will not be swapped */
      59  
      60  struct	shminfo
      61    {
      62      int shmmax;
      63      int shmmin;
      64      int shmmni;
      65      int shmseg;
      66      int shmall;
      67    };
      68  
      69  struct shm_info
      70    {
      71      int used_ids;
      72      unsigned long int shm_tot;	/* total allocated shm */
      73      unsigned long int shm_rss;	/* total resident shm */
      74      unsigned long int shm_swp;	/* total swapped shm */
      75      unsigned long int swap_attempts;
      76      unsigned long int swap_successes;
      77    };
      78  
      79  #endif /* __USE_MISC */
      80  
      81  __END_DECLS