Changeset a27fa6d in rtems
- Timestamp:
- 12/04/06 14:10:48 (16 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- c0547b49
- Parents:
- a7479f2
- Location:
- testsuites/sptests
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
testsuites/sptests/ChangeLog
ra7479f2 ra27fa6d 1 2006-12-04 Joel Sherrill <joel.sherrill@oarcorp.com> 2 3 * sp33/init.c: Improve barrier test to include normal blocking with 4 manual release and unblocking in barrier deletion. 5 1 6 2006-12-02 Ralf Corsépius <ralf.corsepius@rtems.org> 2 7 -
testsuites/sptests/sp33/init.c
ra7479f2 ra27fa6d 18 18 #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER 19 19 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER 20 #define CONFIGURE_MAXIMUM_TASKS 120 #define CONFIGURE_MAXIMUM_TASKS 5 21 21 #define CONFIGURE_MAXIMUM_BARRIERS 1 22 22 23 23 #define CONFIGURE_INIT 24 25 rtems_id Barrier; 26 27 int SuccessfulCase; 28 int DeletedCase; 29 30 rtems_task Waiter( 31 rtems_task_argument number 32 ) 33 { 34 rtems_status_code status; 35 36 printf( "Waiter %d waiting on barrier\n", number ); 37 status = rtems_barrier_wait( Barrier, RTEMS_NO_TIMEOUT ); 38 39 printf( "Waiter %d back from barrier\n", number ); 40 41 if ( SuccessfulCase == TRUE ) { 42 directive_failed(status, "rtems_barrier_wait"); 43 } else if ( DeletedCase == TRUE ) { 44 fatal_directive_status( 45 status, 46 RTEMS_OBJECT_WAS_DELETED, 47 "rtems_barrier_wait did not get deleted" 48 ); 49 } 50 51 rtems_task_delete( RTEMS_SELF ); 52 } 24 53 25 54 #include <rtems/confdefs.h> … … 30 59 { 31 60 rtems_status_code status; 32 rtems_name name = rtems_build_name('B','A','R','1'); 33 rtems_id id; 34 uint32_t released; 61 rtems_name name = rtems_build_name('B','A','R','1'); 62 uint32_t released; 63 rtems_id testId; 64 rtems_id Tasks[CONFIGURE_MAXIMUM_TASKS-1]; 65 uint32_t i; 35 66 36 67 puts("\n\n*** TEST 33 ***"); … … 38 69 /* create period */ 39 70 puts( "Create Barrier" ); 40 status = rtems_barrier_create( name, RTEMS_DEFAULT_ATTRIBUTES, 0, & id);71 status = rtems_barrier_create( name, RTEMS_DEFAULT_ATTRIBUTES, 0, &Barrier ); 41 72 directive_failed(status, "rtems_barrier_create"); 42 73 43 puts( "Wait on Barrier w/timeout" ); 44 status = rtems_barrier_wait( id, 10 ); 74 puts( "Check Barrier ident" ); 75 status = rtems_barrier_ident( name, &testId ); 76 directive_failed(status, "rtems_barrier_ident"); 77 if ( testId != Barrier ) { 78 printf( "ERROR -- rtems_barrier_create -- did not get Id expected\n" ); 79 exit( 0 ); 80 } 81 82 puts( "Wait on Barrier w/timeout and TIMEOUT" ); 83 status = rtems_barrier_wait( Barrier, 25 ); 45 84 fatal_directive_status( 46 85 status, … … 49 88 ); 50 89 51 #if 0 52 /* start period with initial value */ 53 status = rtems_barrier_release( id, &released ); 90 /* Release no tasks */ 91 status = rtems_barrier_release( Barrier, &released ); 54 92 directive_failed(status, "rtems_barrier_release"); 55 93 if ( released != 0 ) { … … 57 95 exit(0); 58 96 } 59 #endif 97 98 /* 99 * Create some tasks to wait for the barrier 100 */ 101 SuccessfulCase = TRUE; 102 DeletedCase = FALSE; 103 puts( "\n*** Testing Regular Release of Barrier ***" ); 104 for (i=0 ; i<(CONFIGURE_MAXIMUM_TASKS-1) ; i++) { 105 status = rtems_task_create( 106 rtems_build_name('W','A','I','T'), 107 1, 108 RTEMS_MINIMUM_STACK_SIZE, 109 RTEMS_DEFAULT_MODES, 110 RTEMS_DEFAULT_ATTRIBUTES, 111 &Tasks[ i ] 112 ); 113 directive_failed( status, "rtems_task_create of Waiter" ); 114 115 status = rtems_task_start( Tasks[ i ], Waiter, i ); 116 directive_failed( status, "rtems_task_start of Waiter" ); 117 } 118 119 120 puts( "Delay to let Waiters block" ); 121 status = rtems_task_wake_after( TICKS_PER_SECOND ); 122 directive_failed(status, "rtems_task_wake_after"); 123 124 /* Release tasks which were waiting */ 125 puts( "Releasing tasks" ); 126 status = rtems_barrier_release( Barrier, &released ); 127 directive_failed(status, "rtems_barrier_release"); 128 if ( released != (CONFIGURE_MAXIMUM_TASKS-1) ) { 129 printf( "ERROR -- rtems_barrier_release -- released != %d, = %d", 130 (CONFIGURE_MAXIMUM_TASKS-1), released); 131 exit(0); 132 } 133 134 puts( "Delay to let Waiters print a message" ); 135 status = rtems_task_wake_after( TICKS_PER_SECOND ); 136 directive_failed(status, "rtems_task_wake_after"); 137 138 /* 139 * Create some tasks to wait for the barrier 140 */ 141 SuccessfulCase = FALSE; 142 DeletedCase = TRUE; 143 puts( "\n*** Testing Deletion of Barrier ***" ); 144 for (i=0 ; i<(CONFIGURE_MAXIMUM_TASKS-1) ; i++) { 145 status = rtems_task_create( 146 rtems_build_name('W','A','I','T'), 147 1, 148 RTEMS_MINIMUM_STACK_SIZE, 149 RTEMS_DEFAULT_MODES, 150 RTEMS_DEFAULT_ATTRIBUTES, 151 &Tasks[ i ] 152 ); 153 directive_failed( status, "rtems_task_create of Waiter" ); 154 155 status = rtems_task_start( Tasks[ i ], Waiter, i ); 156 directive_failed( status, "rtems_task_start of Waiter" ); 157 } 158 159 puts( "Delay to let Waiters block" ); 160 status = rtems_task_wake_after( TICKS_PER_SECOND ); 161 directive_failed(status, "rtems_task_wake_after"); 60 162 61 163 puts( "Delete barrier" ); 62 status = rtems_barrier_delete( id);164 status = rtems_barrier_delete( Barrier ); 63 165 directive_failed(status, "rtems_barrier_delete"); 166 167 puts( "Delay to let Waiters print a message" ); 168 status = rtems_task_wake_after( TICKS_PER_SECOND ); 169 directive_failed(status, "rtems_task_wake_after"); 64 170 65 171 /* the end */
Note: See TracChangeset
for help on using the changeset viewer.