Envoy ACP/XF Application Programming Manual

EnvoyACP/XF and the Application Task
EnvoyACP/XF Application Programming Manual132179
1-6
Multiple Pending Nowait Operations
Note that, except for SETMODE 30, you issue only one of the necessary SETMODE
and CONTROL calls for each line, regardless of how many FILE_OPEN_ calls you
issue. You can issue the SETMODE and CONTROL calls to any one of the multiple line
openings. It makes no difference which opening you use.
When you use multiple FILE_OPEN_ calls for a single line along with an extended
(2-octet) control field, your application can have a maximum of 127 WRITE calls (or
WRITE portions of WRITEREAD calls) pending at any given time. However, each line
opening permits a maximum of 15 concurrent nowait operations, which can consist of
READ, WRITE, and WRITEREAD calls in any combination.
For example, if you plan to open a line and want to have as many as 63 WRITE calls (or
write portions of WRITEREAD calls) pending at the same time, you should issue 5
FILE_OPEN_ calls that open the line for read-write use. Each call should specify a
maximum of 15 concurrent nowait operations. The limit on concurrent FILE_OPEN_
calls permits a total of 75 such operations. Of these, 63 can be WRITE calls (or WRITE
portions of WRITEREAD calls), while the remaining 12 can consist of READ calls.
Note also that each FILE_OPEN_ call must specify shared access.
When you use a line, you should handle all READ calls in either of the following ways
to prevent losing track of frame-sequencing at the application level:
Reserve one line opening for READ (and/or WRITEREAD) calls and use all other
openings for WRITE calls only.
Provide application-level frame sequencing within the data portion of all I-frames.
EnvoyACP/XF completes all queued READ requests without regard to the associated
line openings.
Multiple Pending Nowait Operations
When you open a line for nowait I/O, you supply a parameter that specifies the
maximum number of nowait I/O requests that can be pending at any one time
(0 through 15). Unless you must do otherwise, set this parameter to 15. This number is a
limit enforced by the Guardian file system before the I/O request gets passed to
EnvoyACP/XF.
For example, the value 15 means that you can have up to 15 nowait READ, WRITE,
WRITEREAD, and CONTROL requests (in any combination) pending at the application
level at any given time. A request is pending at the application level if it has not yet been
completed by a call to AWAITIO.
Error for Surpassing Limit on I/O
If you have 15 nowait I/O requests pending at the application level and you issue another
I/O request, Guardian rejects the 16th request and returns a status value.