These routines are callable from user and kernel mode, at or below softint level. The source for these routines is in oz_sys_io.c
oz_sys_io_assign assigns an I/O channel to a device. It
is sort of like an unix 'open' call, except it just points to
the device. If it is an file-structured device, you still have
to do an open I/O function to access the particular file you
want.
Input:
- processor mode to assign the channel in, user or kernel
if a user mode caller specifies kernel, it is changed to user
but a kernel mode caller can specify whichever it wants
- name of the device the channel is being assigned to
- lockmode for the channel, ie, are we going to be reading,
writing, and do we want to block other readers, writers
Output:
- completion status
- handle to the assigned I/O channel
oz_sys_io_abort aborts I/O in progress on a channel
Input:
- processor mode of I/O requests to abort. An usermode caller
can only abort I/O's issued from user mode, but a kernel
mode caller can abort both user and kernel mode I/O's.
- I/O channel that requests were made on
Output:
- status
Note:
This routine returns 'immdidately', you must still wait for
the I/O's to complete. This routine just alerts the driver
to tell it the function(s) are no longer required and
hopefully the driver is smart enough to abort processing
them as quickly as possible.
oz_sys_io starts an I/O on a channel and waits for its
completion
Input:
- processor mode of the I/O request
- I/O channel that the request is for
- event flag to user for waiting
- I/O function code
- I/O argument block size
- I/O argument block pointer
Output:
- I/O completion status
- I/O function performed
oz_sys_io_start starts an I/O on a channel
(does not wait for completion)
Input:
- processor mode of the I/O request
- I/O channel that the request is for
- [optional] where to return completion status
- [optional] event flag to increment when I/O completes
- [optional] ast routine entrypoint and parameter to call when
I/O completes
- I/O function code
- I/O argument block size
- I/O argument block pointer
Output:
- I/O queuing status
Note:
If I/O queuing status returned is other than
OZ_STARTED, the request completed synchronously.
Thus the completion status will not be set, the event flag
will not be incremented and the ast routine will not be
called.
Otherwise, all three will take place (assuming you have asked
for them). If an oz_sys_io_abort call is made, the
three completion indications will take place when the I/O
driver actually gets around to aborting the request.
oz_sys_iochan_getunitname gets the name of the device
that an I/O channel is assigned to
oz_sys_iochan_getclassname gets the name of the driver
class of the device that an
I/O channel is assigned to