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