12#ifndef __METAL_MUTEX__H__
13#error "Include metal/mutex.h instead of metal/generic/mutex.h"
16#ifndef __METAL_GENERIC_MUTEX__H__
17#define __METAL_GENERIC_MUTEX__H__
19#include <metal/atomic.h>
29#define METAL_MUTEX_UNLOCKED 0
30#define METAL_MUTEX_LOCKED 1
36#define METAL_MUTEX_INIT(m) { ATOMIC_VAR_INIT(METAL_MUTEX_UNLOCKED) }
41#define METAL_MUTEX_DEFINE(m) metal_mutex_t m = METAL_MUTEX_INIT(m)
#define atomic_load(OBJ)
Definition atomic.h:60
int atomic_int
Definition atomic.h:24
#define atomic_compare_exchange_strong(OBJ, EXP, DES)
Definition atomic.h:79
#define atomic_store(OBJ, VAL)
Definition atomic.h:56
#define atomic_compare_exchange_weak(OBJ, EXP, DES)
Definition atomic.h:91
static void __metal_mutex_release(metal_mutex_t *mutex)
Definition mutex.h:64
static void __metal_mutex_deinit(metal_mutex_t *mutex)
Definition mutex.h:45
static int __metal_mutex_try_acquire(metal_mutex_t *mutex)
Definition mutex.h:52
static int __metal_mutex_is_acquired(metal_mutex_t *mutex)
Definition mutex.h:70
static void __metal_mutex_acquire(metal_mutex_t *mutex)
Definition mutex.h:58
static void __metal_mutex_init(metal_mutex_t *mutex)
Definition mutex.h:38
#define METAL_MUTEX_UNLOCKED
Definition mutex.h:29
#define METAL_MUTEX_LOCKED
Definition mutex.h:30
mutex_t metal_mutex_t
Definition mutex.h:25