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