summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/spobjgetnext/init.c
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/init.c
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/init.c')
-rw-r--r--testsuites/sptests/spobjgetnext/init.c83
1 files changed, 83 insertions, 0 deletions
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 );
+}