50 lines
1.1 KiB
C
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
|