summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2010-07-06 22:27:23 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2010-07-06 22:27:23 +0000
commit6f67619ee65456056e2ef5f172fe2228c17d9842 (patch)
tree0d6c758e80f922022a1614ad2e0167ffeb3dd2c8 /testsuites
parent2009-10-28 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-6f67619ee65456056e2ef5f172fe2228c17d9842.tar.bz2
2010-07-06 Joel Sherrill <joel.sherrilL@OARcorp.com>
* sp21/Makefile.am, sp21/init.c, sp21/sp21.scn: Add rtems_io_lookup_name() and simplify test. * sp21/system.h, sp21/task1.c: Removed.
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/sptests/ChangeLog6
-rw-r--r--testsuites/sptests/sp21/Makefile.am6
-rw-r--r--testsuites/sptests/sp21/init.c239
-rw-r--r--testsuites/sptests/sp21/sp21.scn46
-rw-r--r--testsuites/sptests/sp21/system.h46
-rw-r--r--testsuites/sptests/sp21/task1.c195
6 files changed, 237 insertions, 301 deletions
diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog
index db05d96ac8..8cdcfbf678 100644
--- a/testsuites/sptests/ChangeLog
+++ b/testsuites/sptests/ChangeLog
@@ -1,3 +1,9 @@
+2010-07-06 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ * sp21/Makefile.am, sp21/init.c, sp21/sp21.scn: Add
+ rtems_io_lookup_name() and simplify test.
+ * sp21/system.h, sp21/task1.c: Removed.
+
2010-07-05 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac: Add new fatal error test for termios
diff --git a/testsuites/sptests/sp21/Makefile.am b/testsuites/sptests/sp21/Makefile.am
index 7d73800cdc..1b01adb9dc 100644
--- a/testsuites/sptests/sp21/Makefile.am
+++ b/testsuites/sptests/sp21/Makefile.am
@@ -2,10 +2,8 @@
## $Id$
##
-MANAGERS = io semaphore clock
-
rtems_tests_PROGRAMS = sp21
-sp21_SOURCES = init.c task1.c system.h
+sp21_SOURCES = init.c
dist_rtems_tests_DATA = sp21.scn
dist_rtems_tests_DATA += sp21.doc
@@ -14,8 +12,6 @@ include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(top_srcdir)/../automake/compile.am
include $(top_srcdir)/../automake/leaf.am
-sp21_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
-
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
LINK_OBJS = $(sp21_OBJECTS) $(sp21_LDADD)
diff --git a/testsuites/sptests/sp21/init.c b/testsuites/sptests/sp21/init.c
index 0266567d75..cd6aef6a33 100644
--- a/testsuites/sptests/sp21/init.c
+++ b/testsuites/sptests/sp21/init.c
@@ -1,17 +1,5 @@
-/* Init
- *
- * This routine is the initialization task for this test program.
- * It is a user initialization task and has the responsibility for creating
- * and starting the tasks that make up the test. If the time of day
- * clock is required for the test, it should also be set to a known
- * value by this function.
- *
- * Input parameters:
- * argument - task argument
- *
- * Output parameters: NONE
- *
- * COPYRIGHT (c) 1989-1999.
+/*
+ * COPYRIGHT (c) 1989-2010.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -21,32 +9,217 @@
* $Id$
*/
-#define CONFIGURE_INIT
-#include "system.h"
+#include <tmacros.h>
+#include <rtems/devnull.h>
+
+
+#define PRIurtems_device_major_number PRIu32
+
+#define STUB_DRIVER_MAJOR 0x2
+#define NO_DRIVER_MAJOR 0x3
+#define INVALID_DRIVER_MAJOR \
+ (rtems_configuration_get_number_of_device_drivers() + 1)
+
+/* 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
+};
+
+void do_test_io_manager(void)
+{
+ rtems_status_code status;
+ rtems_device_major_number registered;
+ rtems_device_major_number registered_worked;
+
+ puts( "----- TESTING THE NULL DRIVER CHECKS -----" );
+
+ status = rtems_io_initialize( NO_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_initialize" );
+ puts( "rtems_io_initialize - NULL DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_open( NO_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_open" );
+ puts( "rtems_io_open - NULL DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_close( NO_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_close" );
+ puts( "rtems_io_close - NULL DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_read( NO_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_read" );
+ puts( "rtems_io_read - NULL DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_write( NO_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_write" );
+ puts( "rtems_io_write - NULL DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_control( NO_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_control" );
+ puts( "rtems_io_control - NULL DRIVER RTEMS_SUCCESSFUL" );
+
+ puts( "----- TESTING THE I/O MANAGER DIRECTIVES -----" );
+
+ status = rtems_io_initialize( STUB_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_initialize" );
+ puts( "rtems_io_initialize - STUB DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_open( STUB_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_open" );
+ puts( "rtems_io_open - STUB DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_close( STUB_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_close" );
+ puts( "rtems_io_close - STUB DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_read( STUB_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_read" );
+ puts( "rtems_io_read - STUB DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_write( STUB_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_write" );
+ puts( "rtems_io_write - STUB DRIVER RTEMS_SUCCESSFUL" );
+
+ status = rtems_io_control( STUB_DRIVER_MAJOR, 0, NULL );
+ directive_failed( status, "rtems_io_control" );
+ puts( "rtems_io_control - STUB DRIVER RTEMS_SUCCESSFUL" );
+
+ /*
+ * Invalid major number
+ */
+ puts( "----- RETURNING INVALID MAJOR NUMBER -----" );
+
+ status = rtems_io_initialize( INVALID_DRIVER_MAJOR, 0, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_NUMBER,
+ "rtems_io_initialize"
+ );
+ puts( "rtems_io_initialize - RTEMS_INVALID_NUMBER" );
+
+ status = rtems_io_open( INVALID_DRIVER_MAJOR, 0, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_NUMBER,
+ "rtems_io_open"
+ );
+ puts( "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(
+ "rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL registered"
+ );
+
+ status = rtems_io_register_driver( 0, NULL, &registered );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ADDRESS,
+ "rtems_io_register_driver"
+ );
+ puts(
+ "rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL device"
+ );
+
+ status = rtems_io_register_driver( 0, &BadDriver_Nothing, &registered );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ADDRESS,
+ "rtems_io_register_driver"
+ );
+ puts(
+ "rtems_io_register_driver - RTEMS_INVALID_ADDRESS - no callouts"
+ );
+
+ status = rtems_io_register_driver(
+ INVALID_DRIVER_MAJOR, &GoodDriver, &registered );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_NUMBER,
+ "rtems_io_register_driver"
+ );
+ puts( "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, &registered_worked );
+ directive_failed( status, "rtems_io_register_driver" );
+ puts( "rtems_io_register_driver - RTEMS_SUCCESSFUL - overwrite NULL" );
+
+ status = rtems_io_register_driver( 0, &GoodDriver, &registered );
+ if ( status == RTEMS_SUCCESSFUL )
+ printf(
+ "registered major = %" PRIurtems_device_major_number "\n", registered );
+ fatal_directive_status(
+ status,
+ RTEMS_TOO_MANY,
+ "rtems_io_register_driver"
+ );
+ puts( "rtems_io_register_driver - RTEMS_TOO_MANY - no slots" );
+
+ /* there should be a driver at major 1 -- clock, console, or stub */
+ status = rtems_io_register_driver( 1, &GoodDriver, &registered );
+ fatal_directive_status(
+ status,
+ RTEMS_RESOURCE_IN_USE,
+ "rtems_io_register_driver"
+ );
+ puts(
+ "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( "rtems_io_unregister_driver - RTEMS_SUCCESSFUL" );
+}
+
+void do_test_io_lookup_name(void)
+{
+ rtems_status_code sc;
+ rtems_driver_name_t info;
+
+ puts( "rtems_io_lookup_name( \"\", &info )" );
+ sc = rtems_io_lookup_name( "", &info );
+ fatal_directive_status( sc, RTEMS_UNSATISFIED, "lookup empty string" );
+
+ puts( "rtems_io_lookup_name( \"/dev/null\", &info )" );
+ sc = rtems_io_lookup_name( "/dev/null", &info );
+ directive_failed( sc, "lookup /dev/null" );
+}
rtems_task Init(
rtems_task_argument argument
)
{
- rtems_status_code status;
-
puts( "\n\n*** TEST 21 ***" );
- Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );
+ do_test_io_manager();
- status = rtems_task_create(
- Task_name[ 1 ],
- 1,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &Task_id[ 1 ]
- );
- directive_failed( status, "rtems_task_create of TA1" );
-
- status = rtems_task_start( Task_id[ 1 ], Task_1, 0 );
- directive_failed( status, "rtems_task_start of TA1" );
+ do_test_io_lookup_name();
- status = rtems_task_delete( RTEMS_SELF );
- directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+ puts( "*** END OF TEST 21 ***" );
+ rtems_test_exit( 0 );
}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
+
+#define CONFIGURE_MAXIMUM_TASKS 1
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_INIT
+#include <rtems/confdefs.h>
+/* end of file */
diff --git a/testsuites/sptests/sp21/sp21.scn b/testsuites/sptests/sp21/sp21.scn
index 239d8a30ec..0cb3e41e85 100644
--- a/testsuites/sptests/sp21/sp21.scn
+++ b/testsuites/sptests/sp21/sp21.scn
@@ -1,28 +1,30 @@
*** TEST 21 ***
----- TESTING THE NULL DRIVER CHECKS -----
-TA1 - rtems_io_initialize - NULL DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_open - NULL DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_close - NULL DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_read - NULL DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_write - NULL DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_control - NULL DRIVER RTEMS_SUCCESSFUL
+rtems_io_initialize - NULL DRIVER RTEMS_SUCCESSFUL
+rtems_io_open - NULL DRIVER RTEMS_SUCCESSFUL
+rtems_io_close - NULL DRIVER RTEMS_SUCCESSFUL
+rtems_io_read - NULL DRIVER RTEMS_SUCCESSFUL
+rtems_io_write - NULL DRIVER RTEMS_SUCCESSFUL
+rtems_io_control - NULL DRIVER RTEMS_SUCCESSFUL
----- TESTING THE I/O MANAGER DIRECTIVES -----
-TA1 - rtems_io_initialize - STUB DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_open - STUB DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_close - STUB DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_read - STUB DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_write - STUB DRIVER RTEMS_SUCCESSFUL
-TA1 - rtems_io_control - STUB DRIVER RTEMS_SUCCESSFUL
+rtems_io_initialize - STUB DRIVER RTEMS_SUCCESSFUL
+rtems_io_open - STUB DRIVER RTEMS_SUCCESSFUL
+rtems_io_close - STUB DRIVER RTEMS_SUCCESSFUL
+rtems_io_read - STUB DRIVER RTEMS_SUCCESSFUL
+rtems_io_write - STUB DRIVER RTEMS_SUCCESSFUL
+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
+rtems_io_initialize - RTEMS_INVALID_NUMBER
+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
+rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL registered
+rtems_io_register_driver - RTEMS_INVALID_ADDRESS - NULL device
+rtems_io_register_driver - RTEMS_INVALID_ADDRESS - no callouts
+rtems_io_register_driver - RTEMS_INVALID_NUMBER - bad major
+rtems_io_register_driver - RTEMS_SUCCESSFUL - overwrite NULL
+rtems_io_register_driver - RTEMS_TOO_MANY - no slots
+rtems_io_register_driver - RTEMS_RESOURCE_IN_USE - major in use
+rtems_io_unregister_driver - RTEMS_SUCCESSFUL
+rtems_io_lookup_name( "", &info )
+rtems_io_lookup_name( "/dev/null", &info )
*** END OF TEST 21 ***
diff --git a/testsuites/sptests/sp21/system.h b/testsuites/sptests/sp21/system.h
deleted file mode 100644
index d50859308c..0000000000
--- a/testsuites/sptests/sp21/system.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* system.h
- *
- * This include file contains information that is included in every
- * function in the test set.
- *
- * COPYRIGHT (c) 1989-1999.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#include <tmacros.h>
-
-/* functions */
-
-rtems_task Init(
- rtems_task_argument argument
-);
-
-rtems_task Task_1(
- rtems_task_argument argument
-);
-
-/* configuration information */
-
-#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
-#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
-#define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
-#define CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
-
-#define CONFIGURE_MAXIMUM_TASKS 2
-
-#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
-
-#include <rtems/confdefs.h>
-
-/* global variables */
-
-TEST_EXTERN rtems_id Task_id[ 4 ]; /* array of task ids */
-TEST_EXTERN rtems_name Task_name[ 4 ]; /* array of task names */
-
-/* end of include file */
diff --git a/testsuites/sptests/sp21/task1.c b/testsuites/sptests/sp21/task1.c
deleted file mode 100644
index 91d9d1b0e9..0000000000
--- a/testsuites/sptests/sp21/task1.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* Task_1
- *
- * This routine serves as a test task. It tests the I/O manager.
- *
- * Input parameters:
- * argument - task argument
- *
- * Output parameters: NONE
- *
- * COPYRIGHT (c) 1989-2002.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#include "system.h"
-
-/* rtems_device_major_number is a typedef to uint32_t */
-#define PRIurtems_device_major_number PRIu32
-
-#define STUB_DRIVER_MAJOR 0x2
-#define NO_DRIVER_MAJOR 0x3
-#define INVALID_DRIVER_MAJOR \
- (rtems_configuration_get_number_of_device_drivers() + 1)
-
-/* 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_device_major_number registered;
- rtems_device_major_number registered_worked;
-
- puts( "----- TESTING THE NULL DRIVER CHECKS -----" );
-
- status = rtems_io_initialize( NO_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_initialize" );
- puts( "TA1 - rtems_io_initialize - NULL DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_open( NO_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_open" );
- puts( "TA1 - rtems_io_open - NULL DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_close( NO_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_close" );
- puts( "TA1 - rtems_io_close - NULL DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_read( NO_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_read" );
- puts( "TA1 - rtems_io_read - NULL DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_write( NO_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_write" );
- puts( "TA1 - rtems_io_write - NULL DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_control( NO_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_control" );
- puts( "TA1 - rtems_io_control - NULL DRIVER RTEMS_SUCCESSFUL" );
-
- puts( "----- TESTING THE I/O MANAGER DIRECTIVES -----" );
-
- status = rtems_io_initialize( STUB_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_initialize" );
- puts( "TA1 - rtems_io_initialize - STUB DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_open( STUB_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_open" );
- puts( "TA1 - rtems_io_open - STUB DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_close( STUB_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_close" );
- puts( "TA1 - rtems_io_close - STUB DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_read( STUB_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_read" );
- puts( "TA1 - rtems_io_read - STUB DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_write( STUB_DRIVER_MAJOR, 0, NULL );
- directive_failed( status, "rtems_io_write" );
- puts( "TA1 - rtems_io_write - STUB DRIVER RTEMS_SUCCESSFUL" );
-
- status = rtems_io_control( STUB_DRIVER_MAJOR, 0, NULL );
- 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 );
- fatal_directive_status(
- status,
- RTEMS_INVALID_NUMBER,
- "rtems_io_initialize"
- );
- puts( "TA1 - rtems_io_initialize - RTEMS_INVALID_NUMBER" );
-
- status = rtems_io_open( INVALID_DRIVER_MAJOR, 0, NULL );
- fatal_directive_status(
- status,
- RTEMS_INVALID_NUMBER,
- "rtems_io_open"
- );
- 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, &registered );
- 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, &registered );
- 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, &registered );
- 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, &registered_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, &registered );
- if ( status == RTEMS_SUCCESSFUL )
- printf( "registered major = %" PRIurtems_device_major_number "\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 should be a driver at major 1 -- clock, console, or stub */
- status = rtems_io_register_driver( 1, &GoodDriver, &registered );
- 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 );
-}