forked from Imagelibrary/rtems
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.
This commit is contained in:
83
testsuites/sptests/spobjgetnext/init.c
Normal file
83
testsuites/sptests/spobjgetnext/init.c
Normal file
@@ -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 );
|
||||
}
|
||||
Reference in New Issue
Block a user