Loading...
Searching...
No Matches
rmutex.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Theobroma Systems Design & Consulting GmbH
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
21
22#include <stdint.h>
23
24#include "mutex.h"
25#include "sched.h"
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
34typedef struct rmutex_t {
35 /* fields are managed by mutex functions, don't touch */
42
47 uint16_t refcount;
48
58
63#define RMUTEX_INIT { MUTEX_INIT, 0, KERNEL_PID_UNDEF }
64
71static inline void rmutex_init(rmutex_t *rmutex)
72{
73 rmutex_t empty_rmutex = RMUTEX_INIT;
74
75 *rmutex = empty_rmutex;
76}
77
88
95void rmutex_lock(rmutex_t *rmutex);
96
103
104#ifdef __cplusplus
105}
106#endif
107
int16_t kernel_pid_t
Unique process identifier.
Definition sched.h:135
void rmutex_lock(rmutex_t *rmutex)
Locks a recursive mutex, blocking.
#define RMUTEX_INIT
Static initializer for rmutex_t.
Definition rmutex.h:63
int rmutex_trylock(rmutex_t *rmutex)
Tries to get a recursive mutex, non-blocking.
static void rmutex_init(rmutex_t *rmutex)
Initializes a recursive mutex object.
Definition rmutex.h:71
void rmutex_unlock(rmutex_t *rmutex)
Unlocks the recursive mutex.
Mutex for thread synchronization.
Scheduler API definition.
Mutex structure.
Definition mutex.h:36
Mutex structure.
Definition rmutex.h:34
uint16_t refcount
Number of locks owned by the thread owner.
Definition rmutex.h:47
kernel_pid_t owner
Owner thread of the mutex.
Definition rmutex.h:56
mutex_t mutex
The mutex used for locking.
Definition rmutex.h:41