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.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @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 */
|
||||
Reference in New Issue
Block a user