forked from Imagelibrary/rtems
2009-08-19 Joel Sherrill <joel.sherrill@OARcorp.com>
* psx07/init.c, psx07/psx07.scn, psx07/system.h, psx07/task.c: Update test to reflect not allowing poriority changes when mutex is locked.
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2009-08-19 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||
|
||||
* psx07/init.c, psx07/psx07.scn, psx07/system.h, psx07/task.c: Update
|
||||
test to reflect not allowing poriority changes when mutex is locked.
|
||||
|
||||
2009-08-18 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||
|
||||
* psx01/init.c, psx01/psx01.scn: Add test case for nanosleep with NULL
|
||||
|
||||
@@ -555,6 +555,40 @@ void *POSIX_Init(
|
||||
status = pthread_setschedparam( pthread_self(), SCHED_SPORADIC, &schedparam );
|
||||
fatal_directive_check_status_only( status, EINVAL, "invalid priority" );
|
||||
|
||||
/*
|
||||
* Create a sporadic thread that doesn't need it's priority
|
||||
* boosted
|
||||
*/
|
||||
empty_line();
|
||||
|
||||
puts( "Init - pthread_attr_init - SUCCESSFUL" );
|
||||
status = pthread_attr_init( &attr );
|
||||
posix_service_failed( status, "pthread_attr_init" );
|
||||
|
||||
puts( "Init - pthread_attr_setinheritsched - EXPLICIT - SUCCESSFUL" );
|
||||
status = pthread_attr_setinheritsched( &attr, PTHREAD_EXPLICIT_SCHED );
|
||||
assert( !status );
|
||||
|
||||
schedparam.ss_replenish_period.tv_sec = 3;
|
||||
schedparam.ss_replenish_period.tv_nsec = 3;
|
||||
schedparam.ss_initial_budget.tv_sec = 1;
|
||||
schedparam.ss_initial_budget.tv_nsec = 1;
|
||||
schedparam.sched_priority = sched_get_priority_max( SCHED_FIFO );
|
||||
schedparam.ss_low_priority = sched_get_priority_max( SCHED_FIFO ) - 6;
|
||||
|
||||
puts( "Init - pthread_attr_setschedpolicy - SUCCESSFUL" );
|
||||
status = pthread_attr_setschedpolicy( &attr, SCHED_SPORADIC );
|
||||
posix_service_failed( status, "pthread_attr_setschedparam");
|
||||
puts( "Init - pthread_attr_setschedparam - SUCCESSFUL" );
|
||||
status = pthread_attr_setschedparam( &attr, &schedparam );
|
||||
posix_service_failed( status, "pthread_attr_setschedparam");
|
||||
|
||||
status = pthread_create( &Task2_id, &attr, Task_2, NULL );
|
||||
assert( !status );
|
||||
|
||||
status = pthread_join( Task2_id, NULL );
|
||||
posix_service_failed( status, " pthread_join");
|
||||
|
||||
puts( "*** END OF POSIX TEST 7 ***" );
|
||||
rtems_test_exit( 0 );
|
||||
|
||||
|
||||
@@ -9,9 +9,18 @@ Init - pthread_create - EINVAL (attr not initialized)
|
||||
Init - pthread_create - EINVAL (stacksize too small)
|
||||
Init - pthread_create - EAGAIN (stacksize too large)
|
||||
Init - pthread_create - EINVAL (invalid inherit scheduler)
|
||||
Init - pthread_attr_settime - EINVAL ( null attribute )
|
||||
Init - pthread_attr_gettime - EINVAL ( null attribute )
|
||||
Init - pthread_attr_settime - EINVAL ( is initialized )
|
||||
Init - pthread_attr_gettime - EINVAL ( is initialized )
|
||||
Init - pthread_attr_settime - EINVAL ( invalid clock allowed )
|
||||
Init - pthread_attr_gettime - EINVAL ( NULL clock allowed )
|
||||
Init - validate pthread_attr_setcputime - CLOCK_DISABLED
|
||||
Init - validate pthread_attr_setcputime - CLOCK_ENABLED
|
||||
Init - pthread_create - ENOTSUP (unsupported system contention scope)
|
||||
Init - pthread_create - SUCCESSFUL (inherit scheduler)
|
||||
Task_1 - exitting
|
||||
|
||||
Init - pthread_attr_setscope - EINVAL (NULL attr)
|
||||
Init - pthread_attr_setscope - ENOTSUP
|
||||
Init - pthread_attr_setscope - EINVAL (not initialized attr)
|
||||
@@ -22,6 +31,7 @@ Init - pthread_attr_getscope - EINVAL (NULL scope)
|
||||
Init - pthread_attr_getscope - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_getscope - SUCCESSFUL
|
||||
Init - current scope attribute = 0
|
||||
|
||||
Init - pthread_attr_setinheritsched - EINVAL (NULL attr)
|
||||
Init - pthread_attr_setinheritsched - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_setinheritsched - ENOTSUP (invalid inheritsched)
|
||||
@@ -31,6 +41,7 @@ Init - pthread_attr_getinheritsched - EINVAL (NULL inheritsched)
|
||||
Init - pthread_attr_getinheritsched - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_getinheritsched - SUCCESSFUL
|
||||
Init - current inherit scheduler attribute = 1
|
||||
|
||||
Init - pthread_attr_setschedpolicy - EINVAL (NULL attr)
|
||||
Init - pthread_attr_setschedpolicy - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_setschedpolicy - ENOTSUP (invalid schedpolicy)
|
||||
@@ -40,6 +51,7 @@ Init - pthread_attr_getschedpolicy - EINVAL (NULL schedpolicy)
|
||||
Init - pthread_attr_getschedpolicy - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_getschedpolicy - SUCCESSFUL
|
||||
Init - current scheduler policy attribute = 2
|
||||
|
||||
Init - pthread_attr_setstacksize - EINVAL (NULL attr)
|
||||
Init - pthread_attr_setstacksize - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_setstacksize - SUCCESSFUL (low stacksize)
|
||||
@@ -49,6 +61,7 @@ Init - pthread_attr_getstacksize - EINVAL (NULL stacksize)
|
||||
Init - pthread_attr_getstacksize - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_getstacksize - SUCCESSFUL
|
||||
Init - current stack size attribute is OK
|
||||
|
||||
Init - pthread_attr_setstackaddr - EINVAL (NULL attr)
|
||||
Init - pthread_attr_setstackaddr - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_setstackaddr - SUCCESSFUL
|
||||
@@ -57,6 +70,7 @@ Init - pthread_attr_getstackaddr - EINVAL (NULL stackaddr)
|
||||
Init - pthread_attr_getstackaddr - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_getstackaddr - SUCCESSFUL
|
||||
Init - current stack address attribute = 0x0
|
||||
|
||||
Init - pthread_attr_setdetachstate - EINVAL (NULL attr)
|
||||
Init - pthread_attr_setdetachstate - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_setdetachstate - EINVAL (invalid detachstate)
|
||||
@@ -66,6 +80,7 @@ Init - pthread_attr_getdetachstate - EINVAL (NULL detatchstate)
|
||||
Init - pthread_attr_getdetachstate - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_getdetachstate - SUCCESSFUL
|
||||
Init - current detach state attribute = 1
|
||||
|
||||
Init - pthread_attr_getschedparam - SUCCESSFUL
|
||||
Init - sched priority = 2
|
||||
Init - ss_low_priority = 0
|
||||
@@ -78,6 +93,7 @@ Init - pthread_attr_setschedparam - SUCCESSFUL
|
||||
Init - pthread_attr_getschedparam - EINVAL (NULL attr)
|
||||
Init - pthread_attr_getschedparam - EINVAL (not initialized attr)
|
||||
Init - pthread_attr_getschedparam - EINVAL (NULL schedparam)
|
||||
|
||||
Init - pthread_getschedparam - EINVAL (NULL policy)
|
||||
Init - pthread_getschedparam - EINVAL (NULL schedparam)
|
||||
Init - pthread_getschedparam - ESRCH (bad thread)
|
||||
@@ -87,6 +103,7 @@ Init - sched priority = 2
|
||||
Init - ss_low_priority = 0
|
||||
Init - ss_replenish_period = (0, 0)
|
||||
Init - ss_initial_budget = (0, 0)
|
||||
|
||||
Init - pthread_setschedparam - EINVAL (NULL schedparam)
|
||||
Init - pthread_setschedparam - EINVAL (invalid priority)
|
||||
Init - pthread_setschedparam - EINVAL (invalid policy)
|
||||
@@ -95,4 +112,21 @@ Init - pthread_setschedparam - EINVAL (replenish == 0)
|
||||
Init - pthread_setschedparam - EINVAL (budget == 0)
|
||||
Init - pthread_setschedparam - EINVAL (replenish < budget)
|
||||
Init - pthread_setschedparam - EINVAL (invalid priority)
|
||||
|
||||
Init - pthread_attr_init - SUCCESSFUL
|
||||
Init - pthread_attr_setinheritsched - EXPLICIT - SUCCESSFUL
|
||||
Init - pthread_attr_setschedpolicy - SUCCESSFUL
|
||||
Init - pthread_attr_setschedparam - SUCCESSFUL
|
||||
Time elapsed Task_2: 0 (seconds)
|
||||
Time elapsed Task_2: 1 (seconds)
|
||||
Time elapsed Task_2: 2 (seconds)
|
||||
Time elapsed Task_2: 3 (seconds)
|
||||
Time elapsed Task_2: 4 (seconds)
|
||||
Time elapsed Task_2: 5 (seconds)
|
||||
Time elapsed Task_2: 6 (seconds)
|
||||
Time elapsed Task_2: 7 (seconds)
|
||||
Time elapsed Task_2: 8 (seconds)
|
||||
Time elapsed Task_2: 9 (seconds)
|
||||
Time elapsed Task_2: 10 (seconds)
|
||||
Task_2 - exitting
|
||||
*** END OF POSIX TEST 7 ***
|
||||
|
||||
@@ -25,6 +25,11 @@ void *Task_1(
|
||||
void *argument
|
||||
);
|
||||
|
||||
void *Task_2(
|
||||
void *argument
|
||||
);
|
||||
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
@@ -45,7 +50,7 @@ void *Task_1(
|
||||
#endif
|
||||
|
||||
TEST_EXTERN pthread_t Init_id;
|
||||
TEST_EXTERN pthread_t Task_id;
|
||||
TEST_EXTERN pthread_t Task_id, Task2_id;
|
||||
|
||||
#undef TEST_EXTERN
|
||||
|
||||
|
||||
@@ -31,3 +31,36 @@ void *Task_1(
|
||||
|
||||
return NULL; /* just so the compiler thinks we returned something */
|
||||
}
|
||||
|
||||
void *Task_2(
|
||||
void *argument
|
||||
)
|
||||
{
|
||||
int i = 0;
|
||||
time_t now, start;
|
||||
|
||||
/*
|
||||
* Change our priority so we are running at a logically higher
|
||||
* priority than our "ss_high_priority". This should result in
|
||||
* our replenishment period not touching our priority.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Consume time so the cpu budget callout will run.
|
||||
*
|
||||
* DO NOT BLOCK!!!
|
||||
*/
|
||||
start = time(&start);
|
||||
while( i <= 10 ) {
|
||||
do {
|
||||
now = time(&now);
|
||||
} while (start == now);
|
||||
start = time(&start);
|
||||
|
||||
printf( "Time elapsed Task_2: %2d (seconds)\n", i++ );
|
||||
}
|
||||
|
||||
puts( "Task_2 - exitting" );
|
||||
pthread_exit( NULL );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user