home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * @(#) msg.h 2.1 88/05/18
- *
- * Copyright (C) The Santa Cruz Operation, 1984, 1985, 1986, 1987.
- * Copyright (C) Microsoft Corporation, 1984, 1985, 1986, 1987.
- * This Module contains Proprietary Information of
- * The Santa Cruz Operation, Microsoft Corporation
- * and AT&T, and should be treated as Confidential.
- */
-
- /*
- * THIS FILE CONTAINS CODE WHICH IS SPECIFIC TO THE
- * INTEL 80286 CPU AND MAY REQUIRE MODIFICATION
- * WHEN ADAPTING XENIX TO NEW HARDWARE.
- */
-
- /*
- * IPC Message Facility.
- */
-
- /*
- ** Implementation Constants.
- */
-
- #define PMSG (PZERO + 2) /* message facility sleep priority */
-
- /*
- ** Permission Definitions.
- */
-
- #define MSG_R 0400 /* read permission */
- #define MSG_W 0200 /* write permission */
-
- /*
- ** ipc_perm Mode Definitions.
- */
-
- #define MSG_RWAIT 01000 /* a reader is waiting for a message */
- #define MSG_WWAIT 02000 /* a writer is waiting to send */
-
- /*
- ** Message Operation Flags.
- */
-
- #define MSG_NOERROR 010000 /* no error if big message */
-
- /*
- ** Structure Definitions.
- */
-
- /*
- ** There is one msg queue id data structure for each q in the system.
- */
-
- struct msqid_ds {
- struct ipc_perm msg_perm; /* operation permission struct */
- #ifdef M_I386
- struct msg *msg_first; /* ptr to first message on q */
- struct msg *msg_last; /* ptr to last message on q */
- #else
- struct msg near *msg_first; /* ptr to first message on q */
- struct msg near *msg_last; /* ptr to last message on q */
- #endif
- ushort msg_cbytes; /* current # bytes on q */
- ushort msg_qnum; /* # of messages on q */
- ushort msg_qbytes; /* max # of bytes on q */
- ushort msg_lspid; /* pid of last msgsnd */
- ushort msg_lrpid; /* pid of last msgrcv */
- time_t msg_stime; /* last msgsnd time */
- time_t msg_rtime; /* last msgrcv time */
- time_t msg_ctime; /* last change time */
- };
-
- /*
- ** There is one msg structure for each message that may be in the system.
- */
-
- struct msg {
- #ifdef M_I386
- struct msg *msg_next; /* ptr to next message on q */
- #else
- struct msg near *msg_next; /* ptr to next message on q */
- #endif
- long msg_type; /* message type */
- short msg_ts; /* message text size */
- short msg_spot; /* message text map address */
- };
-
- /*
- ** User message buffer template for msgsnd and msgrcv system calls.
- */
-
- struct msgbuf {
- long mtype; /* message type */
- char mtext[1]; /* message text */
- };
-
- /*
- ** Message information structure.
- */
-
- struct msginfo {
- int msgmap, /* # of entries in msg map */
- msgmax, /* max message size */
- msgmnb, /* max # bytes on queue */
- msgmni, /* # of message queue identifiers */
- msgssz, /* msg segment size (should be word size multiple) */
- msgtql; /* # of system message headers */
- ushort msgseg; /* # of msg segments (MUST BE < 32768) */
- };
-