123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- #ifndef ZEPHYR_INCLUDE_SYS_MUTEX_H_
- #define ZEPHYR_INCLUDE_SYS_MUTEX_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifdef CONFIG_USERSPACE
- #include <sys/atomic.h>
- #include <zephyr/types.h>
- #include <sys_clock.h>
- struct sys_mutex {
-
- atomic_t val;
- };
- #define SYS_MUTEX_DEFINE(name) \
- struct sys_mutex name
- static inline void sys_mutex_init(struct sys_mutex *mutex)
- {
- ARG_UNUSED(mutex);
-
- }
- __syscall int z_sys_mutex_kernel_lock(struct sys_mutex *mutex,
- k_timeout_t timeout);
- __syscall int z_sys_mutex_kernel_unlock(struct sys_mutex *mutex);
- static inline int sys_mutex_lock(struct sys_mutex *mutex, k_timeout_t timeout)
- {
-
- return z_sys_mutex_kernel_lock(mutex, timeout);
- }
- static inline int sys_mutex_unlock(struct sys_mutex *mutex)
- {
-
- return z_sys_mutex_kernel_unlock(mutex);
- }
- #include <syscalls/mutex.h>
- #else
- #include <kernel.h>
- #include <kernel_structs.h>
- struct sys_mutex {
- struct k_mutex kernel_mutex;
- };
- #define SYS_MUTEX_DEFINE(name) \
- struct sys_mutex name = { \
- .kernel_mutex = Z_MUTEX_INITIALIZER(name.kernel_mutex) \
- }
- static inline void sys_mutex_init(struct sys_mutex *mutex)
- {
- k_mutex_init(&mutex->kernel_mutex);
- }
- static inline int sys_mutex_lock(struct sys_mutex *mutex, k_timeout_t timeout)
- {
- return k_mutex_lock(&mutex->kernel_mutex, timeout);
- }
- static inline int sys_mutex_unlock(struct sys_mutex *mutex)
- {
- return k_mutex_unlock(&mutex->kernel_mutex);
- }
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|