summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/sp43
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-01-29 21:53:04 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-01-29 21:53:04 +0000
commit6e315132619fcd3454a373e9059c3d7f5fba70dc (patch)
tree7efeca4acae1254090b5f379d5177738dc4918f2 /testsuites/sptests/sp43
parent2008-01-29 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-6e315132619fcd3454a373e9059c3d7f5fba70dc.tar.bz2
2008-01-29 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac, sp02/task1.c, sp24/resume.c, sp30/resume.c, sp41/init.c, sp42/init.c: Add new Object Services collection. This changed the name of a few previously public but undocumented services and added a some new services. * sp43/.cvsignore, sp43/Makefile.am, sp43/init.c, sp43/sp43.scn, sp43/system.h: New files.
Diffstat (limited to 'testsuites/sptests/sp43')
-rw-r--r--testsuites/sptests/sp43/.cvsignore2
-rw-r--r--testsuites/sptests/sp43/Makefile.am27
-rw-r--r--testsuites/sptests/sp43/init.c272
-rw-r--r--testsuites/sptests/sp43/sp43.scn58
-rw-r--r--testsuites/sptests/sp43/system.h37
5 files changed, 396 insertions, 0 deletions
diff --git a/testsuites/sptests/sp43/.cvsignore b/testsuites/sptests/sp43/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/testsuites/sptests/sp43/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/testsuites/sptests/sp43/Makefile.am b/testsuites/sptests/sp43/Makefile.am
new file mode 100644
index 0000000000..4b6245ca51
--- /dev/null
+++ b/testsuites/sptests/sp43/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = sp43.exe
+sp43_exe_SOURCES = init.c system.h
+
+dist_rtems_tests_DATA = sp43.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+sp43_exe_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(sp43_exe_OBJECTS) $(sp43_exe_LDADD)
+LINK_LIBS = $(sp43_exe_LDLIBS)
+
+sp43.exe$(EXEEXT): $(sp43_exe_OBJECTS) $(sp43_exe_DEPENDENCIES)
+ @rm -f sp43.exe$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/sp43/init.c b/testsuites/sptests/sp43/init.c
new file mode 100644
index 0000000000..6ce8d05a92
--- /dev/null
+++ b/testsuites/sptests/sp43/init.c
@@ -0,0 +1,272 @@
+/*
+ * Exercise Object Manager Services
+ *
+ * COPYRIGHT (c) 1989-2008.
+ * 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$
+ */
+
+#define TEST_INIT
+#include "system.h"
+
+#undef rtems_build_id
+#undef rtems_build_name
+#undef rtems_object_id_api_maximum
+#undef rtems_object_id_api_minimum
+#undef rtems_object_id_get_api
+#undef rtems_object_id_get_class
+#undef rtems_object_id_get_index
+#undef rtems_object_id_get_node
+
+void print_class_info(
+ uint32_t api,
+ uint32_t class,
+ rtems_object_api_class_information *info
+)
+{
+ printf(
+ "%s API %s Information\n"
+ " minimum id : 0x%08x maximum id: 0x%08x\n"
+ " maximum : %7d available : %d\n"
+ " auto_extend : %s\n",
+ rtems_object_get_api_name(api),
+ rtems_object_get_api_class_name(api, class),
+ info->minimum_id,
+ info->maximum_id,
+ info->maximum,
+ info->unallocated,
+ ((info->auto_extend) ? "yes" : "no")
+ );
+}
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_id main_task;
+ rtems_name main_name;
+ rtems_id tmpId;
+ rtems_name tmpName;
+ char name[5];
+ char *ptr;
+ const char newName[5] = "New1";
+ uint32_t part;
+ rtems_object_api_class_information info;
+
+
+ puts( "\n\n*** TEST 43 ***" );
+
+ main_task = rtems_task_self();
+
+ puts( "rtems_object_get_classic_name - INVALID_ADDRESS" );
+ status = rtems_object_get_classic_name( main_task, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ADDRESS,
+ "rtems_object_get_classic_name"
+ );
+
+ puts( "rtems_object_get_classic_name - INVALID_ID" );
+ status = rtems_object_get_classic_name( main_task + 5, &tmpId );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ID,
+ "rtems_object_get_classic_name"
+ );
+
+ status = rtems_object_get_classic_name( main_task, &main_name );
+ directive_failed( status, "rtems_object_get_classic_name" );
+ put_name( main_name, FALSE );
+ puts( " - name returned by rtems_object_get_classic_name" );
+
+ tmpName = rtems_build_name( 'T', 'E', 'M', 'P' );
+ put_name( tmpName, FALSE );
+ puts( " - rtems_build_name for TEMP" );
+
+
+ /*
+ * rtems_object_get_name - cases
+ */
+ puts( "rtems_object_get_name - bad id for class with instances" );
+ ptr = rtems_object_get_name( main_task + 5, 5, name );
+ rtems_test_assert(ptr == NULL);
+
+ puts( "rtems_object_get_name - bad id for class without instances" );
+ ptr = rtems_object_get_name(
+ rtems_build_id( OBJECTS_CLASSIC_API, OBJECTS_RTEMS_BARRIERS, 1, 1 ),
+ 5,
+ name
+ );
+ rtems_test_assert(ptr == NULL);
+
+ puts( "rtems_object_get_name - bad length" );
+ ptr = rtems_object_get_name( main_task, 0, name );
+ rtems_test_assert(ptr == NULL);
+
+ puts( "rtems_object_get_name - bad pointer" );
+ ptr = rtems_object_get_name( main_task, 5, NULL );
+ rtems_test_assert(ptr == NULL);
+
+ ptr = rtems_object_get_name( main_task, 5, name );
+ rtems_test_assert(ptr != NULL);
+ printf( "rtems_object_get_name returned (%s) for init task\n", ptr );
+
+ /*
+ * rtems_object_set_name - change name of init task
+ */
+
+ puts( "rtems_object_set_name - change name of init task" );
+ status = rtems_object_set_name( main_task, newName );
+ directive_failed( status, "rtems_object_set_name" );
+
+ status = rtems_object_get_classic_name( main_task, &main_name );
+ directive_failed( status, "rtems_object_get_classic_name" );
+ put_name( main_name, FALSE );
+ puts( " - name returned by rtems_object_get_classic_name" );
+
+ ptr = rtems_object_get_name( main_task, 5, name );
+ rtems_test_assert(ptr != NULL);
+ printf( "rtems_object_get_name returned (%s) for init task\n", ptr );
+
+ /*
+ * Exercise id build and extraction routines
+ */
+
+ puts( "rtems_build_id - build an id to match init task" );
+ tmpId = rtems_build_id( OBJECTS_CLASSIC_API, OBJECTS_RTEMS_TASKS, 1, 1 ),
+ assert( tmpId == main_task );
+
+ puts( "rtems_object_id_get_api - OK" );
+ part = rtems_object_id_get_api( main_task );
+ assert( part == OBJECTS_CLASSIC_API );
+
+ puts( "rtems_object_id_get_class - OK" );
+ part = rtems_object_id_get_class( main_task );
+ assert( part == OBJECTS_RTEMS_TASKS );
+
+ puts( "rtems_object_id_get_node - OK" );
+ part = rtems_object_id_get_node( main_task );
+ assert( part == 1 );
+
+ puts( "rtems_object_id_get_index - OK" );
+ part = rtems_object_id_get_index( main_task );
+ assert( part == 1 );
+
+ /*
+ * Start another screen and do the API/Class min/max routines
+ */
+ rtems_test_pause();
+
+ printf( "rtems_object_id_api_minimum returned %d\n",
+ rtems_object_id_api_minimum() );
+ printf( "rtems_object_id_api_maximum returned %d\n",
+ rtems_object_id_api_maximum() );
+
+ printf( "rtems_object_api_minimum_class(0) returned %d\n",
+ rtems_object_api_minimum_class(0) );
+ printf( "rtems_object_api_maximum_class(0) returned %d\n",
+ rtems_object_api_maximum_class(0) );
+
+ printf( "rtems_object_api_minimum_class(0) returned %d\n",
+ rtems_object_api_minimum_class(0) );
+ printf( "rtems_object_api_maximum_class(0) returned %d\n",
+ rtems_object_api_maximum_class(0) );
+
+ printf( "rtems_object_api_minimum_class(OBJECTS_INTERNAL_API) returned %d\n",
+ rtems_object_api_minimum_class(OBJECTS_INTERNAL_API) );
+ printf( "rtems_object_api_maximum_class(OBJECTS_INTERNAL_API) returned %d\n",
+ rtems_object_api_maximum_class(OBJECTS_INTERNAL_API) );
+
+ printf( "rtems_object_api_minimum_class(OBJECTS_CLASSIC_API) returned %d\n",
+ rtems_object_api_minimum_class(OBJECTS_CLASSIC_API) );
+ printf( "rtems_object_api_maximum_class(OBJECTS_CLASSIC_API) returned %d\n",
+ rtems_object_api_maximum_class(OBJECTS_CLASSIC_API) );
+
+ printf( "rtems_object_api_minimum_class(OBJECTS_POSIX_API) returned %d\n",
+ rtems_object_api_minimum_class(OBJECTS_POSIX_API) );
+ printf( "rtems_object_api_maximum_class(OBJECTS_POSIX_API) returned %d\n",
+ rtems_object_api_maximum_class(OBJECTS_POSIX_API) );
+
+ printf( "rtems_object_api_minimum_class(OBJECTS_ITRON_API) returned %d\n",
+ rtems_object_api_minimum_class(OBJECTS_ITRON_API) );
+ printf( "rtems_object_api_maximum_class(OBJECTS_ITRON_API) returned %d\n",
+ rtems_object_api_maximum_class(OBJECTS_ITRON_API) );
+
+
+ /*
+ * Another screen break for the API and class name tests
+ */
+ rtems_test_pause();
+
+ printf( "rtems_object_get_api_name(0) = %s\n", rtems_object_get_api_name(0) );
+ printf( "rtems_object_get_api_name(255) = %s\n", rtems_object_get_api_name(255));
+
+ printf( "rtems_object_get_api_name(INTERNAL_API) = %s\n",
+ rtems_object_get_api_name(OBJECTS_INTERNAL_API) );
+ printf( "rtems_object_get_api_name(CLASSIC_API) = %s\n",
+ rtems_object_get_api_name(OBJECTS_CLASSIC_API) );
+ printf( "rtems_object_get_api_name(POSIX_API) = %s\n",
+ rtems_object_get_api_name(OBJECTS_POSIX_API) );
+ printf( "rtems_object_get_api_name(ITRON_API) = %s\n",
+ rtems_object_get_api_name(OBJECTS_ITRON_API) );
+
+ printf( "rtems_object_get_api_class_name(0, RTEMS_TASKS) = %s\n",
+ rtems_object_get_api_class_name( 0, OBJECTS_RTEMS_TASKS ) );
+ printf( "rtems_object_get_api_class_name(CLASSIC_API, 0) = %s\n",
+ rtems_object_get_api_class_name( OBJECTS_CLASSIC_API, 0 ) );
+ printf( "rtems_object_get_api_class_name(CLASSIC_API, RTEMS_BARRIERS) = %s\n",
+ rtems_object_get_api_class_name(OBJECTS_CLASSIC_API, OBJECTS_RTEMS_BARRIERS));
+
+ /*
+ * Another screen break for the information
+ */
+
+ rtems_test_pause();
+
+ puts( "rtems_object_get_class_information - INVALID_ADDRESS" );
+ status = rtems_object_get_class_information(
+ OBJECTS_INTERNAL_API, OBJECTS_INTERNAL_THREADS, NULL );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_ADDRESS,
+ "rtems_object_get_class_information"
+ );
+
+ puts( "rtems_object_get_class_information - INVALID_NUMBER (bad API)" );
+ status = rtems_object_get_class_information(0, OBJECTS_INTERNAL_THREADS, &info);
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_NUMBER,
+ "rtems_object_get_class_information (API)"
+ );
+
+ puts( "rtems_object_get_class_information - INVALID_NUMBER (bad class)" );
+ status = rtems_object_get_class_information( OBJECTS_INTERNAL_API, 0, &info );
+ fatal_directive_status(
+ status,
+ RTEMS_INVALID_NUMBER,
+ "rtems_object_get_class_information (API)"
+ );
+
+ puts( "rtems_object_get_class_information - Classic Tasks - OK" );
+ status = rtems_object_get_class_information(
+ OBJECTS_CLASSIC_API, OBJECTS_RTEMS_TASKS, &info );
+ directive_failed( status, "rtems_object_get_class_information" );
+ print_class_info( OBJECTS_CLASSIC_API, OBJECTS_RTEMS_TASKS, &info );
+
+ puts( "rtems_object_get_class_information - Classic Timers - OK" );
+ status = rtems_object_get_class_information(
+ OBJECTS_CLASSIC_API, OBJECTS_RTEMS_TIMERS, &info );
+ directive_failed( status, "rtems_object_get_class_information" );
+ print_class_info( OBJECTS_CLASSIC_API, OBJECTS_RTEMS_TIMERS, &info );
+
+
+ puts( "*** END OF TEST 43 ***" );
+ rtems_test_exit( 0 );
+}
diff --git a/testsuites/sptests/sp43/sp43.scn b/testsuites/sptests/sp43/sp43.scn
new file mode 100644
index 0000000000..8b954a4c38
--- /dev/null
+++ b/testsuites/sptests/sp43/sp43.scn
@@ -0,0 +1,58 @@
+*** TEST 43 ***
+rtems_object_get_classic_name - INVALID_ADDRESS
+rtems_object_get_classic_name - INVALID_ID
+UI1 - name returned by rtems_object_get_classic_name
+TEMP - rtems_build_name for TEMP
+rtems_object_get_name - bad id for class with instances
+rtems_object_get_name - bad id for class without instances
+rtems_object_get_name - bad length
+rtems_object_get_name - bad pointer
+rtems_object_get_name returned (UI1 ) for init task
+rtems_object_set_name - change name of init task
+New1 - name returned by rtems_object_get_classic_name
+rtems_object_get_name returned (New1) for init task
+rtems_build_id - build an id to match init task
+rtems_object_id_get_api - OK
+rtems_object_id_get_class - OK
+rtems_object_id_get_node - OK
+rtems_object_id_get_index - OK
+<pause>
+rtems_object_id_api_minimum returned 1
+rtems_object_id_api_maximum returned 4
+rtems_object_api_minimum_class(0) returned -1
+rtems_object_api_maximum_class(0) returned -1
+rtems_object_api_minimum_class(0) returned -1
+rtems_object_api_maximum_class(0) returned -1
+rtems_object_api_minimum_class(OBJECTS_INTERNAL_API) returned 1
+rtems_object_api_maximum_class(OBJECTS_INTERNAL_API) returned 2
+rtems_object_api_minimum_class(OBJECTS_CLASSIC_API) returned 1
+rtems_object_api_maximum_class(OBJECTS_CLASSIC_API) returned 10
+rtems_object_api_minimum_class(OBJECTS_POSIX_API) returned 1
+rtems_object_api_maximum_class(OBJECTS_POSIX_API) returned 12
+rtems_object_api_minimum_class(OBJECTS_ITRON_API) returned 1
+rtems_object_api_maximum_class(OBJECTS_ITRON_API) returned 8
+<pause>
+rtems_object_get_api_name(0) = BAD CLASS
+rtems_object_get_api_name(255) = BAD CLASS
+rtems_object_get_api_name(INTERNAL_API) = Internal
+rtems_object_get_api_name(CLASSIC_API) = Classic
+rtems_object_get_api_name(POSIX_API) = POSIX
+rtems_object_get_api_name(ITRON_API) = ITRON
+rtems_object_get_api_class_name(0, RTEMS_TASKS) = BAD API
+rtems_object_get_api_class_name(CLASSIC_API, 0) = BAD CLASS
+rtems_object_get_api_class_name(CLASSIC_API, RTEMS_BARRIERS) = Barrier
+<pause>
+rtems_object_get_class_information - INVALID_ADDRESS
+rtems_object_get_class_information - INVALID_NUMBER (bad API)
+rtems_object_get_class_information - INVALID_NUMBER (bad class)
+rtems_object_get_class_information - Classic Tasks - OK
+Classic API Task Information
+ minimum id : 0x0a010001 maximum id: 0x0a010002
+ maximum : 2 available : 1
+ auto_extend : no
+rtems_object_get_class_information - Classic Timers - OK
+Classic API Timer Information
+ minimum id : 0x12010001 maximum id: 0x12010001
+ maximum : 1 available : 1
+ auto_extend : no
+*** END OF TEST 43 ***
diff --git a/testsuites/sptests/sp43/system.h b/testsuites/sptests/sp43/system.h
new file mode 100644
index 0000000000..c007ce5cdf
--- /dev/null
+++ b/testsuites/sptests/sp43/system.h
@@ -0,0 +1,37 @@
+/* system.h
+ *
+ * This include file contains information that is included in every
+ * function in the test set.
+ *
+ * COPYRIGHT (c) 1989-2008.
+ * 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
+);
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_MAXIMUM_TASKS 2
+#define CONFIGURE_MAXIMUM_TIMERS 1
+#define CONFIGURE_MAXIMUM_SEMAPHORES 1
+
+#include <rtems/confdefs.h>
+
+/* end of include file */