The friendly Operating System for the Internet of Things
rmutex.h File Reference

Recursive Mutex for thread synchronization. More...

Detailed Description

#include <stdatomic.h>
#include "mutex.h"
#include "kernel_types.h"
+ Include dependency graph for rmutex.h:

Go to the source code of this file.

Data Structures

struct  rmutex_t
 Mutex structure. More...
 
#define RMUTEX_INIT   { MUTEX_INIT, 0, ATOMIC_VAR_INIT(KERNEL_PID_UNDEF) }
 Static initializer for rmutex_t. More...
 
typedef struct rmutex_t rmutex_t
 Mutex structure. More...
 
static void rmutex_init (rmutex_t *rmutex)
 Initializes a recursive mutex object. More...
 
int rmutex_trylock (rmutex_t *rmutex)
 Tries to get a recursive mutex, non-blocking. More...
 
void rmutex_lock (rmutex_t *rmutex)
 Locks a recursive mutex, blocking. More...
 
void rmutex_unlock (rmutex_t *rmutex)
 Unlocks the recursive mutex. More...
 

Macro Definition Documentation

#define RMUTEX_INIT   { MUTEX_INIT, 0, ATOMIC_VAR_INIT(KERNEL_PID_UNDEF) }

This initializer is preferable to rmutex_init().

Definition at line 65 of file rmutex.h.

Typedef Documentation

typedef struct rmutex_t rmutex_t

Must never be modified by the user.

Function Documentation

static void rmutex_init ( rmutex_t rmutex)
inlinestatic

For initialization of variables use RMUTEX_INIT instead. Only use the function call for dynamically allocated mutexes.

Parameters
[out]rmutexpre-allocated mutex structure, must not be NULL.

Definition at line 73 of file rmutex.h.

void rmutex_lock ( rmutex_t rmutex)
Parameters
[in]rmutexRecursive mutex object to lock. Has to be initialized first. Must not be NULL.
int rmutex_trylock ( rmutex_t rmutex)
Parameters
[in]rmutexRecursive mutex object to lock. Has to be initialized first. Must not be NULL.
Returns
1 if mutex was unlocked, now it is locked.
0 if the mutex was locked.
void rmutex_unlock ( rmutex_t rmutex)
Parameters
[in]rmutexRecursive mutex object to unlock, must not be NULL.