Guardian Procedure Calls Reference Manual
NOTE: Use AWAITIO only with the 16-bit I/O versions of the above procedures, such
as READ, WRITEREAD, and so forth. You can use AWAITIOX with any versions of the
above procedures, including READX, WRITEREADX, and so forth. You can use AWAITIOXL
with SERVERCLASS_SENDL_ , READUPDATE[X|XL], and any versions of the above
procedures.
• Completion tag values
A tag -30D returned by AWAITIO signals completion of a nowait open; a tag -29D returned
by AWAITIO signals completion of a nowait backup open. For more information, see the
FILE_OPEN_CHKPT_ Procedure (page 471).
• Using AWAITIO, AWAITIOX, and AWAITIOXL
Nowait calls to the extended I/O routines must call AWAITIOX or AWAITIOXL to complete
the operation. AWAITIOX and AWAITIOXL also completes calls made to the 16-bit I/O
routines. Thus, you can replace all current calls to AWAITIO and the calls to AWAITIOX with
call to AWAITIOXL.
If the operation was initiated with a call to READ, WRITEREAD, and so on (the 16-bit I/O
routines), and AWAITIOX or AWAITIOXL is called to complete the operation, buffer-addr
contains the extended address of that buffer and segment-id is -1.
If you accidentally call AWAITIO and extended I/O operations are outstanding against the
file, AWAITIO does not complete the operation. If you call AWAITOX while an "L" operation
(for example, SERVERCLASS_SENDL_) is outstanding, AWAITIOX does not complete the
operation. If a specific file number is given, error 2 is returned. You must then call AWAITIOX
or AWAITIOXL to complete the operation. If the file number was -1, the files with extended
I/O operations outstanding are skipped and AWAITIO will check the completion of any 16-bit
I/O operations still outstanding.
• Reference parameters for AWAITIOX and AWAITIOXL
The reference parameters for AWAITIOX and AWAITIOXL can be in the user's stack or in an
extended data segment. The reference parameters cannot be in the user's code space.
The reference parameters for AWAITIOX and AWAITIOXL must be relative extended addresses;
they cannot be absolute extended addresses.
If the reference parameters for AWAITIOX and AWAITIOXL address an area in a selectable
extended data segment, the segment must be in use at the time of the call to AWAITIOX and
AWAITIOXL. (Flat segments allocated by a process are always accessible to the process.)
• AWAITIOX or AWAITIOXL and buffer in extended data segment
If the buffer is in a flat extended data segment, the segment must be allocated at the time
of the call to AWAITIOX or AWAITIOXL.
If the buffer is in a selectable extended data segment, the segment need not be in use at
the time of the call to AWAITIOX or AWAITIOXL. However, the segment must be allocated at
the time of the call to AWAITIOX or AWAITIOXL.
• Normal order of I/O completion (without SETMODE function 30)
If SETMODE function 30 is not set, the oldest incomplete I/O operation always completes
first; therefore, AWAITIO[X|XL] completes I/O operations associated with the particular open
of a file in the same order as initiated.
• Order of I/O completion with SETMODE function 30
Specifying SETMODE function 30 allows nowait I/O operations to complete in any order.
However, I/O operations that complete at the same time return in the order issued (unless
SETMODE function 30 is specified with param1 set to 3). An application process that uses
82 Guardian Procedure Calls (A-B)