GDSX (Extended General Device Support) Manual
Service Routines
Extended General Device Support (GDSX) Manual—529931-001
8-51
NOTIFY^IO^COMPLETION[X]
linked into the associated LINE^HANDLER task’s ITC request queue (addressed
externally by in^queue^file^num). The intertask I/O initiation is completed by causing a
LINE^HANDLER E^ITC event, assuming that the LINE^HANDLER task has a current
^READUPDATE on its ITC file.
After the LINE^HANDLER task’s call to WAIT^EVENT returns E^ITC, the task calls
^LISTEN (0,0,1). ^LISTEN looks at the task’s ITC request queue. If the queue is not
empty, the first IOCB in the queue is delinked, its state is changed to 6 (active), and its
address is returned.
When the LINE^HANDLER task finishes the request and calls
NOTIFY^IO^COMPLETION[X], the IOCB is delinked from the TCB for the task and
queued on the completed I/O list for the task. Also, the IOCB state is changed to 5
(pending). Finally, the originating (DEVICE^HANDLER) task’s E^IOC event is caused.
This is the same action that takes place when a Guardian I/O operation completes.
iocb input
is a pointer to an IOCB representing an intertask request from a
DEVICE^HANDLER task.
If buffer is omitted, no field of the IOCB is changed. However, if buffer is present,
iocbp.bufaddr[x] is set to the address of buffer.
buffer input
is a pointer to a buffer. If buffer is omitted, no field of the IOCB is changed.
Consideration
iocb must reference a real IOCB. If its address is 0, then GDSX stops with internal
error 220.
Example
See the LINE^HANDLER Example Code on page 7-13.
CALL NOTIFY^IO^COMPLETION[X] ( iocb !
i
,[ buffer] ); !
i
INT:ref (Use with NOTIFY^IO^COMPLETION.)
INT .EXT:ref (Use with NOTIFY^IO^COMPLETIONX.)
INT:ref (Use with NOTIFY^IO^COMPLETION.)
INT .EXT:ref (Use with NOTIFY^IO^COMPLETIONX.)