diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-06-13 15:10:31 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-06-13 15:19:50 +0200 |
commit | fc30ac5973aae2393fb318b56346368f5e9b4493 (patch) | |
tree | e4388431c6aa635c760c62b9ade0598a25072ca0 /testsuites | |
parent | posix: Fix pthread_getschedparam() (diff) | |
download | rtems-fc30ac5973aae2393fb318b56346368f5e9b4493.tar.bz2 |
posix: Fix pthread_setschedparam()
Close #2735.
Diffstat (limited to 'testsuites')
-rw-r--r-- | testsuites/psxtests/psx05/init.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/testsuites/psxtests/psx05/init.c b/testsuites/psxtests/psx05/init.c index d3311fcba5..6e7229e42f 100644 --- a/testsuites/psxtests/psx05/init.c +++ b/testsuites/psxtests/psx05/init.c @@ -156,6 +156,59 @@ static void test_get_priority( void ) rtems_test_assert( status == 0 ); } +static void *counter_task(void *arg) +{ + int *counter; + + counter = arg; + + while ( *counter >= 0 ) { + ++(*counter); + + sched_yield(); + } + + return counter; +} + +static void test_set_priority( void ) +{ + int status; + int policy; + struct sched_param param; + pthread_t thread; + int counter; + void *exit_code; + + counter = 0; + + status = pthread_getschedparam( pthread_self(), &policy, ¶m ); + rtems_test_assert( status == 0 ); + + status = pthread_create( &thread, NULL, counter_task, &counter); + rtems_test_assert( status == 0 ); + + ++param.sched_priority; + status = pthread_setschedparam( pthread_self(), policy, ¶m ); + rtems_test_assert( status == 0 ); + + rtems_test_assert( counter == 0 ); + + --param.sched_priority; + status = pthread_setschedparam( pthread_self(), policy, ¶m ); + rtems_test_assert( status == 0 ); + + rtems_test_assert( counter == 1 ); + + counter = -1; + sched_yield(); + + status = pthread_join( thread, &exit_code ); + rtems_test_assert( status == 0 ); + rtems_test_assert( exit_code == &counter ); + rtems_test_assert( counter == -1 ); +} + void *POSIX_Init( void *argument ) @@ -178,6 +231,7 @@ void *POSIX_Init( TEST_BEGIN(); test_get_priority(); + test_set_priority(); /* set the time of day, and print our buffer in multiple ways */ |