C Microkernel Realtime eXecutive
Realtime Operating System for Cortex-M based microcontrollers
 
Loading...
Searching...
No Matches
mutex.h
1
12#pragma once
13
14#include <stdint.h>
15#include <arch/sysenter.h>
16
17#define MUTEX_INITIALIZED 1
18
23#define FUTEX_STATIC_INIT { 0xFF, 0, 0 }
24
25#define FUTEX_SUCCESS 0
26#define FUTEX_FAILURE 1
27
35typedef struct {
36 uint8_t state;
37 uint8_t owner;
38} futex_t;
39
40/* Mutex structure.
41 * It wraps futex, which is being operated from within
42 * kernel context. Kernel is using futex internally, so
43 * there is no need to use big kernel lock.
44 */
46
55int futex_init(futex_t * restrict futex);
56int futex_destroy(futex_t * futex);
57int futex_lock(futex_t * futex);
58int futex_unlock(futex_t * futex);
59int futex_trylock(futex_t * futex);
60
int futex_init(futex_t *restrict futex)
Futexes Futex is fast userspace mutex.
Definition mutex.c:96
int futex_unlock(futex_t *futex)
Definition mutex.c:127
int futex_trylock(futex_t *futex)
Definition mutex.c:119
futex_t mutex_t
Definition mutex.h:45
int futex_lock(futex_t *futex)
Definition mutex.c:104
int futex_destroy(futex_t *futex)
Definition mutex.c:141
Futex structure.
Definition mutex.h:35
uint8_t owner
Definition mutex.h:37
uint8_t state
Definition mutex.h:36