diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-05-02 14:06:38 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-05-19 12:00:47 +0200 |
commit | d12b3135232ae3a70a8af66917dc7986fdd309e8 (patch) | |
tree | 2f72a0c281a4b338e3d40642a219efa8deca9c0f /cpukit/score/src/coresemsurrender.c | |
parent | score: Inline _CORE_semaphore_Flush() (diff) | |
download | rtems-d12b3135232ae3a70a8af66917dc7986fdd309e8.tar.bz2 |
score: Inline _CORE_semaphore_Surrender()
Diffstat (limited to 'cpukit/score/src/coresemsurrender.c')
-rw-r--r-- | cpukit/score/src/coresemsurrender.c | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/cpukit/score/src/coresemsurrender.c b/cpukit/score/src/coresemsurrender.c deleted file mode 100644 index 9b3d8fd4be..0000000000 --- a/cpukit/score/src/coresemsurrender.c +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @file - * - * @brief Surrenders a Unit to a Semaphore - * - * @ingroup ScoreSemaphore - */ - -/* - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include <rtems/score/coresemimpl.h> - -CORE_semaphore_Status _CORE_semaphore_Surrender( - CORE_semaphore_Control *the_semaphore, - Objects_Id id, - CORE_semaphore_API_mp_support_callout api_semaphore_mp_support, - ISR_lock_Context *lock_context -) -{ - Thread_Control *the_thread; - CORE_semaphore_Status status; - - status = CORE_SEMAPHORE_STATUS_SUCCESSFUL; - - _Thread_queue_Acquire_critical( &the_semaphore->Wait_queue, lock_context ); - - the_thread = _Thread_queue_First_locked( &the_semaphore->Wait_queue ); - if ( the_thread != NULL ) { -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch_disable(); -#endif - - _Thread_queue_Extract_critical( - &the_semaphore->Wait_queue, - the_thread, - lock_context - ); - -#if defined(RTEMS_MULTIPROCESSING) - if ( !_Objects_Is_local_id( the_thread->Object.id ) ) - (*api_semaphore_mp_support) ( the_thread, id ); - - _Thread_Dispatch_enable( _Per_CPU_Get() ); -#endif - } else { - if ( the_semaphore->count < the_semaphore->Attributes.maximum_count ) - the_semaphore->count += 1; - else - status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED; - - _Thread_queue_Release( &the_semaphore->Wait_queue, lock_context ); - } - - return status; -} |