|
|
1.1 root 1: /* (-lgl
2: * COHERENT Version 3.0
3: * Copyright (c) 1982, 1990 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6: #ifndef MSG_H
7: #define MSG_H
8: /*
9: ** IPC Message Facility.
10: */
11:
12: #include <sys/ipc.h>
13: #include <sys/types.h>
14:
15: /*
16: ** Permission Definitions.
17: */
18:
19: #define MSG_R 0400 /* read permission */
20: #define MSG_W 0200 /* write permission */
21:
22: /*
23: ** ipc_perm Mode Definitions.
24: */
25:
26: #define MSG_RWAIT 01000 /* a reader is waiting for a message */
27: #define MSG_WWAIT 02000 /* a writer is waiting to send */
28:
29: /*
30: ** Message Operation Flags.
31: */
32:
33: #define MSG_NOERROR 010000 /* no error if big message */
34:
35: /*
36: ** Structure Definitions.
37: */
38:
39: /*
40: ** There is one msg structure for each message that may be in the system.
41: */
42:
43: struct msg {
44:
45: struct msg *msg_next; /* pointer to next message on q */
46: long msg_type; /* message type */
47: short msg_ts; /* message text size */
48: short msg_spot; /* message text map address */
49: };
50:
51: /*
52: ** There is one msg queue id data structure for each q in the system.
53: */
54:
55: struct msqid_ds {
56:
57: struct ipc_perm msg_perm; /* operation permission struct */
58: struct msg *msg_first; /* ptr to first message on q */
59: struct msg *msg_last; /* ptr to last message on q */
60: unsigned short msg_cbytes; /* current # bytes on q */
61: unsigned short msg_qnum; /* # of messages on q */
62: unsigned short msg_qbytes; /* max # of bytes on q */
63: unsigned short msg_lspid; /* pid of last msgsnd */
64: unsigned short msg_lrpid; /* pid of last msgrcv */
65: time_t msg_stime; /* last msgsnd time */
66: time_t msg_rtime; /* last msgrcv time */
67: time_t msg_ctime; /* last change time */
68: };
69:
70: /*
71: ** User message buffer template for msgsnd and msgrcv system calls.
72: */
73:
74: struct msgbuf {
75:
76: long mtype; /* message type */
77: char mtext[]; /* message text */
78: };
79:
80: /*
81: ** Ioctl commands issued to Message device driver (Coherent specific).
82: */
83:
84: #define MSGIOC ('M'<<8)
85: #define MSGCTL (MSGIOC|0)
86: #define MSGGET (MSGIOC|1)
87: #define MSGSND (MSGIOC|2)
88: #define MSGRCV (MSGIOC|3)
89:
90: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.