summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/sp21
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2011-05-13 13:50:51 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2011-05-13 13:50:51 +0000
commit99cb7204d053e6b61a6f71229b3d9e8638e65467 (patch)
treebe5340e3f35d9fa0c987dd0ceeac1882c229fb18 /testsuites/sptests/sp21
parent2011-05-13 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-99cb7204d053e6b61a6f71229b3d9e8638e65467.tar.bz2
2011-05-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
* sp21/init.c, sp21/sp21.doc sp21/sp21.scn: New test cases.
Diffstat (limited to 'testsuites/sptests/sp21')
-rw-r--r--testsuites/sptests/sp21/init.c48
-rw-r--r--testsuites/sptests/sp21/sp21.doc2
-rw-r--r--testsuites/sptests/sp21/sp21.scn1
3 files changed, 49 insertions, 2 deletions
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 ***