Files
lab-rv32i-freertos-c-first-…/include/task01_first_task.h
T

50 lines
1.1 KiB
C

#ifndef TASK01_FIRST_TASK_H
#define TASK01_FIRST_TASK_H
#include <stdint.h>
#include "FreeRTOS.h"
#include "task.h"
typedef enum
{
WORKER_TRACE_PREPARED = 0,
WORKER_TRACE_STARTING,
WORKER_TRACE_READY,
WORKER_TRACE_RUNNING,
WORKER_TRACE_COMPLETED,
WORKER_TRACE_CREATE_FAILED
} WorkerTraceState;
typedef struct
{
uint32_t id;
volatile uint32_t result;
volatile uint32_t iterations;
volatile WorkerTraceState trace_state;
TaskHandle_t handle;
volatile TickType_t start_tick;
volatile TickType_t end_tick;
uintptr_t created_handle;
uintptr_t tcb_address;
uintptr_t stack_low;
uintptr_t stack_high;
uintptr_t entry_sp;
UBaseType_t stack_high_water;
} WorkerContext;
typedef struct
{
WorkerContext * first;
WorkerContext * second;
TaskHandle_t handle;
volatile uint32_t pass;
} SupervisorContext;
void sum_task_entry( void * pv_parameters );
void supervisor_task_entry( void * pv_parameters );
void task01_debug_checkpoint( uint32_t point, const void * subject );
void task01_debug_checkpoint_committed( uint32_t point, const void * subject );
#endif