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