FreeRTOS-Kernel/verification/verifast/proof/verifast_lock_predicates.h

45 lines
No EOL
1.2 KiB
C

#ifndef VERIFAST_LOCK_PREDICATES_H
#define VERIFAST_LOCK_PREDICATES_H
/*@
// We assume tha `configNUM_CORES` evaluates to 1.
// TODO: Parametrise in terms of `configNUM_CORES`.
// PROBLEM: Shouldn't `configNUM_CORES` be greater than 1?
predicate otherGlobalVars() =
integer_(&uxCurrentNumberOfTasks, sizeof(UBaseType_t), false, _)
&*&
integer_(&xTickCount, sizeof(TickType_t), false, _)
&*&
integer_(&uxTopReadyPriority, sizeof(UBaseType_t), false, _)
&*&
integer_(&xSchedulerRunning, sizeof(BaseType_t), true, _)
&*&
integer_(&xPendedTicks, sizeof(TickType_t), false, _)
&*&
integers_(&xYieldPendings, sizeof(BaseType_t), true, 1, _)
&*&
integer_(&uxTaskNumber, sizeof(UBaseType_t), false, _)
&*&
integer_(&xNextTaskUnblockTime, sizeof(TickType_t), false, _)
&*&
pointers(&xIdleTaskHandle, 1, _);
predicate unprotectedGlobalVars() =
[_] integer_(&xSchedulerRunning, sizeof(BaseType_t), true, _);
@*/
/*
void vf_validate_lock_predicate()
//@ requires module(tasks__pp, true);
//@ ensures true;
{
//@ open_module();
uxCurrentNumberOfTasks = 0;
//@ close tasks_global_vars();
}
*/
#endif /* VERIFAST_LOCK_PREDICATES_H */