summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-12-14 18:41:18 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-12-14 18:41:18 +0000
commit5abf63d983adbbd1c53e85f54123e99a57f86306 (patch)
treeb5f0fe51adc49833c05743699fd23fe5a1af7ccb
parent2008-12-14 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-5abf63d983adbbd1c53e85f54123e99a57f86306.tar.bz2
2008-12-14 Joel Sherrill <joel.sherrill@oarcorp.com>
* psx05/init.c, psx07/init.c, psx09/init.c, psx11/init.c, psx12/init.c: Run all tests successfully with maxixum number of priorities as 16 instead of 256. This was done by temporarily modifying the score priority.h maximum. This allowed testing of all API code to ensure that it worked properly with a reduced number of priorities. Most modifications were to switch from hard-coded maximum to using the API provided methods to determine maximum number of priority levels.
-rw-r--r--testsuites/psxtests/ChangeLog10
-rw-r--r--testsuites/psxtests/psx05/init.c20
-rw-r--r--testsuites/psxtests/psx07/init.c4
-rw-r--r--testsuites/psxtests/psx09/init.c16
-rw-r--r--testsuites/psxtests/psx11/init.c46
-rw-r--r--testsuites/psxtests/psx12/init.c6
6 files changed, 72 insertions, 30 deletions
diff --git a/testsuites/psxtests/ChangeLog b/testsuites/psxtests/ChangeLog
index 5935f2f3e1..5756e3eaae 100644
--- a/testsuites/psxtests/ChangeLog
+++ b/testsuites/psxtests/ChangeLog
@@ -1,3 +1,13 @@
+2008-12-14 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * psx05/init.c, psx07/init.c, psx09/init.c, psx11/init.c, psx12/init.c:
+ Run all tests successfully with maxixum number of priorities as 16
+ instead of 256. This was done by temporarily modifying the score
+ priority.h maximum. This allowed testing of all API code to ensure
+ that it worked properly with a reduced number of priorities. Most
+ modifications were to switch from hard-coded maximum to using the API
+ provided methods to determine maximum number of priority levels.
+
2008-12-08 Joel Sherrill <joel.sherrill@oarcorp.com>
* psxtimer01/psxtimer.c, psxtimer02/psxtimer.c: Obtain TOD with
diff --git a/testsuites/psxtests/psx05/init.c b/testsuites/psxtests/psx05/init.c
index 24936898f7..5923abe5f2 100644
--- a/testsuites/psxtests/psx05/init.c
+++ b/testsuites/psxtests/psx05/init.c
@@ -12,6 +12,7 @@
#define CONFIGURE_INIT
#include "system.h"
#include <errno.h>
+#include <rtems/posix/priority.h>
#define MUTEX_BAD_ID 0xfffffffe
@@ -107,6 +108,7 @@ void *POSIX_Init(
int protocol;
int ceiling;
int old_ceiling;
+ int priority;
assert( MUTEX_BAD_ID != PTHREAD_MUTEX_INITIALIZER );
Mutex_bad_id = MUTEX_BAD_ID;
@@ -277,7 +279,10 @@ void *POSIX_Init(
status = pthread_mutexattr_setprotocol( &attr, PTHREAD_PRIO_INHERIT );
assert( !status );
- status = pthread_mutexattr_setprioceiling( &attr, 128 );
+ status = pthread_mutexattr_setprioceiling(
+ &attr,
+ (sched_get_priority_max(SCHED_FIFO) / 2) + 1
+ );
assert( !status );
status = pthread_mutexattr_setpshared( &attr, PTHREAD_PROCESS_SHARED );
@@ -463,7 +468,7 @@ void *POSIX_Init(
/* set priority of Task2 to highest priority */
- param.sched_priority = 254;
+ param.sched_priority = sched_get_priority_max();
puts( "Init: pthread_setschedparam - Setting Task2 priority to highest" );
status = pthread_setschedparam( Task2_id, SCHED_FIFO, &param );
@@ -531,8 +536,11 @@ void *POSIX_Init(
/* normal cases of set priority ceiling */
- puts( "Init: pthread_mutex_setprioceiling - new ceiling = 200" );
- status = pthread_mutex_setprioceiling( &Mutex2_id, 200, &old_ceiling );
+ priority = sched_get_priority_max( SCHED_FIFO );
+ priority = (priority == 254) ? 200 : 13;
+
+ printf( "Init: pthread_mutex_setprioceiling - new ceiling = %d", priority );
+ status = pthread_mutex_setprioceiling( &Mutex2_id, priority, &old_ceiling );
assert( !status );
printf(
"Init: pthread_mutex_setprioceiling - old ceiling = %d\n",old_ceiling
@@ -561,7 +569,7 @@ void *POSIX_Init(
/* set priority of Task3 to highest priority */
- param.sched_priority = 199;
+ param.sched_priority = --priority;
status = pthread_setschedparam( Task3_id, SCHED_FIFO, &param );
assert( !status );
@@ -585,7 +593,7 @@ void *POSIX_Init(
/* set priority of Init to highest priority */
- param.sched_priority = 254;
+ param.sched_priority = sched_get_priority_max(SCHED_FIFO);
status = pthread_setschedparam( Init_id, SCHED_FIFO, &param );
assert( !status );
diff --git a/testsuites/psxtests/psx07/init.c b/testsuites/psxtests/psx07/init.c
index 32b0906440..de9392bb98 100644
--- a/testsuites/psxtests/psx07/init.c
+++ b/testsuites/psxtests/psx07/init.c
@@ -1,5 +1,5 @@
/*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -499,7 +499,7 @@ void *POSIX_Init(
status = pthread_setschedparam( pthread_self(), SCHED_OTHER, NULL );
fatal_directive_check_status_only( status, EINVAL, "invalid priority" );
- schedparam.sched_priority = 128;
+ schedparam.sched_priority = sched_get_priority_max(SCHED_OTHER);
puts( "Init: pthread_setschedparam - EINVAL (invalid policy)" );
status = pthread_setschedparam( pthread_self(), -1, &schedparam );
diff --git a/testsuites/psxtests/psx09/init.c b/testsuites/psxtests/psx09/init.c
index e931866fee..c3454c2984 100644
--- a/testsuites/psxtests/psx09/init.c
+++ b/testsuites/psxtests/psx09/init.c
@@ -1,5 +1,5 @@
/*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -13,6 +13,10 @@
#include "system.h"
#include <errno.h>
+int HIGH_PRIORITY;
+int MEDIUM_PRIORITY;
+int LOW_PRIORITY;
+
void print_schedparam(
char *prefix,
struct sched_param *schedparam
@@ -70,8 +74,8 @@ void *POSIX_Init(
schedparam.ss_initial_budget.tv_sec = 0;
schedparam.ss_initial_budget.tv_nsec = 250000000; /* 1/4 second */
- schedparam.sched_priority = 200;
- schedparam.ss_low_priority = 100;
+ schedparam.sched_priority = sched_get_priority_max(SCHED_SPORADIC);
+ schedparam.ss_low_priority = sched_get_priority_max(SCHED_SPORADIC) - 2;
puts( "Init: pthread_setschedparam - SUCCESSFUL (sporadic server)" );
status = pthread_setschedparam( pthread_self(), SCHED_SPORADIC, &schedparam );
@@ -111,9 +115,9 @@ void *POSIX_Init(
schedparam.ss_initial_budget.tv_sec = 0;
schedparam.ss_initial_budget.tv_nsec = 250000000; /* 1/4 second */
-#define HIGH_PRIORITY 150
-#define MEDIUM_PRIORITY 131
-#define LOW_PRIORITY 100
+ HIGH_PRIORITY = sched_get_priority_max( SCHED_SPORADIC );
+ MEDIUM_PRIORITY = sched_get_priority_max( SCHED_SPORADIC ) - 2;
+ LOW_PRIORITY = sched_get_priority_max( SCHED_SPORADIC ) - 4;
schedparam.sched_priority = HIGH_PRIORITY;
schedparam.ss_low_priority = LOW_PRIORITY;
diff --git a/testsuites/psxtests/psx11/init.c b/testsuites/psxtests/psx11/init.c
index cbea072ae5..254fe33801 100644
--- a/testsuites/psxtests/psx11/init.c
+++ b/testsuites/psxtests/psx11/init.c
@@ -1,5 +1,5 @@
/*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -20,6 +20,10 @@ void *POSIX_Init(
int status;
struct sched_param param;
pthread_attr_t attr;
+ int priority_1;
+ int priority_2;
+ int priority_3;
+ int priority_4;
puts( "\n\n*** POSIX TEST 11 ***" );
@@ -34,32 +38,47 @@ void *POSIX_Init(
/* exercise pthread_setschedparam */
- param.sched_priority = 127;
+ priority_1 = sched_get_priority_max( SCHED_FIFO ); /* was 127 */
+ priority_2 = sched_get_priority_max( SCHED_FIFO ) - 2; /* was 125 */
+ priority_3 = sched_get_priority_max( SCHED_FIFO ) - 6; /* was 121 */
+ priority_4 = sched_get_priority_max( SCHED_FIFO ) - 7; /* was 120 */
- puts( "Init: Setting scheduling parameters to FIFO with priority 127" );
+ param.sched_priority = priority_1;
+
+ printf(
+ "Init: Setting scheduling parameters to FIFO with priority %d\n",
+ priority_1
+ );
status = pthread_setschedparam( Init_id, SCHED_FIFO, &param );
assert( !status );
- param.sched_priority = 125;
+ param.sched_priority = priority_2;
- puts( "Init: Setting scheduling parameters to RR with priority 125" );
+ printf(
+ "Init: Setting scheduling parameters to RR with priority %d\n",
+ priority_2
+ );
status = pthread_setschedparam( Init_id, SCHED_RR, &param );
assert( !status );
- param.sched_priority = 121;
+ param.sched_priority = priority_3;
- puts( "Init: Setting scheduling parameters to OTHER with priority 121" );
+ printf(
+ "Init: Setting scheduling parameters to OTHER with priority %d\n",
+ priority_3
+ );
status = pthread_setschedparam( Init_id, SCHED_OTHER, &param );
assert( !status );
/* create a thread as SCHED_FIFO */
- puts( "Init: create a thread of SCHED_FIFO with priority 120" );
+ printf(
+ "Init: create a thread of SCHED_FIFO with priority %d\n", priority_4 );
status = pthread_attr_init( &attr );
assert( !status );
attr.schedpolicy = SCHED_FIFO;
- attr.schedparam.sched_priority = 120;
+ attr.schedparam.sched_priority = priority_4;
status = pthread_create( &Task_id, &attr, Task_1, NULL );
assert( !status );
@@ -70,12 +89,12 @@ void *POSIX_Init(
/* create a thread as SCHED_RR */
- puts( "Init: create a thread of SCHED_RR with priority 120" );
+ printf( "Init: create a thread of SCHED_RR with priority %d\n", priority_4 );
status = pthread_attr_init( &attr );
assert( !status );
attr.schedpolicy = SCHED_RR;
- attr.schedparam.sched_priority = 120;
+ attr.schedparam.sched_priority = priority_4;
status = pthread_create( &Task_id, &attr, Task_1, NULL );
assert( !status );
@@ -86,12 +105,13 @@ void *POSIX_Init(
/* create a thread as SCHED_OTHER */
- puts( "Init: create a thread of SCHED_OTHER with priority 120" );
+ printf(
+ "Init: create a thread of SCHED_OTHER with priority %d\n", priority_4 );
status = pthread_attr_init( &attr );
assert( !status );
attr.schedpolicy = SCHED_OTHER;
- attr.schedparam.sched_priority = 120;
+ attr.schedparam.sched_priority = priority_4;
status = pthread_create( &Task_id, &attr, Task_1, NULL );
assert( !status );
diff --git a/testsuites/psxtests/psx12/init.c b/testsuites/psxtests/psx12/init.c
index fe83f470de..b1f32964a8 100644
--- a/testsuites/psxtests/psx12/init.c
+++ b/testsuites/psxtests/psx12/init.c
@@ -1,5 +1,5 @@
/*
- * COPYRIGHT (c) 1989-1999.
+ * COPYRIGHT (c) 1989-2008.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -117,8 +117,8 @@ void *POSIX_Init(
schedparam.ss_initial_budget.tv_sec = 1;
schedparam.ss_initial_budget.tv_nsec = 0;
- schedparam.sched_priority = 200;
- schedparam.ss_low_priority = 100;
+ schedparam.sched_priority = sched_get_priority_max( SCHED_FIFO );
+ schedparam.ss_low_priority = sched_get_priority_max( SCHED_FIFO ) - 6;
status = pthread_attr_setschedparam( &attr, &schedparam );
assert( !status );