GDSX (Extended General Device Support) Manual

Service Routines
Extended General Device Support (GDSX) Manual529931-001
8-46
^LISTEN
indicates where ^LISTEN is to look for completed I/O operations. The value of
i-o-message is one of the following:
itc-flag input
INT:value
indicates if ^LISTEN is to look for ITC requests. The value of itc-flag is one of the
following:
Considerations
The structure of an IOCB is declared in the iocb^template in the DCCBDECS file.
See Appendix C, DCCBDECS and ULHDECSE Listings for a listing of this file.
When receiving an IOCB from ^LISTEN, the address of the buffer used for the I/O
is located in the IOCB. The IOCB STRUCT contains an INT(32) variable bufaddrx,
which is equivalenced to two words, extaddr and bufaddr. When the buffer is in
extended memory, it can be referenced by bufaddrx. When the buffer is in local
memory, extaddr is zero, and the address is held in bufaddr.
To minimize USCODE complexity, you can consistently use either local or
extended memory. If you wish to use buffers in both areas of memory, you can
determine if the buffer address is in local or extended memory by testing
iocb.extaddr or iocb.iocb^info.ext^io. For example:
IF iocb.extaddr THEN
BEGIN ! we have a extended memory buffer address
.
.
END
ELSE
BEGIN !we have a local memory buffer address
.
.
END;
-1 ^LISTEN looks for all I/Os except intertask requests and
messages from $RECEIVE
0 ^LISTEN looks for intertask requests or messages from
$RECEIVE
Positive Number The file number where ^LISTEN is to look for completed I/Os
0 ^LISTEN looks for completions on other files
Nonzero Number ^LISTEN looks for ITC requests