From 9c556023f0d8d47bf5ce39a524e838936db7701f Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 29 May 2007 19:56:35 +0000 Subject: 2007-05-29 Joel Sherrill * sapi/Makefile.am, sapi/include/rtems/io.h, sapi/src/io.c: Split into one function per file execpt io.c which contains required initialization methods. * sapi/src/ioclose.c, sapi/src/iocontrol.c, sapi/src/iodata.c, sapi/src/ioinitialize.c, sapi/src/ioopen.c, sapi/src/ioread.c, sapi/src/ioregisterdriver.c, sapi/src/iounregisterdriver.c, sapi/src/iowrite.c: New files. --- cpukit/sapi/src/io.c | 296 +-------------------------------------------------- 1 file changed, 4 insertions(+), 292 deletions(-) (limited to 'cpukit/sapi/src/io.c') diff --git a/cpukit/sapi/src/io.c b/cpukit/sapi/src/io.c index f200a514ac..bd5cd4f0ec 100644 --- a/cpukit/sapi/src/io.c +++ b/cpukit/sapi/src/io.c @@ -1,8 +1,7 @@ /* - * Input/Output Manager + * Input/Output Manager - Initialize Device Driver Subsystem * - * - * COPYRIGHT (c) 1989-1999. + * COPYRIGHT (c) 1989-2007. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -24,8 +23,7 @@ #include -/*PAGE - * +/* * _IO_Manager_initialization * * The IO manager has been extended to support runtime driver @@ -81,8 +79,7 @@ void _IO_Manager_initialization( number_of_drivers = drivers_in_table; } -/*PAGE - * +/* * _IO_Initialize_all_drivers * * This routine initializes all device drivers @@ -99,288 +96,3 @@ void _IO_Initialize_all_drivers( void ) for ( major=0 ; major < _IO_Number_of_drivers ; major ++ ) (void) rtems_io_initialize( major, 0, NULL ); } - -/*PAGE - * - * rtems_io_register_driver - * - * Register a driver into the device driver table. - * - * Input Paramters: - * major - device major number (0 means allocate - * a number) - * driver_table - driver callout function table - * registered_major - the major number which is registered - * - * Output Parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_io_register_driver( - rtems_device_major_number major, - rtems_driver_address_table *driver_table, - rtems_device_major_number *registered_major -) -{ - - /* - * Validate the pointer data and contents passed in - */ - if ( !driver_table ) - return RTEMS_INVALID_ADDRESS; - - if ( !registered_major ) - return RTEMS_INVALID_ADDRESS; - - if ( !driver_table->initialization_entry && !driver_table->open_entry ) - return RTEMS_INVALID_ADDRESS; - - *registered_major = 0; - - /* - * The requested major number is higher than what is configured. - */ - if ( major >= _IO_Number_of_drivers ) - return RTEMS_INVALID_NUMBER; - - /* - * Test for initialise/open being present to indicate the driver slot is - * in use. - */ - - if ( major == 0 ) { - boolean found = FALSE; - for ( major = _IO_Number_of_drivers - 1 ; major ; major-- ) { - if ( !_IO_Driver_address_table[major].initialization_entry && - !_IO_Driver_address_table[major].open_entry ) { - found = TRUE; - break; - } - } - - if ( !found ) - return RTEMS_TOO_MANY; - } - - if ( _IO_Driver_address_table[major].initialization_entry || - _IO_Driver_address_table[major].open_entry ) - return RTEMS_RESOURCE_IN_USE; - - - _IO_Driver_address_table[major] = *driver_table; - *registered_major = major; - - rtems_io_initialize( major, 0, NULL ); - - return RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * rtems_io_unregister_driver - * - * Unregister a driver from the device driver table. - * - * Input Paramters: - * major - device major number - * - * Output Parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_io_unregister_driver( - rtems_device_major_number major -) -{ - if ( major < _IO_Number_of_drivers ) { - memset( - &_IO_Driver_address_table[major], - 0, - sizeof( rtems_driver_address_table ) - ); - return RTEMS_SUCCESSFUL; - } - return RTEMS_UNSATISFIED; -} - -/*PAGE - * - * rtems_io_initialize - * - * This routine is the initialization directive of the IO manager. - * - * Input Paramters: - * major - device driver number - * minor - device number - * argument - pointer to argument(s) - * - * Output Parameters: - * returns - return code - */ - -rtems_status_code rtems_io_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *argument -) -{ - rtems_device_driver_entry callout; - - if ( major >= _IO_Number_of_drivers ) - return RTEMS_INVALID_NUMBER; - - callout = _IO_Driver_address_table[major].initialization_entry; - return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * rtems_io_open - * - * This routine is the open directive of the IO manager. - * - * Input Paramters: - * major - device driver number - * minor - device number - * argument - pointer to argument(s) - * - * Output Parameters: - * returns - return code - */ - -rtems_status_code rtems_io_open( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *argument -) -{ - rtems_device_driver_entry callout; - - if ( major >= _IO_Number_of_drivers ) - return RTEMS_INVALID_NUMBER; - - callout = _IO_Driver_address_table[major].open_entry; - return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * rtems_io_close - * - * This routine is the close directive of the IO manager. - * - * Input Paramters: - * major - device driver number - * minor - device number - * argument - pointer to argument(s) - * - * Output Parameters: - * returns - return code - */ - -rtems_status_code rtems_io_close( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *argument -) -{ - rtems_device_driver_entry callout; - - if ( major >= _IO_Number_of_drivers ) - return RTEMS_INVALID_NUMBER; - - callout = _IO_Driver_address_table[major].close_entry; - return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * rtems_io_read - * - * This routine is the read directive of the IO manager. - * - * Input Paramters: - * major - device driver number - * minor - device number - * argument - pointer to argument(s) - * - * Output Parameters: - * returns - return code - */ - -rtems_status_code rtems_io_read( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *argument -) -{ - rtems_device_driver_entry callout; - - if ( major >= _IO_Number_of_drivers ) - return RTEMS_INVALID_NUMBER; - - callout = _IO_Driver_address_table[major].read_entry; - return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * rtems_io_write - * - * This routine is the write directive of the IO manager. - * - * Input Paramters: - * major - device driver number - * minor - device number - * argument - pointer to argument(s) - * - * Output Parameters: - * returns - return code - */ - -rtems_status_code rtems_io_write( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *argument -) -{ - rtems_device_driver_entry callout; - - if ( major >= _IO_Number_of_drivers ) - return RTEMS_INVALID_NUMBER; - - callout = _IO_Driver_address_table[major].write_entry; - return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * rtems_io_control - * - * This routine is the control directive of the IO manager. - * - * Input Paramters: - * major - device driver number - * minor - device number - * argument - pointer to argument(s) - * - * Output Parameters: - * returns - return code - */ - -rtems_status_code rtems_io_control( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *argument -) -{ - rtems_device_driver_entry callout; - - if ( major >= _IO_Number_of_drivers ) - return RTEMS_INVALID_NUMBER; - - callout = _IO_Driver_address_table[major].control_entry; - return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL; -} -- cgit v1.2.3