diff --git a/include/SRP_wcet.h b/include/SRP_wcet.h index 889458382b1aaa7969d266186fd3ffcd809b7d36..43e108744da54bca70479703763614746c9f48c8 100644 --- a/include/SRP_wcet.h +++ b/include/SRP_wcet.h @@ -33,7 +33,7 @@ typedef enum E } action; -typedef struct locks +typedef struct { /* The DWT counter value */ uint32_t time; @@ -42,25 +42,28 @@ typedef struct locks /* If locked or released */ action action; -} locks; +} event; int event_count = 0; /* Create array containing structs of type locks */ #define MAX_NUM_LOCKS 10 -locks eventlist[MAX_NUM_LOCKS]; - -#define TRACE_EVENT(event, el)({eventlist[event_count].time = DWT->CYCCNT; eventlist[event_count].action = event; eventlist[event_count].elem = el; event_count+=1;}) +event eventlist[MAX_NUM_LOCKS]; +void __attribute__ ((noinline)) trace_event(action a, event e) { + eventlist[event_count].time = DWT->CYCCNT; + eventlist[event_count].action = a; + eventlist[event_count].elem = e; + event_count+=1; +} +#define LOCK(X) trace_event(L, X); +#define UNLOCK(X) trace_event(R, X); #define IRQh(J) (J##_IRQh) #define JOB_REQUEST(J) { } -#define LOCK(X) TRACE_EVENT(L, X); -#define UNLOCK(X) TRACE_EVENT(R, X); - #define TASK(J) void IRQh(J) () #define BREAKPOINT