Guardian Procedure Calls Reference Manual (G06.25+)

Guardian Procedure Calls (F)
Guardian Procedure Calls Reference Manual522629-013
5-120
FILE_OPEN_ Procedure
Specifying a nowait-depth value greater than 0 causes all I/O operations to be
performed in a nowait manner. Nowait I/O operations must be completed by a call
to AWAITIO[X]. Nowait IO operations on different file numbers (even if for the
same file) are independent and may arrive in any order at the destination and may
be completed by AWAITIO[X] in any order.
Nowait opens
If you open a file in a nowait manner (
options.<1> = 1) and if FILE_OPEN_
returns no error (
error = 0), the open operation must be completed by a call to
AWAITIO[X]. If there is an error, no system message is sent to the object being
opened and you do not need to call AWAITIO[X] to complete the operation.
If there is no error, the
filenum parameter returned by FILE_OPEN_ is valid. But
you cannot initiate any I/O operation on the file until you complete the open by
calling AWAITIO[X].
If you specify the
tag parameter in the call to AWAITIO[X], a -30D is returned; the
values returned in the buffer and count parameters to AWAITIO[X] are undefined.
If an error returns from AWAITIO[X], it is your responsibility to close the file.
For the TMF transaction pseudofile, or for a waited file (
nowait-depth = 0), a
request for a nowait open is rejected.
The file system implementation of a nowait open might use waited calls in some
cases. However, it is guaranteed that the open message is sent nowait to a
process; the opener does not wait for the process being opened to service the
open message.
Direct and buffered I/O transfers
A file opened by FILE_OPEN_ uses direct I/O transfers by default; SETMODE 72
is used to force the system to use an intermediate buffer in the process file
segment (PFS) for I/O transfers. This is unlike OPEN, which uses a PFS buffer for
I/O transfers by default.
Sequential block buffering
Sequential block buffering is only supported for disk files. If sequential block
buffering is used, the file should usually be opened with protected or exclusive
access. Shared access can be used, but it is somewhat slower than the other
access methods, and there might be concurrency problems. Refer to the
discussion of “Sequential Block Buffering” in the
Enscribe Programmer’s Guide.
Named processes
If you supply a process file name for a named process, it can represent any
process with the same name. System messages are normally sent to the current
primary process. The exception is when a named process supplies its own name
to FILE_OPEN_. In that case the name refers to the backup process and system
messages are sent there.