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.
103 lines
2.6 KiB
C
103 lines
2.6 KiB
C
/**
|
|
* @file kernel.h
|
|
* @brief Core kernel definitions and types for Automotive RTOS
|
|
* @author Automotive RTOS Team
|
|
* @version 1.0
|
|
*/
|
|
|
|
#ifndef KERNEL_H
|
|
#define KERNEL_H
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
/* Kernel Version */
|
|
#define KERNEL_VERSION_MAJOR 1
|
|
#define KERNEL_VERSION_MINOR 0
|
|
#define KERNEL_VERSION_PATCH 0
|
|
|
|
/* Configuration Constants */
|
|
#define MAX_TASKS 32
|
|
#define MAX_PRIORITY_LEVELS 16
|
|
#define MAX_TASK_NAME_LENGTH 16
|
|
#define IDLE_TASK_PRIORITY (MAX_PRIORITY_LEVELS - 1)
|
|
|
|
/* Task States */
|
|
typedef enum {
|
|
TASK_SUSPENDED = 0,
|
|
TASK_READY = 1,
|
|
TASK_RUNNING = 2,
|
|
TASK_BLOCKED = 3,
|
|
TASK_TERMINATED = 4
|
|
} TaskState_t;
|
|
|
|
/* Task Priority Type */
|
|
typedef uint8_t TaskPriority_t;
|
|
|
|
/* Task Handle */
|
|
typedef struct TaskControlBlock* TaskHandle_t;
|
|
|
|
/* Task Function */
|
|
typedef void (*TaskFunction_t)(void* parameters);
|
|
|
|
/* Time Types */
|
|
typedef uint32_t TickType_t;
|
|
typedef uint32_t TimeOut_t;
|
|
|
|
/* Error Codes */
|
|
typedef enum {
|
|
KERNEL_OK = 0,
|
|
KERNEL_ERROR = -1,
|
|
KERNEL_INVALID_PARAMETER = -2,
|
|
KERNEL_OUT_OF_MEMORY = -3,
|
|
KERNEL_TASK_NOT_FOUND = -4,
|
|
KERNEL_PRIORITY_INVALID = -5,
|
|
KERNEL_TIMEOUT = -6,
|
|
KERNEL_RESOURCE_BUSY = -7
|
|
} KernelStatus_t;
|
|
|
|
/* Task Creation Parameters */
|
|
typedef struct {
|
|
const char* name;
|
|
TaskFunction_t function;
|
|
void* parameters;
|
|
uint32_t stack_size;
|
|
TaskPriority_t priority;
|
|
TickType_t period_ticks; /* 0 for aperiodic tasks */
|
|
} TaskConfig_t;
|
|
|
|
/* Task Statistics */
|
|
typedef struct {
|
|
uint32_t execution_count;
|
|
TickType_t last_execution_time;
|
|
TickType_t max_execution_time;
|
|
TickType_t total_execution_time;
|
|
uint32_t stack_high_water_mark;
|
|
uint32_t deadline_misses;
|
|
} TaskStatistics_t;
|
|
|
|
/* Kernel Core Functions */
|
|
KernelStatus_t kernel_init(void);
|
|
KernelStatus_t kernel_start(void);
|
|
void kernel_stop(void);
|
|
TickType_t kernel_get_tick_count(void);
|
|
KernelStatus_t kernel_delay(TickType_t ticks);
|
|
|
|
/* Task Management Functions */
|
|
TaskHandle_t task_create(const TaskConfig_t* config);
|
|
KernelStatus_t task_delete(TaskHandle_t task);
|
|
KernelStatus_t task_suspend(TaskHandle_t task);
|
|
KernelStatus_t task_resume(TaskHandle_t task);
|
|
KernelStatus_t task_set_priority(TaskHandle_t task, TaskPriority_t new_priority);
|
|
TaskPriority_t task_get_priority(TaskHandle_t task);
|
|
TaskState_t task_get_state(TaskHandle_t task);
|
|
KernelStatus_t task_get_statistics(TaskHandle_t task, TaskStatistics_t* stats);
|
|
|
|
/* Scheduler Control */
|
|
void scheduler_yield(void);
|
|
void scheduler_lock(void);
|
|
void scheduler_unlock(void);
|
|
TaskHandle_t scheduler_get_current_task(void);
|
|
|
|
#endif /* KERNEL_H */
|