(root)/
glibc-2.38/
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  
      24  /* Flags for `shmat'.  */
      25  #define SHM_RDONLY	010000		/* attach read-only else read-write */
      26  #define SHM_RND		020000		/* round attach address to SHMLBA */
      27  #define SHM_REMAP	040000		/* take-over region on attach */
      28  
      29  /* Commands for `shmctl'.  */
      30  #define SHM_LOCK	11		/* lock segment (root only) */
      31  #define SHM_UNLOCK	12		/* unlock segment (root only) */
      32  
      33  __BEGIN_DECLS
      34  
      35  /* Segment low boundary address multiple.  */
      36  #define SHMLBA		(__getpagesize ())
      37  extern int __getpagesize (void) __THROW __attribute__ ((__const__));
      38  
      39  
      40  /* Type to count number of attaches.  */
      41  typedef unsigned short int shmatt_t;
      42  
      43  /* Data structure describing a shared memory segment.  */
      44  struct shmid_ds
      45    {
      46      struct ipc_perm shm_perm;		/* operation permission struct */
      47      size_t shm_segsz;			/* size of segment in bytes */
      48      __time_t shm_atime;			/* time of last shmat() */
      49      __time_t shm_dtime;			/* time of last shmdt() */
      50      __time_t shm_ctime;			/* time of last change by shmctl() */
      51      __pid_t shm_cpid;			/* pid of creator */
      52      __pid_t shm_lpid;			/* pid of last shmop */
      53      shmatt_t shm_nattch;		/* number of current attaches */
      54    };
      55  
      56  __END_DECLS