Changeset 1a4eac50 in rtems
- Timestamp:
- 06/15/16 14:31:33 (7 years ago)
- Branches:
- 5, master
- Children:
- c82835a
- Parents:
- 5a32c48
- git-author:
- Sebastian Huber <sebastian.huber@…> (06/15/16 14:31:33)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (06/22/16 12:00:28)
- Location:
- cpukit/posix
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/posix/include/rtems/posix/priorityimpl.h
r5a32c48 r1a4eac50 52 52 53 53 /** 54 * @brief Check if POSIX priority is valid. 54 * @brief Converts the POSIX API priority to the corresponding SuperCore 55 * priority and validates it. 55 56 * 56 57 * According to POSIX, numerically higher values represent higher priorities. … … 66 67 * 67 68 * @param[in] scheduler The scheduler instance. 68 * @param[in] priority The POSIX API priority to test. 69 * @param[in] priority The POSIX API priority to convert and validate. 70 * @param[out] valid Indicates if the POSIX API priority is valid and a 71 * corresponding SuperCore priority in the specified scheduler instance 72 * exists. 69 73 * 70 * @retval true The priority is valid. 71 * @retval false Otherwise. 74 * @return The corresponding SuperCore priority. 72 75 */ 73 bool _POSIX_Priority_Is_valid(76 Priority_Control _POSIX_Priority_To_core( 74 77 const Scheduler_Control *scheduler, 75 int priority 78 int priority, 79 bool *valid 76 80 ); 77 81 -
cpukit/posix/src/mutexinit.c
r5a32c48 r1a4eac50 108 108 109 109 if ( protocol == POSIX_MUTEX_PRIORITY_CEILING ) { 110 int prio_ceiling; 110 int prio_ceiling; 111 bool valid; 111 112 112 113 scheduler = _Scheduler_Get_own( _Thread_Get_executing() ); … … 117 118 } 118 119 119 if ( !_POSIX_Priority_Is_valid( scheduler, prio_ceiling ) ) { 120 priority = _POSIX_Priority_To_core( scheduler, prio_ceiling, &valid ); 121 if ( !valid ) { 120 122 return EINVAL; 121 123 } 122 123 priority = _POSIX_Priority_To_core( scheduler, prio_ceiling );124 124 } 125 125 -
cpukit/posix/src/mutexsetprioceiling.c
r5a32c48 r1a4eac50 34 34 POSIX_Mutex_Control *the_mutex; 35 35 const Scheduler_Control *scheduler; 36 bool valid; 37 Priority_Control priority; 36 38 int error; 37 39 int unlock_error; … … 60 62 ); 61 63 62 if ( _POSIX_Priority_Is_valid( scheduler, prioceiling ) ) { 63 Priority_Control priority; 64 65 priority = _POSIX_Priority_To_core( scheduler, prioceiling ); 64 priority = _POSIX_Priority_To_core( scheduler, prioceiling, &valid ); 65 if ( valid ) { 66 66 the_mutex->Mutex.priority_ceiling = priority; 67 68 67 error = 0; 69 68 } else { -
cpukit/posix/src/psxpriorityisvalid.c
r5a32c48 r1a4eac50 30 30 } 31 31 32 bool _POSIX_Priority_Is_valid(32 Priority_Control _POSIX_Priority_To_core( 33 33 const Scheduler_Control *scheduler, 34 int priority 34 int posix_priority, 35 bool *valid 35 36 ) 36 37 { 37 return priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY 38 && (Priority_Control) priority < scheduler->maximum_priority; 38 Priority_Control core_posix_priority; 39 Priority_Control core_priority; 40 41 core_posix_priority = (Priority_Control) posix_priority; 42 core_priority = scheduler->maximum_priority - core_posix_priority; 43 44 *valid = ( posix_priority >= POSIX_SCHEDULER_MINIMUM_PRIORITY 45 && core_posix_priority < scheduler->maximum_priority ); 46 47 return core_priority; 39 48 } 40 -
cpukit/posix/src/pthreadcreate.c
r5a32c48 r1a4eac50 63 63 int low_prio; 64 64 int high_prio; 65 bool valid; 65 66 Priority_Control core_low_prio; 66 67 Priority_Control core_high_prio; … … 155 156 scheduler = _Scheduler_Get_own( executing ); 156 157 157 if ( !_POSIX_Priority_Is_valid( scheduler, low_prio ) ) { 158 return EINVAL; 159 } 160 161 if ( !_POSIX_Priority_Is_valid( scheduler, high_prio ) ) { 162 return EINVAL; 163 } 164 165 core_low_prio = _POSIX_Priority_To_core( scheduler, low_prio ); 166 core_high_prio = _POSIX_Priority_To_core( scheduler, high_prio ); 158 core_low_prio = _POSIX_Priority_To_core( scheduler, low_prio, &valid ); 159 if ( !valid ) { 160 return EINVAL; 161 } 162 163 core_high_prio = _POSIX_Priority_To_core( scheduler, high_prio, &valid ); 164 if ( !valid ) { 165 return EINVAL; 166 } 167 167 168 168 #if defined(RTEMS_SMP) -
cpukit/posix/src/pthreadsetschedparam.c
r5a32c48 r1a4eac50 51 51 int low_prio; 52 52 int high_prio; 53 bool valid; 53 54 Priority_Control core_low_prio; 54 55 Priority_Control core_high_prio; … … 67 68 } 68 69 69 if ( !_POSIX_Priority_Is_valid( scheduler, low_prio ) ) { 70 core_low_prio = _POSIX_Priority_To_core( scheduler, low_prio, &valid ); 71 if ( !valid ) { 70 72 context->error = EINVAL; 71 73 return false; 72 74 } 73 75 74 if ( !_POSIX_Priority_Is_valid( scheduler, high_prio ) ) { 76 core_high_prio = _POSIX_Priority_To_core( scheduler, high_prio, &valid ); 77 if ( !valid ) { 75 78 context->error = EINVAL; 76 79 return false; 77 80 } 78 79 core_low_prio = _POSIX_Priority_To_core( scheduler, low_prio );80 core_high_prio = _POSIX_Priority_To_core( scheduler, high_prio );81 81 82 82 *new_priority_p = core_high_prio; -
cpukit/posix/src/pthreadsetschedprio.c
r5a32c48 r1a4eac50 34 34 const Scheduler_Control *scheduler; 35 35 POSIX_API_Control *api; 36 bool valid; 36 37 Priority_Control current_priority; 37 38 Priority_Control new_priority; … … 41 42 scheduler = _Scheduler_Get_own( the_thread ); 42 43 43 if ( !_POSIX_Priority_Is_valid( scheduler, prio ) ) { 44 new_priority = _POSIX_Priority_To_core( scheduler, prio, &valid ); 45 if ( !valid ) { 44 46 context->error = EINVAL; 45 47 return false; 46 48 } 47 49 48 new_priority = _POSIX_Priority_To_core( scheduler, prio );49 50 *new_priority_p = new_priority; 50 51
Note: See TracChangeset
for help on using the changeset viewer.