Mistake on this page?
Report an issue in GitHub or email us
Public Member Functions | Friends
rtos::Mutex Class Reference

#include <Mutex.h>

Inheritance diagram for rtos::Mutex:
mbed::NonCopyable< Mutex >

Public Member Functions

 Mutex ()
 
 Mutex (const char *name)
 
osStatus lock (uint32_t millisec=osWaitForever)
 
bool trylock ()
 
bool trylock_for (uint32_t millisec)
 
bool trylock_until (uint64_t millisec)
 
osStatus unlock ()
 
osThreadId get_owner ()
 
 ~Mutex ()
 

Friends

class ConditionVariable
 

Detailed Description

The Mutex class is used to synchronize the execution of threads. This is for example used to protect access to a shared resource.

Note
You cannot use member functions of this class in ISR context. If you require Mutex functionality within ISR handler, consider using Semaphore.
Memory considerations: The mutex control structures will be created on current thread's stack, both for the Mbed OS and underlying RTOS objects (static or dynamic RTOS memory pools are not being used).

Constructor & Destructor Documentation

rtos::Mutex::Mutex ( )

Create and Initialize a Mutex object

Note
You cannot call this function from ISR context.
rtos::Mutex::Mutex ( const char *  name)

Create and Initialize a Mutex object

Parameters
namename to be used for this mutex. It has to stay allocated for the lifetime of the thread.
Note
You cannot call this function from ISR context.
rtos::Mutex::~Mutex ( )

Mutex destructor

Note
You cannot call this function from ISR context.

Member Function Documentation

osThreadId rtos::Mutex::get_owner ( )

Get the owner the this mutex

Returns
the current owner of this mutex.
Note
You cannot call this function from ISR context.
osStatus rtos::Mutex::lock ( uint32_t  millisec = osWaitForever)

Wait until a Mutex becomes available.

Parameters
millisectimeout value or 0 in case of no time-out. (default: osWaitForever)
Returns
status code that indicates the execution status of the function: osOK the mutex has been obtained. osErrorTimeout the mutex could not be obtained in the given time. osErrorParameter internal error. osErrorResource the mutex could not be obtained when no timeout was specified. osErrorISR this function cannot be called from the interrupt service routine.
Note
You cannot call this function from ISR context.
bool rtos::Mutex::trylock ( )

Try to lock the mutex, and return immediately

Returns
true if the mutex was acquired, false otherwise.
Note
equivalent to trylock_for(0)
You cannot call this function from ISR context.
bool rtos::Mutex::trylock_for ( uint32_t  millisec)

Try to lock the mutex for a specified time

Parameters
millisectimeout value or 0 in case of no time-out.
Returns
true if the mutex was acquired, false otherwise.
Note
the underlying RTOS may have a limit to the maximum wait time due to internal 32-bit computations, but this is guaranteed to work if the wait is <= 0x7fffffff milliseconds (~24 days). If the limit is exceeded, the lock attempt will time out earlier than specified.
You cannot call this function from ISR context.
bool rtos::Mutex::trylock_until ( uint64_t  millisec)

Try to lock the mutex until specified time

Parameters
millisecabsolute timeout time, referenced to Kernel::get_ms_count()
Returns
true if the mutex was acquired, false otherwise.
Note
the underlying RTOS may have a limit to the maximum wait time due to internal 32-bit computations, but this is guaranteed to work if the wait is <= 0x7fffffff milliseconds (~24 days). If the limit is exceeded, the lock attempt will time out earlier than specified.
You cannot call this function from ISR context.
osStatus rtos::Mutex::unlock ( void  )

Unlock the mutex that has previously been locked by the same thread

Returns
status code that indicates the execution status of the function: osOK the mutex has been released. osErrorParameter internal error. osErrorResource the mutex was not locked or the current thread wasn't the owner. osErrorISR this function cannot be called from the interrupt service routine.
Note
You cannot call this function from ISR context.

The documentation for this class was generated from the following files:
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.