Files
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

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