feat: publish FreeRTOS C FC03 card
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
#ifndef TASK01_SCHEDULER_H
|
||||
#define TASK01_SCHEDULER_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
|
||||
#define SCHED_TRACE_CAPACITY 16U
|
||||
#define SCHED_PEER_STACK_WORDS 192U
|
||||
#define SCHED_PROBE_STACK_WORDS 192U
|
||||
#define SCHED_VERIFY_STACK_WORDS 192U
|
||||
#define SCHED_PEER_PRIORITY 2U
|
||||
#define SCHED_PROBE_INITIAL_PRIORITY 0U
|
||||
#define SCHED_PROBE_TARGET_PRIORITY 3U
|
||||
#define SCHED_VERIFY_PRIORITY 1U
|
||||
#define SCHED_TIMEOUT_TICKS 100U
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SCHED_PHASE_PREPARED = 0,
|
||||
SCHED_PHASE_READY,
|
||||
SCHED_PHASE_RUNNING,
|
||||
SCHED_PHASE_COMPLETED
|
||||
} SchedulerPhase;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t id;
|
||||
UBaseType_t configured_priority;
|
||||
volatile UBaseType_t observed_priority;
|
||||
TaskHandle_t handle;
|
||||
uintptr_t created_handle;
|
||||
uintptr_t tcb_address;
|
||||
uintptr_t entry_sp;
|
||||
uintptr_t stack_low;
|
||||
uintptr_t stack_high;
|
||||
volatile uint32_t iterations;
|
||||
volatile uint32_t checksum;
|
||||
volatile TickType_t first_tick;
|
||||
volatile TickType_t last_tick;
|
||||
volatile SchedulerPhase phase;
|
||||
} PeerContext;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UBaseType_t initial_priority;
|
||||
UBaseType_t target_priority;
|
||||
volatile UBaseType_t observed_initial_priority;
|
||||
volatile UBaseType_t observed_priority;
|
||||
TaskHandle_t handle;
|
||||
uintptr_t created_handle;
|
||||
uintptr_t tcb_address;
|
||||
uintptr_t entry_sp;
|
||||
uintptr_t stack_low;
|
||||
uintptr_t stack_high;
|
||||
volatile TickType_t run_tick;
|
||||
volatile uint32_t ran_before_caller_returned;
|
||||
volatile uint32_t verifier_was_not_running;
|
||||
volatile SchedulerPhase phase;
|
||||
} HighProbeContext;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UBaseType_t configured_priority;
|
||||
volatile UBaseType_t observed_priority;
|
||||
TaskHandle_t handle;
|
||||
volatile uint32_t pass;
|
||||
volatile SchedulerPhase phase;
|
||||
} VerifierContext;
|
||||
|
||||
void peer_task_entry( void * pv_parameters );
|
||||
void high_probe_task_entry( void * pv_parameters );
|
||||
void verifier_task_entry( void * pv_parameters );
|
||||
void task01_scheduler_checkpoint( uint32_t point, const void * subject );
|
||||
void task01_scheduler_checkpoint_committed( uint32_t point,
|
||||
const void * subject );
|
||||
void task01_tick_checkpoint_committed( void );
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user