Print this page
    
OS-5223 removed shm segment is no longer available
Reviewed by: Bryan Cantrill <bryan@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/uts/common/sys/shm.h
          +++ new/usr/src/uts/common/sys/shm.h
   1    1  /*
   2    2   * CDDL HEADER START
   3    3   *
   4    4   * The contents of this file are subject to the terms of the
   5    5   * Common Development and Distribution License, Version 1.0 only
   6    6   * (the "License").  You may not use this file except in compliance
   7    7   * with the License.
   8    8   *
   9    9   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10   10   * or http://www.opensolaris.org/os/licensing.
  11   11   * See the License for the specific language governing permissions
  12   12   * and limitations under the License.
  13   13   *
  
    | 
      ↓ open down ↓ | 
    13 lines elided | 
    
      ↑ open up ↑ | 
  
  14   14   * When distributing Covered Code, include this CDDL HEADER in each
  15   15   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16   16   * If applicable, add the following below this CDDL HEADER, with the
  17   17   * fields enclosed by brackets "[]" replaced with your own identifying
  18   18   * information: Portions Copyright [yyyy] [name of copyright owner]
  19   19   *
  20   20   * CDDL HEADER END
  21   21   */
  22   22  /*
  23   23   * Copyright 2014 Garrett D'Amore <garrett@damore.org>
       24 + * Copyright 2016 Joyent, Inc.
  24   25   *
  25   26   * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
  26   27   * Use is subject to license terms.
  27   28   */
  28   29  
  29   30  /*      Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T     */
  30   31  /*        All Rights Reserved   */
  31   32  
  32   33  /*
  33   34   * Portions of this source code were derived from Berkeley 4.3 BSD
  34   35   * under license from the Regents of the University of California.
  35   36   */
  36   37  
  37   38  #ifndef _SYS_SHM_H
  38   39  #define _SYS_SHM_H
  39   40  
  40   41  #include <sys/ipc.h>
  41   42  
  42   43  #ifdef  __cplusplus
  43   44  extern "C" {
  44   45  #endif
  45   46  
  46   47  /*
  47   48   *      IPC Shared Memory Facility.
  48   49   */
  49   50  
  50   51  /*
  51   52   *      Implementation Constants.
  52   53   */
  53   54  #if (defined(_KERNEL) || defined(_KMEMUSER))
  54   55  
  55   56  #define SHMLBA  PAGESIZE        /* segment low boundary address multiple */
  56   57                                  /* (SHMLBA must be a power of 2) */
  57   58  #else
  58   59  #include <sys/unistd.h>         /* needed for _SC_PAGESIZE */
  59   60  extern long _sysconf(int);      /* System Private interface to sysconf() */
  60   61  #define SHMLBA  (_sysconf(_SC_PAGESIZE))
  61   62  #endif  /* defined(_KERNEL) || defined(_KMEMUSER)) */
  62   63  
  63   64  /*
  64   65   *      Permission Definitions.
  65   66   */
  66   67  #define SHM_R   0400    /* read permission */
  67   68  #define SHM_W   0200    /* write permission */
  68   69  
  69   70  /*
  70   71   *      Message Operation Flags.
  71   72   */
  72   73  #define SHM_RDONLY      010000  /* attach read-only (else read-write) */
  73   74  #define SHM_RND         020000  /* round attach address to SHMLBA */
  74   75  #define SHM_SHARE_MMU   040000  /* share VM resources such as page table */
  75   76  #define SHM_PAGEABLE    0100000 /* pageable ISM */
  76   77  
  77   78  /*
  78   79   * Valid flags bits for shmat shmflag argument.
  79   80   */
  80   81  #define SHMAT_VALID_FLAGS_MASK          \
  81   82          (SHM_R | SHM_W | SHM_RDONLY | SHM_RND | SHM_SHARE_MMU | SHM_PAGEABLE)
  82   83  
  83   84  typedef unsigned long shmatt_t;
  84   85  
  85   86  /*
  86   87   *      Structure Definitions.
  87   88   */
  88   89  struct shmid_ds {
  89   90          struct ipc_perm shm_perm;       /* operation permission struct */
  90   91          size_t          shm_segsz;      /* size of segment in bytes */
  91   92  #if defined(_LP64) || defined(_XOPEN_SOURCE)
  92   93          void            *shm_amp;
  93   94  #else
  94   95          struct anon_map *shm_amp;       /* segment anon_map pointer */
  95   96  #endif
  96   97          ushort_t        shm_lkcnt;      /* number of times it is being locked */
  97   98          pid_t           shm_lpid;       /* pid of last shmop */
  98   99          pid_t           shm_cpid;       /* pid of creator */
  99  100          shmatt_t        shm_nattch;     /* number of attaches */
 100  101          ulong_t         shm_cnattch;    /* number of ISM attaches */
 101  102  #if defined(_LP64)
 102  103          time_t          shm_atime;      /* last shmat time */
 103  104          time_t          shm_dtime;      /* last shmdt time */
 104  105          time_t          shm_ctime;      /* last change time */
 105  106          int64_t         shm_pad4[4];    /* reserve area */
 106  107  #else   /* _LP64 */
 107  108          time_t          shm_atime;      /* last shmat time */
 108  109          int32_t         shm_pad1;       /* reserved for time_t expansion */
 109  110          time_t          shm_dtime;      /* last shmdt time */
 110  111          int32_t         shm_pad2;       /* reserved for time_t expansion */
 111  112          time_t          shm_ctime;      /* last change time */
 112  113          int32_t         shm_pad3;       /* reserved for time_t expansion */
  
    | 
      ↓ open down ↓ | 
    79 lines elided | 
    
      ↑ open up ↑ | 
  
 113  114          int32_t         shm_pad4[4];    /* reserve area  */
 114  115  #endif  /* _LP64 */
 115  116  };
 116  117  
 117  118  /*
 118  119   * Shared memory control operations
 119  120   */
 120  121  #define SHM_LOCK        3       /* Lock segment in core */
 121  122  #define SHM_UNLOCK      4       /* Unlock segment */
 122  123  
      124 +#if defined(_KERNEL)
      125 +#define SHM_RMID        5       /* Private RMID for lx support */
      126 +#endif
      127 +
 123  128  #if !defined(_KERNEL)
 124  129  int shmget(key_t, size_t, int);
 125  130  int shmids(int *, uint_t, uint_t *);
 126  131  int shmctl(int, int, struct shmid_ds *);
 127  132  void *shmat(int, const void *, int);
 128  133  #if defined(_XPG4)
 129  134  int shmdt(const void *);
 130  135  #else
 131  136  int shmdt(char *);
 132  137  #endif /* defined(_XPG4) */
 133  138  #endif /* !defined(_KERNEL) */
 134  139  
 135  140  #ifdef  __cplusplus
 136  141  }
 137  142  #endif
 138  143  
 139  144  #endif  /* _SYS_SHM_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX