/** * @file mutex.h * @brief Mutex with priority inheritance */ #ifndef MUTEX_H #define MUTEX_H #include "kernel.h" /* Mutex Control Block */ typedef struct { TaskHandle_t owner; TaskPriority_t original_priority; uint32_t lock_count; TaskHandle_t* waiting_tasks; uint32_t waiting_count; bool recursive; } Mutex_t; /* Mutex Functions */ KernelStatus_t mutex_create(Mutex_t* mutex, bool recursive); KernelStatus_t mutex_lock(Mutex_t* mutex, TimeOut_t timeout); KernelStatus_t mutex_unlock(Mutex_t* mutex); KernelStatus_t mutex_delete(Mutex_t* mutex); TaskHandle_t mutex_get_owner(Mutex_t* mutex); #endif /* MUTEX_H */