Annotation of cci/sys/h/msg.h, revision 1.1

1.1     ! root        1: 
        !             2: /* @(#)msg.h   6.1 */
        !             3: /*
        !             4: **     IPC Message Facility.
        !             5: */
        !             6: 
        !             7: /*
        !             8: **     Implementation Constants.
        !             9: */
        !            10: 
        !            11: #define        PMSG    (PZERO + 2)     /* message facility sleep priority */
        !            12: 
        !            13: /*
        !            14: **     Permission Definitions.
        !            15: */
        !            16: 
        !            17: #define        MSG_R   0400    /* read permission */
        !            18: #define        MSG_W   0200    /* write permission */
        !            19: 
        !            20: /*
        !            21: **     ipc_perm Mode Definitions.
        !            22: */
        !            23: 
        !            24: #define        MSG_RWAIT       01000   /* a reader is waiting for a message */
        !            25: #define        MSG_WWAIT       02000   /* a writer is waiting to send */
        !            26: 
        !            27: /*
        !            28: **     Message Operation Flags.
        !            29: */
        !            30: 
        !            31: #define        MSG_NOERROR     010000  /* no error if big message */
        !            32: 
        !            33: /*
        !            34:  * Defines for Message Limits
        !            35:  */
        !            36: 
        !            37: #define MSGMAP 100             /* # of entries in msg map */
        !            38: #define MSGMAX 8192            /* max message size */
        !            39: #define MSGMNB 16384           /* max # bytes on queue */
        !            40: #define MSGMNI 50              /* # of message queue identifiers */
        !            41: #define MSGSSZ 8               /* msg segment size (word size multiple) */
        !            42: #define MSGTQL 40              /* # of system message headers */
        !            43: #define MSGSEG 1024            /* # of msg segments (MUST BE < 32768) */
        !            44: 
        !            45: #define MSGMAPPTE      clrnd(btoc(MSGSEG*MSGSSZ))
        !            46:                                /* # of pages for message buffer */
        !            47: 
        !            48: /*
        !            49: **     Structure Definitions.
        !            50: */
        !            51: 
        !            52: /*
        !            53: **     There is one msg queue id data structure for each q in the system.
        !            54: */
        !            55: 
        !            56: struct msqid_ds {
        !            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:        ushort          msg_cbytes;     /* current # bytes on q */
        !            61:        ushort          msg_qnum;       /* # of messages on q */
        !            62:        ushort          msg_qbytes;     /* max # of bytes on q */
        !            63:        ushort          msg_lspid;      /* pid of last msgsnd */
        !            64:        ushort          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: **     There is one msg structure for each message that may be in the system.
        !            72: */
        !            73: 
        !            74: struct msg {
        !            75:        struct msg      *msg_next;      /* ptr to next message on q */
        !            76:        long            msg_type;       /* message type */
        !            77:        short           msg_ts;         /* message text size */
        !            78:        short           msg_spot;       /* message text map address */
        !            79: };
        !            80: 
        !            81: /*
        !            82: **     User message buffer template for msgsnd and msgrecv system calls.
        !            83: */
        !            84: 
        !            85: struct msgbuff {
        !            86:        long    mtype;          /* message type */
        !            87:        char    mtext[1];       /* message text */
        !            88: };
        !            89: 
        !            90: /*
        !            91: **     Message information structure.
        !            92: */
        !            93: 
        !            94: struct msginfo {
        !            95:        int     msgmap, /* # of entries in msg map */
        !            96:                msgmax, /* max message size */
        !            97:                msgmnb, /* max # bytes on queue */
        !            98:                msgmni, /* # of message queue identifiers */
        !            99:                msgssz, /* msg segment size (should be word size multiple) */
        !           100:                msgtql; /* # of system message headers */
        !           101:        ushort  msgseg; /* # of msg segments (MUST BE < 32768) */
        !           102: };
        !           103:  
        !           104: 
        !           105: #ifdef KERNEL
        !           106: extern struct pte      Msgmap[];
        !           107: extern char            msgutl[];
        !           108: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.