Files
RTOS/kernel/include/queue.h
T
root ca13734bf0 Add full automotive RTOS project
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.
2026-08-23 03:35:29 -04:00

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 */