diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-07-24 09:00:18 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-07-25 10:07:42 +0200 |
commit | a1f7d7d430466fe66ead3155a9015ddde237fd44 (patch) | |
tree | 345c928410b1a7216b48473f4792742389b540e1 /cpukit/score/src | |
parent | _SMP_Start_multitasking_on_secondary_processor() (diff) | |
download | rtems-a1f7d7d430466fe66ead3155a9015ddde237fd44.tar.bz2 |
score: RTEMS_PREDICT_TRUE(), RTEMS_PREDICT_FALSE()
Add RTEMS_PREDICT_TRUE() and RTEMS_PREDICT_FALSE() for static branch
prediction hints.
Close #3475.
Diffstat (limited to 'cpukit/score/src')
-rw-r--r-- | cpukit/score/src/condition.c | 4 | ||||
-rw-r--r-- | cpukit/score/src/futex.c | 2 | ||||
-rw-r--r-- | cpukit/score/src/mutex.c | 16 | ||||
-rw-r--r-- | cpukit/score/src/semaphore.c | 10 |
4 files changed, 17 insertions, 15 deletions
diff --git a/cpukit/score/src/condition.c b/cpukit/score/src/condition.c index 9913d86d34..892245baf5 100644 --- a/cpukit/score/src/condition.c +++ b/cpukit/score/src/condition.c @@ -279,7 +279,9 @@ static void _Condition_Wake( struct _Condition_Control *_condition, int count ) * In common uses cases of condition variables there are normally no threads * on the queue, so check this condition early. */ - if ( __predict_true( _Thread_queue_Is_empty( &condition->Queue.Queue ) ) ) { + if ( + RTEMS_PREDICT_TRUE( _Thread_queue_Is_empty( &condition->Queue.Queue ) ) + ) { _Condition_Queue_release( condition, &context.Base ); return; } diff --git a/cpukit/score/src/futex.c b/cpukit/score/src/futex.c index 6487882819..f32a13c449 100644 --- a/cpukit/score/src/futex.c +++ b/cpukit/score/src/futex.c @@ -151,7 +151,7 @@ int _Futex_Wake( struct _Futex_Control *_futex, int count ) * called in the fast path. Normally there are no threads on the queue, so * check this condition early. */ - if ( __predict_true( _Thread_queue_Is_empty( &futex->Queue.Queue ) ) ) { + if ( RTEMS_PREDICT_TRUE( _Thread_queue_Is_empty( &futex->Queue.Queue ) ) ) { _Futex_Queue_release( futex, level, &context.Base ); return 0; } diff --git a/cpukit/score/src/mutex.c b/cpukit/score/src/mutex.c index e2f5bb52fc..8cc47f28bb 100644 --- a/cpukit/score/src/mutex.c +++ b/cpukit/score/src/mutex.c @@ -128,7 +128,7 @@ static void _Mutex_Release_critical( mutex->Queue.Queue.owner = NULL; _Thread_Resource_count_decrement( executing ); - if ( __predict_true( heads == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( heads == NULL ) ) { _Mutex_Queue_release( mutex, level, queue_context ); } else { _Thread_queue_Context_set_ISR_level( queue_context, level ); @@ -157,7 +157,7 @@ void _Mutex_Acquire( struct _Mutex_Control *_mutex ) owner = mutex->Queue.Queue.owner; - if ( __predict_true( owner == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( owner == NULL ) ) { mutex->Queue.Queue.owner = executing; _Thread_Resource_count_increment( executing ); _Mutex_Queue_release( mutex, level, &queue_context ); @@ -185,7 +185,7 @@ int _Mutex_Acquire_timed( owner = mutex->Queue.Queue.owner; - if ( __predict_true( owner == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( owner == NULL ) ) { mutex->Queue.Queue.owner = executing; _Thread_Resource_count_increment( executing ); _Mutex_Queue_release( mutex, level, &queue_context ); @@ -218,7 +218,7 @@ int _Mutex_Try_acquire( struct _Mutex_Control *_mutex ) owner = mutex->Queue.Queue.owner; - if ( __predict_true( owner == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( owner == NULL ) ) { mutex->Queue.Queue.owner = executing; _Thread_Resource_count_increment( executing ); eno = 0; @@ -270,7 +270,7 @@ void _Mutex_recursive_Acquire( struct _Mutex_recursive_Control *_mutex ) owner = mutex->Mutex.Queue.Queue.owner; - if ( __predict_true( owner == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( owner == NULL ) ) { mutex->Mutex.Queue.Queue.owner = executing; _Thread_Resource_count_increment( executing ); _Mutex_Queue_release( &mutex->Mutex, level, &queue_context ); @@ -301,7 +301,7 @@ int _Mutex_recursive_Acquire_timed( owner = mutex->Mutex.Queue.Queue.owner; - if ( __predict_true( owner == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( owner == NULL ) ) { mutex->Mutex.Queue.Queue.owner = executing; _Thread_Resource_count_increment( executing ); _Mutex_Queue_release( &mutex->Mutex, level, &queue_context ); @@ -339,7 +339,7 @@ int _Mutex_recursive_Try_acquire( struct _Mutex_recursive_Control *_mutex ) owner = mutex->Mutex.Queue.Queue.owner; - if ( __predict_true( owner == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( owner == NULL ) ) { mutex->Mutex.Queue.Queue.owner = executing; _Thread_Resource_count_increment( executing ); eno = 0; @@ -372,7 +372,7 @@ void _Mutex_recursive_Release( struct _Mutex_recursive_Control *_mutex ) nest_level = mutex->nest_level; - if ( __predict_true( nest_level == 0 ) ) { + if ( RTEMS_PREDICT_TRUE( nest_level == 0 ) ) { _Mutex_Release_critical( &mutex->Mutex, executing, level, &queue_context ); } else { mutex->nest_level = nest_level - 1; diff --git a/cpukit/score/src/semaphore.c b/cpukit/score/src/semaphore.c index f76ee332a4..f9b8b48fe1 100644 --- a/cpukit/score/src/semaphore.c +++ b/cpukit/score/src/semaphore.c @@ -53,7 +53,7 @@ void _Semaphore_Wait( struct _Semaphore_Control *_sem ) executing = _Sem_Queue_acquire_critical( sem, &queue_context ); count = sem->count; - if ( __predict_true( count > 0 ) ) { + if ( RTEMS_PREDICT_TRUE( count > 0 ) ) { sem->count = count - 1; _Sem_Queue_release( sem, level, &queue_context ); } else { @@ -86,7 +86,7 @@ int _Semaphore_Wait_timed_ticks( struct _Semaphore_Control *_sem, uint32_t ticks executing = _Sem_Queue_acquire_critical( sem, &queue_context ); count = sem->count; - if ( __predict_true( count > 0 ) ) { + if ( RTEMS_PREDICT_TRUE( count > 0 ) ) { sem->count = count - 1; _Sem_Queue_release( sem, level, &queue_context ); return 0; @@ -121,7 +121,7 @@ int _Semaphore_Try_wait( struct _Semaphore_Control *_sem ) _Sem_Queue_acquire_critical( sem, &queue_context ); count = sem->count; - if ( __predict_true( count > 0 ) ) { + if ( RTEMS_PREDICT_TRUE( count > 0 ) ) { sem->count = count - 1; eno = 0; } else { @@ -145,7 +145,7 @@ void _Semaphore_Post( struct _Semaphore_Control *_sem ) _Sem_Queue_acquire_critical( sem, &queue_context ); heads = sem->Queue.Queue.heads; - if ( __predict_true( heads == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( heads == NULL ) ) { ++sem->count; _Sem_Queue_release( sem, level, &queue_context ); } else { @@ -178,7 +178,7 @@ void _Semaphore_Post_binary( struct _Semaphore_Control *_sem ) _Sem_Queue_acquire_critical( sem, &queue_context ); heads = sem->Queue.Queue.heads; - if ( __predict_true( heads == NULL ) ) { + if ( RTEMS_PREDICT_TRUE( heads == NULL ) ) { sem->count = 1; _Sem_Queue_release( sem, level, &queue_context ); } else { |