RTEMS CPU Kit with SuperCore  4.11.2
Macros | Typedefs | Enumerations | Functions
coremuteximpl.h File Reference

CORE Mutex Implementation. More...

#include <rtems/score/coremutex.h>
#include <rtems/score/chainimpl.h>
#include <rtems/score/sysstate.h>
#include <rtems/score/threadimpl.h>
#include <rtems/score/threadqimpl.h>
Include dependency graph for coremuteximpl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define CORE_MUTEX_STATUS_LAST   CORE_MUTEX_STATUS_CEILING_VIOLATED
 The last status value. More...
 
#define _CORE_mutex_Seize_interrupt_trylock(_mutex, _executing, _lock_context)   _CORE_mutex_Seize_interrupt_trylock_body( _mutex, _executing, _lock_context )
 The default is to favor speed and inlining this definitely saves a few instructions. More...
 
#define _CORE_mutex_Check_dispatch_for_seize(_wait)
 Verifies that a mutex blocking seize is performed safely. More...
 
#define _CORE_mutex_Seize(_the_mutex, _executing, _id, _wait, _timeout, _lock_context)
 This method is used to obtain a core mutex. More...
 

Typedefs

typedef void(* CORE_mutex_API_mp_support_callout) (Thread_Control *, Objects_Id)
 Callout which provides to support global/multiprocessor operations. More...
 

Enumerations

enum  CORE_mutex_Status {
  CORE_MUTEX_STATUS_SUCCESSFUL, CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT, CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE, CORE_MUTEX_WAS_DELETED,
  CORE_MUTEX_TIMEOUT, CORE_MUTEX_STATUS_CEILING_VIOLATED
}
 The possible Mutex handler return statuses. More...
 

Functions

CORE_mutex_Status _CORE_mutex_Initialize (CORE_mutex_Control *the_mutex, Thread_Control *executing, const CORE_mutex_Attributes *the_mutex_attributes, bool initially_locked)
 Initializes the mutex based on the parameters passed. More...
 
RTEMS_INLINE_ROUTINE void _CORE_mutex_Destroy (CORE_mutex_Control *the_mutex)
 
RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body (CORE_mutex_Control *the_mutex, Thread_Control *executing, ISR_lock_Context *lock_context)
 Attempt to receive a unit from the_mutex. More...
 
void _CORE_mutex_Seize_interrupt_blocking (CORE_mutex_Control *the_mutex, Thread_Control *executing, Watchdog_Interval timeout, ISR_lock_Context *lock_context)
 Performs the blocking portion of a mutex obtain. More...
 
RTEMS_INLINE_ROUTINE void _CORE_mutex_Seize_body (CORE_mutex_Control *the_mutex, Thread_Control *executing, Objects_Id id, bool wait, Watchdog_Interval timeout, ISR_lock_Context *lock_context)
 Attempt to obtain the mutex. More...
 
CORE_mutex_Status _CORE_mutex_Surrender (CORE_mutex_Control *the_mutex, Objects_Id id, CORE_mutex_API_mp_support_callout api_mutex_mp_support, ISR_lock_Context *lock_context)
 Frees a unit to the mutex. More...
 
void _CORE_mutex_Flush (CORE_mutex_Control *the_mutex, Thread_queue_Flush_callout remote_extract_callout, uint32_t status)
 Flush all waiting threads. More...
 
RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_locked (const CORE_mutex_Control *the_mutex)
 Is mutex locked. More...
 
RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_fifo (const CORE_mutex_Attributes *the_attribute)
 Does core mutex use FIFO blocking. More...
 
RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_priority (CORE_mutex_Attributes *the_attribute)
 Doex core mutex use priority blocking. More...
 
RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_inherit_priority (CORE_mutex_Attributes *the_attribute)
 Does mutex use priority inheritance. More...
 
RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_priority_ceiling (CORE_mutex_Attributes *the_attribute)
 Does mutex use priority ceiling. More...
 

Detailed Description

CORE Mutex Implementation.