summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/spobjgetnext
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-08 02:05:51 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-05-08 02:05:51 +0000
commitc14c2f0baf9cf9654c43ee00e7b85cdabaa16f7c (patch)
treeedf727138c1e00afeccc39305ddc9bbb7026e71c /testsuites/sptests/spobjgetnext
parent2009-05-07 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-c14c2f0baf9cf9654c43ee00e7b85cdabaa16f7c.tar.bz2
2009-05-07 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac: Add initial test of _Objects_Get_next. * spobjgetnext/.cvsignore, spobjgetnext/Makefile.am, spobjgetnext/init.c, spobjgetnext/spobjgetnext.scn, spobjgetnext/system.h: New files.
Diffstat (limited to 'testsuites/sptests/spobjgetnext')
-rw-r--r--testsuites/sptests/spobjgetnext/.cvsignore2
-rw-r--r--testsuites/sptests/spobjgetnext/Makefile.am27
-rw-r--r--testsuites/sptests/spobjgetnext/init.c83
-rw-r--r--testsuites/sptests/spobjgetnext/spobjgetnext.scn0
-rw-r--r--testsuites/sptests/spobjgetnext/system.h33
5 files changed, 145 insertions, 0 deletions
diff --git a/testsuites/sptests/spobjgetnext/.cvsignore b/testsuites/sptests/spobjgetnext/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/testsuites/sptests/spobjgetnext/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/testsuites/sptests/spobjgetnext/Makefile.am b/testsuites/sptests/spobjgetnext/Makefile.am
new file mode 100644
index 0000000000..a0d67ef310
--- /dev/null
+++ b/testsuites/sptests/spobjgetnext/Makefile.am
@@ -0,0 +1,27 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = spobjgetnext
+spobjgetnext_SOURCES = init.c system.h
+
+dist_rtems_tests_DATA = spobjgetnext.scn
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+spobjgetnext_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(spobjgetnext_OBJECTS) $(spobjgetnext_LDADD)
+LINK_LIBS = $(spobjgetnext_LDLIBS)
+
+spobjgetnext$(EXEEXT): $(spobjgetnext_OBJECTS) $(spobjgetnext_DEPENDENCIES)
+ @rm -f spobjgetnext$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spobjgetnext/init.c b/testsuites/sptests/spobjgetnext/init.c
new file mode 100644
index 0000000000..5058a69fff
--- /dev/null
+++ b/testsuites/sptests/spobjgetnext/init.c
@@ -0,0 +1,83 @@
+/*
+ * Exercise SuperCore Object Get Next
+ *
+ * COPYRIGHT (c) 1989-2009.
+ * 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 CONFIGURE_INIT
+#define __RTEMS_VIOLATE_KERNEL_VISIBILITY__ 1
+#include "system.h"
+
+#define MAX_SCAN 10
+int scan_objects(
+ Objects_Information *information,
+ Objects_Id start
+)
+{
+ Objects_Control *o[MAX_SCAN];
+ int i;
+ Objects_Locations location;
+ Objects_Id id;
+
+ memset( o, 1, sizeof(o) );
+
+ id = start;
+ for (i=0 ; i<MAX_SCAN ; i++ ) {
+ o[i] = _Objects_Get_next(
+ information,
+ id,
+ &location,
+ &id
+ );
+ if ( !o[i] )
+ break;
+ if ( location == OBJECTS_ERROR )
+ break;
+ /* XXX check dispatch level with macros */
+
+ _Thread_Enable_dispatch();
+
+ /* XXX should be able to check that next Id is not one we have seen */
+ }
+ return i;
+}
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_id main_task;
+ int count;
+
+ puts( "\n\n*** TEST OBJECT GET NEXT ***" );
+
+ main_task = rtems_task_self();
+
+ /* XXX push the three NULL error cases */
+
+ /* simple case of only all tasks in the system, starting at initial */
+ count = scan_objects( &_RTEMS_tasks_Information, OBJECTS_ID_INITIAL_INDEX );
+ printf( "%d RTEMS Task%s\n", count, ((count == 1) ? "" : "s") );
+ assert( count == 1 );
+
+ /* simple case of only 1 task in the system, starting at that task */
+ count = scan_objects( &_RTEMS_tasks_Information, main_task );
+ printf( "%d RTEMS Task%s\n", count, ((count == 1) ? "" : "s") );
+ assert( count == 1 );
+
+ /* XXX create >= 1 task and make sure the counts are correct when */
+ /* XXX you start the search at initial, first id, arbitrary id */
+
+ /* XXX try with a manager with no objects created */
+
+ puts( "*** END OF TEST OBJECT GET NEXT ***" );
+ rtems_test_exit( 0 );
+}
diff --git a/testsuites/sptests/spobjgetnext/spobjgetnext.scn b/testsuites/sptests/spobjgetnext/spobjgetnext.scn
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuites/sptests/spobjgetnext/spobjgetnext.scn
diff --git a/testsuites/sptests/spobjgetnext/system.h b/testsuites/sptests/spobjgetnext/system.h
new file mode 100644
index 0000000000..b0e70f9883
--- /dev/null
+++ b/testsuites/sptests/spobjgetnext/system.h
@@ -0,0 +1,33 @@
+/*
+ * COPYRIGHT (c) 1989-2009.
+ * 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 */