diff options
Diffstat (limited to 'testsuites')
-rw-r--r-- | testsuites/sptests/ChangeLog | 4 | ||||
-rw-r--r-- | testsuites/sptests/sp21/init.c | 48 | ||||
-rw-r--r-- | testsuites/sptests/sp21/sp21.doc | 2 | ||||
-rw-r--r-- | testsuites/sptests/sp21/sp21.scn | 1 |
4 files changed, 53 insertions, 2 deletions
diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog index eaf429a3e2..d612194d37 100644 --- a/testsuites/sptests/ChangeLog +++ b/testsuites/sptests/ChangeLog @@ -1,3 +1,7 @@ +2011-05-13 Sebastian Huber <sebastian.huber@embedded-brains.de> + + * sp21/init.c, sp21/sp21.doc sp21/sp21.scn: New test cases. + 2011-05-06 Joel Sherrill <joel.sherrill@oarcorp.com> * sp39/init.c: Fix tests broken in warning pass. diff --git a/testsuites/sptests/sp21/init.c b/testsuites/sptests/sp21/init.c index ed2649caa9..5ad0c14598 100644 --- a/testsuites/sptests/sp21/init.c +++ b/testsuites/sptests/sp21/init.c @@ -15,12 +15,14 @@ #include <tmacros.h> #include <rtems/devnull.h> - +#include <rtems/devzero.h> +#include <rtems/libio.h> #define PRIurtems_device_major_number PRIu32 #define STUB_DRIVER_MAJOR 0x2 -#define NO_DRIVER_MAJOR 0x3 +#define ZERO_DRIVER_MAJOR 0x3 +#define NO_DRIVER_MAJOR 0x4 #define INVALID_DRIVER_MAJOR \ (rtems_configuration_get_number_of_device_drivers() + 1) @@ -204,6 +206,45 @@ void do_test_io_lookup_name(void) directive_failed( sc, "lookup /dev/null" ); } +void do_test_zero_driver(void) +{ + rtems_status_code sc = RTEMS_SUCCESSFUL; + char in = 'I'; + rtems_libio_rw_args_t rw_in = { + .buffer = &in, + .count = sizeof(in) + }; + char out = 'O'; + rtems_libio_rw_args_t rw_out = { + .buffer = &out, + .count = sizeof(out) + }; + + puts( "----- TESTING THE ZERO DRIVER CHECKS -----" ); + + sc = rtems_io_initialize( ZERO_DRIVER_MAJOR, 0, NULL ); + rtems_test_assert( sc == RTEMS_TOO_MANY ); + + sc = rtems_io_open( ZERO_DRIVER_MAJOR, 0, NULL ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + + sc = rtems_io_close( ZERO_DRIVER_MAJOR, 0, NULL ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + + sc = rtems_io_read( ZERO_DRIVER_MAJOR, 0, &rw_in ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + rtems_test_assert( in == 0 ); + rtems_test_assert( rw_in.bytes_moved == sizeof(in) ); + + sc = rtems_io_write( ZERO_DRIVER_MAJOR, 0, &rw_out ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); + rtems_test_assert( out == 'O' ); + rtems_test_assert( rw_out.bytes_moved == sizeof(out) ); + + sc = rtems_io_control( ZERO_DRIVER_MAJOR, 0, NULL ); + rtems_test_assert( sc == RTEMS_IO_ERROR ); +} + rtems_task Init( rtems_task_argument argument ) @@ -214,6 +255,8 @@ rtems_task Init( do_test_io_lookup_name(); + do_test_zero_driver(); + puts( "*** END OF TEST 21 ***" ); rtems_test_exit( 0 ); } @@ -223,6 +266,7 @@ rtems_task Init( #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER #define CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER #define CONFIGURE_MAXIMUM_TASKS 1 diff --git a/testsuites/sptests/sp21/sp21.doc b/testsuites/sptests/sp21/sp21.doc index 00e769a10d..10e626c9da 100644 --- a/testsuites/sptests/sp21/sp21.doc +++ b/testsuites/sptests/sp21/sp21.doc @@ -25,3 +25,5 @@ concepts: b. Verifies all I/O manager directives call and return from the driver entry points in the driver address table. + + c. Check that zero driver works. diff --git a/testsuites/sptests/sp21/sp21.scn b/testsuites/sptests/sp21/sp21.scn index d13e32e65d..6c099dfc13 100644 --- a/testsuites/sptests/sp21/sp21.scn +++ b/testsuites/sptests/sp21/sp21.scn @@ -28,4 +28,5 @@ rtems_io_unregister_driver - RTEMS_SUCCESSFUL rtems_io_lookup_name( "", &info ) - RTEMS_UNSATISFIED rtems_io_lookup_name( "/dev", &info ) - RTEMS_UNSATISFIED rtems_io_lookup_name( "/dev/null", &info ) - RTEMS_SUCCESSFUL +----- TESTING THE ZERO DRIVER CHECKS ----- *** END OF TEST 21 *** |