|
|
Power 6/32 Unix version 1.2b
/* @(#)msg.h 6.1 */
/*
** 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 */
/*
* Defines for Message Limits
*/
#define MSGMAP 100 /* # of entries in msg map */
#define MSGMAX 8192 /* max message size */
#define MSGMNB 16384 /* max # bytes on queue */
#define MSGMNI 50 /* # of message queue identifiers */
#define MSGSSZ 8 /* msg segment size (word size multiple) */
#define MSGTQL 40 /* # of system message headers */
#define MSGSEG 1024 /* # of msg segments (MUST BE < 32768) */
#define MSGMAPPTE clrnd(btoc(MSGSEG*MSGSSZ))
/* # of pages for message buffer */
/*
** 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 */
struct msg *msg_first; /* ptr to first message on q */
struct msg *msg_last; /* ptr to last message on q */
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 {
struct msg *msg_next; /* ptr to next message on q */
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 msgrecv system calls.
*/
struct msgbuff {
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) */
};
#ifdef KERNEL
extern struct pte Msgmap[];
extern char msgutl[];
#endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.