Annotation of sys/compat/svr4/svr4_ipc.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: svr4_ipc.h,v 1.2 1996/08/02 20:35:40 niklas Exp $ */
2: /* $NetBSD: svr4_ipc.h,v 1.1 1995/10/14 20:24:32 christos Exp $ */
3:
4: /*
5: * Copyright (c) 1995 Christos Zoulas. All rights reserved.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code must retain the above copyright
11: * notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: * 3. All advertising materials mentioning features or use of this software
16: * must display the following acknowledgement:
17: * This product includes software developed by Christos Zoulas.
18: * 4. The name of the author may not be used to endorse or promote products
19: * derived from this software without specific prior written permission.
20: *
21: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31: */
32:
33: #ifndef _SVR4_IPC_H_
34: #define _SVR4_IPC_H_
35:
36: /*
37: * General IPC
38: */
39: #define SVR4_IPC_RMID 10
40: #define SVR4_IPC_SET 11
41: #define SVR4_IPC_STAT 12
42:
43: struct svr4_ipc_perm {
44: svr4_uid_t uid;
45: svr4_gid_t gid;
46: svr4_uid_t cuid;
47: svr4_gid_t cgid;
48: svr4_mode_t mode;
49: u_long seq;
50: svr4_key_t key;
51: long pad[4];
52: };
53:
54: /*
55: * Message queues
56: */
57: #define SVR4_msgget 0
58: #define SVR4_msgctl 1
59: #define SVR4_msgrcv 2
60: #define SVR4_msgsnd 3
61:
62: struct svr4_msg {
63: struct svr4_msg *msg_next;
64: long msg_type;
65: u_short msg_ts;
66: short msg_spot;
67: };
68:
69: struct svr4_msqid_ds {
70: struct svr4_ipc_perm msg_perm;
71: struct svr4_msg *msg_first;
72: struct svr4_msg *msg_last;
73: u_long msg_cbytes;
74: u_long msg_qnum;
75: u_long msg_qbytes;
76: svr4_pid_t msg_lspid;
77: svr4_pid_t msg_lrpid;
78: svr4_time_t msg_stime;
79: long msg_pad1;
80: svr4_time_t msg_rtime;
81: long msg_pad2;
82: svr4_time_t msg_ctime;
83: long msg_pad3;
84: short msg_cv;
85: short msg_qnum_cv;
86: long msg_pad4[3];
87: };
88:
89: struct svr4_msgbuf {
90: long mtype; /* message type */
91: char mtext[1]; /* message text */
92: };
93:
94: struct svr4_msginfo {
95: int msgmap;
96: int msgmax;
97: int msgmnb;
98: int msgmni;
99: int msgssz;
100: int msgtql;
101: u_short msgseg;
102: };
103:
104: /*
105: * Shared memory
106: */
107: #define SVR4_shmat 0
108: #define SVR4_shmctl 1
109: #define SVR4_shmdt 2
110: #define SVR4_shmget 3
111:
112: /* shmctl() operations */
113: #define SVR4_SHM_LOCK 3
114: #define SVR4_SHM_UNLOCK 4
115:
116: struct svr4_shmid_ds {
117: struct svr4_ipc_perm shm_perm;
118: int shm_segsz;
119: void *shm_amp;
120: u_short shm_lkcnt;
121: svr4_pid_t shm_lpid;
122: svr4_pid_t shm_cpid;
123: u_long shm_nattch;
124: u_long shm_cnattch;
125: svr4_time_t shm_atime;
126: long shm_pad1;
127: svr4_time_t shm_dtime;
128: long shm_pad2;
129: svr4_time_t shm_ctime;
130: long shm_pad3;
131: long shm_pad4[4];
132: };
133:
134: /*
135: * Semaphores
136: */
137: #define SVR4_semctl 0
138: #define SVR4_semget 1
139: #define SVR4_semop 2
140:
141: /* semctl() operations */
142: #define SVR4_SEM_GETNCNT 3
143: #define SVR4_SEM_GETPID 4
144: #define SVR4_SEM_GETVAL 5
145: #define SVR4_SEM_GETALL 6
146: #define SVR4_SEM_GETZCNT 7
147: #define SVR4_SEM_SETVAL 8
148: #define SVR4_SEM_SETALL 9
149:
150: struct svr4_sem {
151: u_short semval;
152: svr4_pid_t sempid;
153: u_short semncnt;
154: u_short semzcnt;
155: u_short semncnt_cv;
156: u_short semzcnt_cv;
157: };
158:
159: struct svr4_semid_ds {
160: struct svr4_ipc_perm sem_perm;
161: struct svr4_sem *sem_base;
162: u_short sem_nsems;
163: svr4_time_t sem_otime;
164: long sem_pad1;
165: svr4_time_t sem_ctime;
166: long sem_pad2;
167: long sem_pad3[4];
168: };
169:
170: struct svr4_sembuf {
171: u_short sem_num;
172: short sem_op;
173: short sem_flg;
174: };
175:
176: #endif /* _SVR4_IPC_H */
CVSweb