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

        IFND    EXEC_IO_I
EXEC_IO_I       SET     1
**
**      $Filename: exec/io.i $
**      $Release: 2.04 Includes, V37.4 $
**      $Revision: 36.4 $
**      $Date: 90/05/10 $
**
**      Message structures used for device communication
**
**      (C) Copyright 1985-1999 Amiga, Inc.
**          All Rights Reserved
**

    IFND EXEC_PORTS_I
    INCLUDE "exec/ports.i"
    ENDC        ; EXEC_PORTS_I

    IFND EXEC_LIBRARIES_I
    INCLUDE "exec/libraries.i"
    ENDC        ; EXEC_LIBRARIES_I


;----------------------------------------------------------------
;
;   IO Request Structures
;
;----------------------------------------------------------------

;------ Required portion of IO request:

 STRUCTURE  IO,MN_SIZE
    APTR    IO_DEVICE                   ; device node pointer
    APTR    IO_UNIT                     ; unit (driver private)
    UWORD   IO_COMMAND                  ; device command
    UBYTE   IO_FLAGS                    ; special flags
    BYTE    IO_ERROR                    ; error or warning code
    LABEL   IO_SIZE


;------ Standard IO request extension:

    ULONG   IO_ACTUAL                   ; actual # of bytes transfered
    ULONG   IO_LENGTH                   ; requested # of bytes transfered
    APTR    IO_DATA                     ; pointer to data area
    ULONG   IO_OFFSET                   ; offset for seeking devices
    LABEL   IOSTD_SIZE


;------ IO_FLAGS bit definitions:

    BITDEF  IO,QUICK,0                  ; complete IO quickly


;----------------------------------------------------------------
;
;   Standard Device Library Functions
;
;----------------------------------------------------------------

            LIBINIT

            LIBDEF  DEV_BEGINIO ; process IO request
            LIBDEF  DEV_ABORTIO ; abort IO request


;----------------------------------------------------------------
;
;   IO Function Macros
;
;----------------------------------------------------------------

BEGINIO     MACRO
            LINKLIB DEV_BEGINIO,IO_DEVICE(A1)
            ENDM

ABORTIO     MACRO
            LINKLIB DEV_ABORTIO,IO_DEVICE(A1)
            ENDM


;----------------------------------------------------------------
;
;   Standard Device Command Definitions
;
;----------------------------------------------------------------

;------ Command definition macro:
DEVINIT     MACRO   ; [baseOffset]
            IFC     '\1',''
CMD_COUNT   SET     CMD_NONSTD
            ENDC
            IFNC    '\1',''
CMD_COUNT   SET     \1
            ENDC
            ENDM

DEVCMD      MACRO   ; cmdname
\1          EQU     CMD_COUNT
CMD_COUNT   SET     CMD_COUNT+1
            ENDM


;------ Standard device commands:

            DEVINIT 0

            DEVCMD  CMD_INVALID ; invalid command
            DEVCMD  CMD_RESET           ; reset as if just inited
            DEVCMD  CMD_READ            ; standard read
            DEVCMD  CMD_WRITE           ; standard write
            DEVCMD  CMD_UPDATE          ; write out all buffers
            DEVCMD  CMD_CLEAR           ; clear all buffers
            DEVCMD  CMD_STOP            ; hold current and queued
            DEVCMD  CMD_START           ; restart after stop
            DEVCMD  CMD_FLUSH           ; abort entire queue


;------ First non-standard device command value:

            DEVCMD  CMD_NONSTD

        ENDC    ; EXEC_IO_I