/* mu_msg.h Melb 4.2 82/10/20 */ /* * Melb Uni trivial IPC mechanism */ #ifdef MUSH #ifndef DATA_T /* so people can make a union/struct if they want */ #define DATA_T long #endif typedef struct { #ifdef vax /* this isn't important, just nice */ u_short msg_uid : 15; /* effective sender uid (or code if pid==0) */ u_short msg_val : 1; /* msg is valid, ie: really sent by someone */ u_short msg_pid : 15; /* rcv: proc id of sender, snd: dest addr */ u_short msg_rply: 1; /* rcv: reply required, snd: recv reply only */ #else u_short msg_rply: 1; u_short msg_pid : 15; u_short msg_val : 1; u_short msg_uid : 15; #endif DATA_T msg_data; } mmsgbuf; /* * The following relate to the mu_msg() sys call */ typedef enum { MSG_ENAB, /* enable input msgs to process */ MSG_DISB, /* no more messages */ MSG_RECV, /* get a message */ MSG_SEND, /* send a message */ MSG_SNDW, /* send a msg then get one */ MSG_RPLY, /* send a reply */ } msg_type; #define MSG_W_RCV 0x0001 /* wait for message to be received */ #define MSG_W_POST 0x0002 /* wait till queued to receiver */ #define MSG_W_DLV 0x0004 /* wait till delivered (not impl) */ #define MSG_W_Q 0x0008 /* wait if process queues full (not impl) */ #define MSG_W_ENAB 0x0010 /* wait till rcvr enables messages (not impl) */ #ifdef KERNEL /* * Some of this stuff belongs other places, but ... */ #define MSGENAB 0x0001 /* process has messages enabled */ #define MSGOK 0x0002 /* process is waiting for msg */ #define MSGWRPLY 0x0004 /* message process is waiting for is a reply */ #define MSGRPLY 0x0008 /* process must reply to last msg */ #define MSGWAIT 0x0010 /* some process is waiting on our msgbuf */ #define MSGPRI (PZERO+4) /* Interruptible */ struct proc *mu_send(); #endif #define SIGMESG 28 /* sig sent to MSGENAB'd proc if msg arrives */ #endif