summaryrefslogtreecommitdiffstats
path: root/cpukit/posix
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-24 11:22:03 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-06-24 14:44:31 +0200
commit254dc82daf8cbd6922376fcbb81c31e21cbf4d16 (patch)
treec58687f860da6543dc05ab14fdf7e8db8f77cfbc /cpukit/posix
parentscore: Silence integer conversion warnings (diff)
downloadrtems-254dc82daf8cbd6922376fcbb81c31e21cbf4d16.tar.bz2
score: Change Priority_Control to 64-bit
A 32-bit Priority_Control limits the uptime to 49 days with a 1ms clock tick in case the EDF scheduler is used. Increase it to 64-bit to enable proper operation of the EDF scheduler, Close 2173.
Diffstat (limited to 'cpukit/posix')
-rw-r--r--cpukit/posix/include/rtems/posix/priorityimpl.h9
-rw-r--r--cpukit/posix/src/killinfo.c2
-rw-r--r--cpukit/posix/src/psxpriorityisvalid.c9
3 files changed, 9 insertions, 11 deletions
diff --git a/cpukit/posix/include/rtems/posix/priorityimpl.h b/cpukit/posix/include/rtems/posix/priorityimpl.h
index b986d64cd5..eb2e3e059f 100644
--- a/cpukit/posix/include/rtems/posix/priorityimpl.h
+++ b/cpukit/posix/include/rtems/posix/priorityimpl.h
@@ -20,6 +20,7 @@
#define _RTEMS_POSIX_PRIORITYIMPL_H
#include <rtems/score/scheduler.h>
+#include <rtems/score/assert.h>
#ifdef __cplusplus
extern "C" {
@@ -48,7 +49,13 @@ extern "C" {
*
* @return The maximum POSIX API priority for this scheduler instance.
*/
-int _POSIX_Priority_Get_maximum( const Scheduler_Control *scheduler );
+RTEMS_INLINE_ROUTINE int _POSIX_Priority_Get_maximum(
+ const Scheduler_Control *scheduler
+)
+{
+ _Assert( (int) scheduler->maximum_priority > 1 );
+ return (int) scheduler->maximum_priority - 1;
+}
/**
* @brief Converts the POSIX API priority to the corresponding SuperCore
diff --git a/cpukit/posix/src/killinfo.c b/cpukit/posix/src/killinfo.c
index 33754af682..b7f0354a0b 100644
--- a/cpukit/posix/src/killinfo.c
+++ b/cpukit/posix/src/killinfo.c
@@ -190,7 +190,7 @@ int _POSIX_signals_Send(
* + rtems internal threads do not receive signals.
*/
interested = NULL;
- interested_priority = PRIORITY_MAXIMUM + 1;
+ interested_priority = UINT64_MAX;
for (the_api = OBJECTS_CLASSIC_API; the_api <= OBJECTS_APIS_LAST; the_api++) {
diff --git a/cpukit/posix/src/psxpriorityisvalid.c b/cpukit/posix/src/psxpriorityisvalid.c
index 7c2300b4d6..5e687aca15 100644
--- a/cpukit/posix/src/psxpriorityisvalid.c
+++ b/cpukit/posix/src/psxpriorityisvalid.c
@@ -21,15 +21,6 @@
#include <rtems/posix/priorityimpl.h>
#include <rtems/score/schedulerimpl.h>
-int _POSIX_Priority_Get_maximum( const Scheduler_Control *scheduler )
-{
- if ( scheduler->maximum_priority < INT_MAX ) {
- return (int) scheduler->maximum_priority - 1;
- } else {
- return INT_MAX;
- }
-}
-
Priority_Control _POSIX_Priority_To_core(
const Scheduler_Control *scheduler,
int posix_priority,