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.
36 lines
1015 B
C
36 lines
1015 B
C
/**
|
|
* @file queue.h
|
|
* @brief Message queue for inter-task communication
|
|
*/
|
|
|
|
#ifndef QUEUE_H
|
|
#define QUEUE_H
|
|
|
|
#include "kernel.h"
|
|
|
|
/* Queue Control Block */
|
|
typedef struct {
|
|
void* buffer;
|
|
uint32_t item_size;
|
|
uint32_t max_items;
|
|
uint32_t current_items;
|
|
uint32_t head;
|
|
uint32_t tail;
|
|
TaskHandle_t* waiting_senders;
|
|
TaskHandle_t* waiting_receivers;
|
|
uint32_t waiting_sender_count;
|
|
uint32_t waiting_receiver_count;
|
|
} Queue_t;
|
|
|
|
/* Queue Functions */
|
|
KernelStatus_t queue_create(Queue_t* queue, void* buffer, uint32_t item_size,
|
|
uint32_t max_items);
|
|
KernelStatus_t queue_send(Queue_t* queue, const void* item, TimeOut_t timeout);
|
|
KernelStatus_t queue_receive(Queue_t* queue, void* item, TimeOut_t timeout);
|
|
KernelStatus_t queue_send_from_isr(Queue_t* queue, const void* item);
|
|
KernelStatus_t queue_receive_from_isr(Queue_t* queue, void* item);
|
|
uint32_t queue_get_count(Queue_t* queue);
|
|
KernelStatus_t queue_delete(Queue_t* queue);
|
|
|
|
#endif /* QUEUE_H */
|