GDSX Manual

Service Routines
Extended General Device Support (GDSX) Manual134303
8-9
ADD^TRACE^DATA^INT
If the global sr^misc^trace flag (which is the same as trace^control^flags[1].<9>, as
defined in the common^data section of DCCBDECS), is set to 1 before the preceding
code is executed, in addition to the preceding user-defined entries, TSCODE generates a
standard trace entry with a type of sr^misc^req whenever a user exit is called. For more
information on these globals, see the tables in “Tracing GDSX” on page 2-77.
ADD^TRACE^DATA^INT
This procedure is exactly like ADD^TRACE^DATA, except that the datai parameter
is an INT:value, containing the address where data copying should begin.
ALLOCATEIOCB
This procedure allocates an I/O control block (IOCB) for an I/O request. Either an
IOCB address or 0 is returned to the calling task. You must deallocate the IOCB after
the I/O is completed. If IOCBs are not deallocated after use, they are inaccessible for
the remainder of the life of the GDSX process.
A task that allocates IOCBs should manage them with a linked list in global memory, so
that if the task is stopped unexpectedly, code in the USER^STOP user exit can
deallocate the IOCBs.
iocb-address returned value
INT(32):value
is an IOCB address if an IOCB was allocated; otherwise this variable is set to zero.
time-out input
INT(32):value
is the number of ticks (10 ms) to wait for an IOCB to become available. If no
time-out parameter is supplied, the value of the IOCBWAITTIME configuration
parameter is used. IOCBWAITTIME has a default of 1,000 ticks.
Consideration
This procedure may cause the calling task to be suspended.
Example
In this example an IOCB is allocated by USCODE and then deallocated when it is no
longer needed.
INT .EXT IOCB (IOCB^TEMPLATE); !<- Now an INT .EXT
INT timeout := 1000; ! Wait for 10 seconds
INT(32) iocbaddr := 0D; !<- Now an INT(32)
iocb-address := ALLOCATEIOCB ( [ time-out ] ); !
i