RTEMS  5.0.0
Files | Data Structures | Macros | Enumerations | Functions
ScoreRWLock

ScoreRWLock. More...

Files

file  corerwlock.c
 
file  corerwlockobtainread.c
 Obtain RWLock for reading.
 
file  corerwlockobtainwrite.c
 RWLock Obtain for Writing.
 
file  corerwlockrelease.c
 Releases the RWLock.
 

Data Structures

struct  CORE_RWLock_Control
 

Macros

#define CORE_RWLOCK_TQ_OPERATIONS   &_Thread_queue_Operations_FIFO
 
#define CORE_RWLOCK_THREAD_WAITING_FOR_READ   0
 
#define CORE_RWLOCK_THREAD_WAITING_FOR_WRITE   1
 

Enumerations

enum  CORE_RWLock_States { CORE_RWLOCK_UNLOCKED, CORE_RWLOCK_LOCKED_FOR_READING, CORE_RWLOCK_LOCKED_FOR_WRITING }
 

Functions

void _CORE_RWLock_Initialize (CORE_RWLock_Control *the_rwlock)
 Initialize a RWlock. More...
 
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Destroy (CORE_RWLock_Control *the_rwlock)
 
RTEMS_INLINE_ROUTINE Thread_Control_CORE_RWLock_Acquire (CORE_RWLock_Control *the_rwlock, Thread_queue_Context *queue_context)
 
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Release (CORE_RWLock_Control *the_rwlock, Thread_queue_Context *queue_context)
 
Status_Control _CORE_RWLock_Seize_for_reading (CORE_RWLock_Control *the_rwlock, bool wait, Thread_queue_Context *queue_context)
 Obtain RWLock for reading. More...
 
Status_Control _CORE_RWLock_Seize_for_writing (CORE_RWLock_Control *the_rwlock, bool wait, Thread_queue_Context *queue_context)
 Obtain RWLock for writing. More...
 
Status_Control _CORE_RWLock_Surrender (CORE_RWLock_Control *the_rwlock)
 Release the RWLock. More...
 

Detailed Description

ScoreRWLock.

Macro Definition Documentation

◆ CORE_RWLOCK_THREAD_WAITING_FOR_READ

#define CORE_RWLOCK_THREAD_WAITING_FOR_READ   0

This is used to denote that a thread is blocking waiting for read-only access to the RWLock.

◆ CORE_RWLOCK_THREAD_WAITING_FOR_WRITE

#define CORE_RWLOCK_THREAD_WAITING_FOR_WRITE   1

This is used to denote that a thread is blocking waiting for write-exclusive access to the RWLock.

Enumeration Type Documentation

◆ CORE_RWLock_States

RWLock State.

Enumerator
CORE_RWLOCK_UNLOCKED 

This indicates the the RWLock is not currently locked.

CORE_RWLOCK_LOCKED_FOR_READING 

This indicates the the RWLock is currently locked for reading.

CORE_RWLOCK_LOCKED_FOR_WRITING 

This indicates the the RWLock is currently locked for reading.

Function Documentation

◆ _CORE_RWLock_Initialize()

void _CORE_RWLock_Initialize ( CORE_RWLock_Control the_rwlock)

Initialize a RWlock.

This routine initializes the RWLock based on the parameters passed.

Parameters
[in]the_rwlockis the RWLock to initialize

◆ _CORE_RWLock_Seize_for_reading()

Status_Control _CORE_RWLock_Seize_for_reading ( CORE_RWLock_Control the_rwlock,
bool  wait,
Thread_queue_Context queue_context 
)

Obtain RWLock for reading.

This routine attempts to obtain the RWLock for read access.

Parameters
[in]the_rwlockis the RWLock to wait for
[in]waitis true if the calling thread is willing to wait

◆ _CORE_RWLock_Seize_for_writing()

Status_Control _CORE_RWLock_Seize_for_writing ( CORE_RWLock_Control the_rwlock,
bool  wait,
Thread_queue_Context queue_context 
)

Obtain RWLock for writing.

This routine attempts to obtain the RWLock for write exclusive access.

Parameters
[in]the_rwlockis the RWLock to wait for
[in]waitis true if the calling thread is willing to wait

◆ _CORE_RWLock_Surrender()

Status_Control _CORE_RWLock_Surrender ( CORE_RWLock_Control the_rwlock)

Release the RWLock.

This routine manually releases the_rwlock. All of the threads waiting for the RWLock will be readied.

Parameters
[in]the_rwlockis the RWLock to surrender
Return values
Statusis returned to indicate successful or failure.