ca13734bf0
Add kernel (Cortex-M0/M3/M4, Tricore, S32K, RISC-V ports), drivers, middleware (CAN stack, diagnostics, safety), applications, board support, build/test tooling, and documentation.
29 lines
648 B
C
29 lines
648 B
C
/**
|
|
* @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 */
|