svr4_ipc.h revision 259065
1/*- 2 * Copyright (c) 1998 Mark Newton 3 * Copyright (c) 1995 Christos Zoulas. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. All advertising materials mentioning features or use of this software 14 * must display the following acknowledgement: 15 * This product includes software developed by Christos Zoulas. 16 * 4. The name of the author may not be used to endorse or promote products 17 * derived from this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * 30 * $FreeBSD: releng/10.0/sys/compat/svr4/svr4_ipc.h 139743 2005-01-05 22:34:37Z imp $ 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 43struct 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 62struct svr4_msg { 63 struct svr4_msg *msg_next; 64 long msg_type; 65 u_short msg_ts; 66 short msg_spot; 67}; 68 69struct 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 89struct svr4_msgbuf { 90 long mtype; /* message type */ 91 char mtext[1]; /* message text */ 92}; 93 94struct 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 116struct 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 150struct 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 159struct 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 170struct svr4_sembuf { 171 u_short sem_num; 172 short sem_op; 173 short sem_flg; 174}; 175 176#endif /* _SVR4_IPC_H */ 177