#ifndef TASK01_STATIC_ALLOCATION_H #define TASK01_STATIC_ALLOCATION_H #include #include "FreeRTOS.h" #include "queue.h" #include "task.h" #include "timers.h" #include "task01_static_allocation_model.h" #define FC11_TASK_STACK_WORDS 256U #define FC11_WORKER_PRIORITY 2U #define FC11_VERIFIER_PRIORITY 1U #define FC11_TIMER_PERIOD_TICKS 2U #define FC11_TIMEOUT_TICKS 20U #define FC11_MESSAGE_VALUE 0xCAFEU #define FC11_EVENT_CAPACITY 10U typedef struct StaticAllocationExperiment { TaskHandle_t dynamic_task; QueueHandle_t dynamic_queue; TimerHandle_t dynamic_timer; TaskHandle_t static_task; QueueHandle_t static_queue; TimerHandle_t static_timer; TaskHandle_t verifier_task; size_t heap_h0; size_t heap_h1; size_t heap_h2; size_t heap_h3; uint32_t dynamic_received; uint32_t static_received; uint32_t dynamic_timer_calls; uint32_t static_timer_calls; uintptr_t dynamic_task_sp; uintptr_t static_task_sp; uint32_t dynamic_task_done; uint32_t static_task_done; uint32_t pass; uint32_t evidence_digest; } StaticAllocationExperiment; extern StaticAllocationExperiment g_fc11; extern StaticAllocationEvidence g_fc11_events[ FC11_EVENT_CAPACITY ]; extern volatile uint32_t g_fc11_event_count; extern volatile uint32_t g_fc11_last_checkpoint; extern volatile uint32_t g_fc11_pass; void fc11_checkpoint_committed( uint32_t point, const void * subject ); void fc11_dynamic_task_entry( void * context ); void fc11_static_task_entry( void * context ); void fc11_verifier_entry( void * context ); void fc11_timer_callback( TimerHandle_t timer ); #endif