diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-05-29 18:37:45 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-05-29 18:37:45 +0000 |
commit | b3117727f502338f025ef1364c3c32b2e54726bd (patch) | |
tree | 592e231fbb78d3904f2f4aecf1b4bfad607120fa /testsuites/sptests/sp21 | |
parent | 2007-05-29 Joel Sherrill <joel.sherrill@OARcorp.com> (diff) | |
download | rtems-b3117727f502338f025ef1364c3c32b2e54726bd.tar.bz2 |
2007-05-29 Joel Sherrill <joel.sherrill@OARcorp.com>
* sp21/sp21.scn, sp21/task1.c: rtems_io_register_driver and
rtems_io_unregister_driver did not have any test code.
Diffstat (limited to 'testsuites/sptests/sp21')
-rw-r--r-- | testsuites/sptests/sp21/sp21.scn | 9 | ||||
-rw-r--r-- | testsuites/sptests/sp21/task1.c | 89 |
2 files changed, 97 insertions, 1 deletions
diff --git a/testsuites/sptests/sp21/sp21.scn b/testsuites/sptests/sp21/sp21.scn index c6392e3ea3..239d8a30ec 100644 --- a/testsuites/sptests/sp21/sp21.scn +++ b/testsuites/sptests/sp21/sp21.scn @@ -16,4 +16,13 @@ TA1 - rtems_io_control - STUB DRIVER RTEMS_SUCCESSFUL ----- RETURNING INVALID MAJOR NUMBER ----- TA1 - rtems_io_initialize - RTEMS_INVALID_NUMBER TA1 - rtems_io_open - RTEMS_INVALID_NUMBER +----- EXERCISE DRIVER REGISTER ----- +TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL registered +TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL device +TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - no callouts +TA1 - rtems_io_register_driver - RTEMS_INVALID_NUMBER - bad major +TA1 - rtems_io_register_driver - RTEMS_SUCCESSFUL - overwrite NULL +TA1 - rtems_io_register_driver - RTEMS_TOO_MANY - no slots +TA1 - rtems_io_register_driver - RTEMS_RESOURCE_IN_USE - major in use +TA1 - rtems_io_unregister_driver - RTEMS_SUCCESSFUL *** END OF TEST 21 *** diff --git a/testsuites/sptests/sp21/task1.c b/testsuites/sptests/sp21/task1.c index addb5e63bc..f2b7bf6f45 100644 --- a/testsuites/sptests/sp21/task1.c +++ b/testsuites/sptests/sp21/task1.c @@ -24,11 +24,19 @@ #define INVALID_DRIVER_MAJOR (Configuration.number_of_device_drivers + 1) /* #define INVALID_DRIVER_MAJOR 0xffffffff */ +/* driver entries to use with io_register */ +rtems_driver_address_table GoodDriver = DEVNULL_DRIVER_TABLE_ENTRY; +rtems_driver_address_table BadDriver_Nothing = { + NULL, NULL, NULL, NULL, NULL, NULL +}; + rtems_task Task_1( rtems_task_argument argument ) { - rtems_status_code status; + rtems_status_code status; + rtems_device_major_number registered; + rtems_device_major_number registered_worked; puts( "----- TESTING THE NULL DRIVER CHECKS -----" ); @@ -82,6 +90,10 @@ rtems_task Task_1( directive_failed( status, "rtems_io_control" ); puts( "TA1 - rtems_io_control - STUB DRIVER RTEMS_SUCCESSFUL" ); + + /* + * Invalid major number + */ puts( "----- RETURNING INVALID MAJOR NUMBER -----" ); status = rtems_io_initialize( INVALID_DRIVER_MAJOR, 0, NULL ); @@ -100,6 +112,81 @@ rtems_task Task_1( ); puts( "TA1 - rtems_io_open - RTEMS_INVALID_NUMBER" ); + /* + * Exercise the io register driver directive + */ + puts( "----- EXERCISE DRIVER REGISTER -----" ); + + status = rtems_io_register_driver( 0, &GoodDriver, NULL ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_io_register_driver" + ); + puts( + "TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL registered" + ); + + status = rtems_io_register_driver( 0, NULL, ®istered ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_io_register_driver" + ); + puts( + "TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL device" + ); + + status = rtems_io_register_driver( 0, &BadDriver_Nothing, ®istered ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_io_register_driver" + ); + puts( + "TA1 - rtems_io_register_driver - RTEMS_INVALID_ADDRESS - no callouts" + ); + + status = rtems_io_register_driver( + INVALID_DRIVER_MAJOR, &GoodDriver, ®istered ); + fatal_directive_status( + status, + RTEMS_INVALID_NUMBER, + "rtems_io_register_driver" + ); + puts( "TA1 - rtems_io_register_driver - RTEMS_INVALID_NUMBER - bad major" ); + + /* this has to succeed to overwrite NULL driver entry required above. */ + status = rtems_io_register_driver( 0, &GoodDriver, ®istered_worked ); + directive_failed( status, "rtems_io_register_driver" ); + puts( "TA1 - rtems_io_register_driver - RTEMS_SUCCESSFUL - overwrite NULL" ); + + status = rtems_io_register_driver( 0, &GoodDriver, ®istered ); + if ( status == RTEMS_SUCCESSFUL ) + printf( "registered major = %d\n", registered ); + fatal_directive_status( + status, + RTEMS_TOO_MANY, + "rtems_io_register_driver" + ); + puts( "TA1 - rtems_io_register_driver - RTEMS_TOO_MANY - no slots" ); + + /* there shuld be a driver at major 1 -- clock, console, or stub */ + status = rtems_io_register_driver( 1, &GoodDriver, ®istered ); + fatal_directive_status( + status, + RTEMS_RESOURCE_IN_USE, + "rtems_io_register_driver" + ); + puts( + "TA1 - rtems_io_register_driver - RTEMS_RESOURCE_IN_USE - major in use" + ); + + /* this should unregister the device driver we registered above */ + status = rtems_io_unregister_driver( registered_worked ); + directive_failed( status, "rtems_io_unregister_driver" ); + puts( "TA1 - rtems_io_unregister_driver - RTEMS_SUCCESSFUL" ); + puts( "*** END OF TEST 21 ***" ); rtems_test_exit( 0 ); } |