/* io.h * * This include file contains all the constants and structures associated * with the Input/Output Manager. This manager provides a well defined * mechanism for accessing device drivers and a structured methodology for * organizing device drivers. * * Directives provided are: * * + initialize a device driver * + open a device driver * + close a device driver * + read from a device driver * + write to a device driver * + special device services * * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. * On-Line Applications Research Corporation (OAR). * All rights assigned to U.S. Government, 1994. * * This material may be reproduced by or for the U.S. Government pursuant * to the copyright license under the clause at DFARS 252.227-7013. This * notice must appear in all copies of this file and its derivatives. * * $Id$ */ #ifndef __RTEMS_IO_h #define __RTEMS_IO_h #ifdef __cplusplus extern "C" { #endif #include /* * The following type defines the set of IO operations which are * recognized by _IO_Handler and can be supported by a RTEMS * device driver. */ typedef enum { IO_INITIALIZE_OPERATION = 0, IO_OPEN_OPERATION = 1, IO_CLOSE_OPERATION = 2, IO_READ_OPERATION = 3, IO_WRITE_OPERATION = 4, IO_CONTROL_OPERATION = 5 } IO_operations; /* * The following declare the data required to manage the Device Driver * Address Table. */ EXTERN unsigned32 _IO_Number_of_drivers; EXTERN rtems_driver_address_table *_IO_Driver_address_table; /* * _IO_Manager_initialization * * DESCRIPTION: * * This routine performs the initialization necessary for this manager. */ STATIC INLINE void _IO_Manager_initialization( rtems_driver_address_table *driver_table, unsigned32 number_of_drivers ); /* * rtems_io_initialize * * DESCRIPTION: * * This routine implements the rtems_io_initialize directive. It is invoked * to initialize a device driver or an individual device. */ rtems_status_code rtems_io_initialize( rtems_device_major_number major, rtems_device_minor_number minor, void *argument, unsigned32 *return_value ); /* * rtems_io_open * * DESCRIPTION: * * This routine implements the rtems_io_open directive. It is invoked * to open a device. */ rtems_status_code rtems_io_open( rtems_device_major_number major, rtems_device_minor_number minor, void *argument, unsigned32 *return_value ); /* * rtems_io_close * * DESCRIPTION: * * This routine implements the rtems_io_close directive. It is invoked * to close a device. */ rtems_status_code rtems_io_close( rtems_device_major_number major, rtems_device_minor_number minor, void *argument, unsigned32 *return_value ); /* * rtems_io_read * * DESCRIPTION: * * This routine implements the rtems_io_read directive. It is invoked * to read from a device. */ rtems_status_code rtems_io_read( rtems_device_major_number major, rtems_device_minor_number minor, void *argument, unsigned32 *return_value ); /* * rtems_io_write * * DESCRIPTION: * * This routine implements the rtems_io_write directive. It is invoked * to write to a device. */ rtems_status_code rtems_io_write( rtems_device_major_number major, rtems_device_minor_number minor, void *argument, unsigned32 *return_value ); /* * rtems_io_control * * DESCRIPTION: * * This routine implements the rtems_io_control directive. It is invoked * to perform a device specific operation on a device. */ rtems_status_code rtems_io_control( rtems_device_major_number major, rtems_device_minor_number minor, void *argument, unsigned32 *return_value ); /* * _IO_Initialize_all_drivers * * DESCRIPTION: * * This routine initializes all of the device drivers configured * in the Device Driver Address Table. */ void _IO_Initialize_all_drivers( void ); /* * _IO_Handler_routine * * DESCRIPTION: * * This routine provides the common foundation for all of the IO * Manager's directives. */ rtems_status_code _IO_Handler_routine( IO_operations operation, rtems_device_major_number major, rtems_device_minor_number minor, void *argument, unsigned32 *return_value ); #include #ifdef __cplusplus } #endif #endif /* end of include file */