GDSX Manual
Design and Development
Extended General Device Support (GDSX) Manual–134303
2-91
Intertask Communication
•
If an IMSG event for a task has occurred, ^LISTEN is called to look for IOCBs on 
the task’s completed I/O list with iocb.file equal to 0.  If found, the IOCBs are 
deleted from the completed I/O list and its address is returned.
As ^LISTEN is passing a new $RECEIVE request to a task, it sets tcb.lastrcviocb to 
the address of the IOCB representing that request. This is done so that 
^RECEIVEINFO can locate all of the information that it needs to return to the 
caller. IOCBs returned by ^LISTEN have iocb.state set to 9.
If iocb.state is equal to 1, ^LISTEN must allocate space in the buffer pool to hold the 
request.  If this attempt is not successful within the time specified in the 
BUFFERTIMEOUT configuration parameter, the request is replied to with 
FENOBUFSPACE (31). Otherwise, the request data, if any, is moved from extended 
memory as iocb.xbufaddr and the extended memory space is deallocated.
•
If ^LISTEN does not find a new request, and the file parameter to ^AWAITIO was 
zero, tcb.rcvsz should be nonzero (that is, the task should have a ^READUPDATE 
posted on $RECEIVE). If not, ^AWAITIO returns with CCL; a subsequent call to 
^FILEINFO(0, ...) returns FENONEOUT.
WAIT^EVENT is called with the mask parameter allowing the task to be awakened 
on the IMSG event.
When the DEVICE^HANDLER task finishes processing the request and calls ^REPLY:
•
Tcb.lastrcviocb is set to the address of the IOCB.
•
If no message tag is passed and the address of IOCB is zero, ^REPLY returns with 
CCL; a subsequent call to ^FILEINFO returns FEBADREPLY.
•
If a message tag is passed and does not match iocb.msgtag:
°
The address of the IOCB is set to RCVTBL[message tag].
°
If the address of IOCB is 0 or iocb.tcbaddr is not equal to the current task’s 
TCB, ^REPLY returns with CCL; a subsequent call to ^FILEINFO returns 
FEBADREPLY.
•
REPLY is called.
•
RCBTBL[iocb.msgtag] is set to 0.
•
The IOCB is deleted from its RCB’s list.
•
The IOCB is deallocated.
Intertask Communication
The intertask communication (ITC) facility was implemented to enable 
DEVICE^HANDLER tasks to have a device-oriented interface to subdevices on a line 
or to communicate with other DEVICE^HANDLER or LINE^HANDLER tasks without 
using the Guardian file and message system. ITC communication is also possible 
between LINE^HANDLER tasks.










