;***************************************************** ;* ;* Queue Descriptor - This is structure is used ;* to create a queue. One is maintained ;* in the system data area for each queue ;* ;* +----+----+----+----+----+----+----+----+ ;* 00 | link |net |org | flags | name... ;* +----+----+----+----+----+----+----+----+ ;* 08 ...name | msglen | ;* +----+----+----+----+----+----+----+----+ ;* 10 | nmsgs | dq | nq | msgcnt | ;* +----+----+----+----+----+----+----+----+ ;* 18 | msgout | buffer | ;* +----+----+----+----+ ;* ;* link - used to link QDs is system lists ;* net - which machine in the network ;* org - origin machine in the network ;* flags - Queue Flags ;* name - Name of Queue ;* msglen - # of bytes in one message ;* nmsgs - maximum # of messages in queue ;* dq - Root of PDs waiting to read ;* nq - Root of PDs list waiting to write ;* msgcnt - # of messages currently in queue ;* msgout - next message # to read ;* buf - pointer to queue message buffer ;* (for MX queues, owner of queue) ;* ;***************************************************** q_link equ word ptr 0 q_net equ byte ptr q_link + word q_org equ byte ptr q_net + byte q_flags equ word ptr q_org + byte q_name equ byte ptr q_flags + word q_msglen equ word ptr q_name + qnamsiz q_nmsgs equ word ptr q_msglen + word q_dq equ word ptr q_nmsgs + word q_nq equ word ptr q_dq + word q_msgcnt equ word ptr q_nq + word q_msgout equ word ptr q_msgcnt + word q_buf equ word ptr q_msgout + word qdlen equ q_buf + word ; ; Q_FLAGS values ; qf_mx equ 001h ; Mutual Exclusion qf_keep equ 002h ; NO DELETE qf_hide equ 004h ; Not User writable qf_rsp equ 008h ; rsp queue qf_table equ 010h ; from qd table qf_rpl equ 020h ; rpl queue qf_dev equ 040h ; device queue ;***************************************************** ;* ;* QPB - Queue Parameter Block ;* ;* +----+----+----+----+----+----+----+----+ ;* 00 |flgs|net | qaddr | nmsgs | buffptr | ;* +----+----+----+----+----+----+----+----+ ;* 08 | name | ;* +----+----+----+----+----+----+----+----+ ;* ;* flgs - unused ;* net - unused (which machine to use) ;* qaddr - Queue ID, address of QD ;* nmsgs - number of messages to read/write ;* buffptr - address to read/write into/from ;* name - name of queue (for open only) ;* ;***************************************************** qpb_flgs equ byte ptr 0 qpb_net equ byte ptr qpb_flgs + byte qpb_qaddr equ word ptr qpb_net + byte qpb_nmsgs equ word ptr qpb_qaddr + word qpb_buffptr equ word ptr qpb_nmsgs + word qpb_name equ byte ptr qpb_buffptr + word qpblen equ qpb_name + qnamsiz