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