[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


   NAME
        DoIO -- perform an I/O command and wait for completion

   SYNOPSIS
        error = DoIO(iORequest)
        D0           A1

        byte doio(struct iorequest *);

   FUNCTION
        This function requests a device driver to perform the I/O command
        specified in the I/O request.  This function will always wait until
        the I/O request is fully complete.

        DoIO() handles all the details, including Quick I/O, waiting for
        the request, and removing the reply message, etc..

   IMPLEMENTATION
        This function first tries to complete the IO via the "Quick I/O"
        mechanism.  The io_Flags field is always set to IOF_QUICK (0x01)
        before the internal device call.

        The LN_TYPE field is used internally to flag completion.  Active
        requests have type NT_MESSAGE.  Requests that have been replied
        have type NT_REPLYMSG.  It is illegal to start IO using a
        still active iorequest, or a request with type nt_replymsg.

   INPUTS
        iORequest - pointer to an iorequest initialized by opendevice()

   RESULTS
        error - a sign-extended copy of the io_Error field of the
                iorequest.  most device commands require that the error
                return be checked.

   SEE ALSO
        sendio(), checkio(), waitio(), abortio(), amiga.lib/beginio