GDSX (Extended General Device Support) Manual
Design and Development
Extended General Device Support (GDSX) Manual—529931-001
2-90
GDSX Internals
For more information, see the PTrace Reference Manual.
GDSX Internals
This subsection describes task I/O internals, including I/O involving $RECEIVE and I/O
for files other than $RECEIVE, and the internals of intertask communication.
I/O for Files Other Than $RECEIVE
Two tables are used by the GDSX I/O procedures: the IOCB table and the FCB table.
TSCODE allocates an IOCB to manage each outstanding nowait I/O. Among the
entries in the IOCB are the following:
iocb.tcblink[0:1] Two-way linked list pointers for list of IOCBs for a given task.
Also used to link available IOCBs.
iocb.fcblink[0:1] Two-way linked list pointers for list of IOCBs for a given file.
iocb.lhlink[0:1] Two-way linked list pointers for use by LINE^HANDLER
tasks.
iocb.wakeup=lhlink For signaltimeout, IOCB contains the GDSX internal time
when the signal is to pop.
iocb.syncid=lhlink For $RECEIVE requests, contains the sync ID returned from
RECEIVEINFO (or FILE_GETRECEIVEINFO_).
iocb.state State of IOCB:
0 - Available: IOCB currently unused
1 - Queued: I/O is currently in process
2 - ITC-Queued: ITC IOCB that has not yet been
LISTENed
3 - Signal: ^SIGNALTIMEOUT IOCB
4 - N.A.
5 - Pending: I/O complete but not passed back to task
6 - ITC active: Task is processing the request
7 - Canceled: Task has not yet processed cancel event
8 - Receive: $RECEIVE request queued for task
9 - Reply: $RECEIVE request passed to task