#include "src/instr/instr_private.h"
#include "src/msg/msg_private.h"
+#include <atomic>
+
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_msg, instr, "MSG instrumentation");
void TRACE_msg_set_task_category(msg_task_t task, const char *category)
/* MSG_task_create related function*/
void TRACE_msg_task_create(msg_task_t task)
{
- static long long counter = 0;
+ static std::atomic_ullong counter{0};
task->counter = counter++;
task->category = nullptr;
-
+
if(MC_is_active())
MC_ignore_heap(&(task->counter), sizeof(task->counter));
container_t process_container = PJ_container_get (instr_process_id(MSG_process_self(), str, len));
type_t type = PJ_type_get ("MSG_PROCESS_STATE", process_container->type);
- val_t value = PJ_value_get ("task_execute", type);
- new PushStateEvent (MSG_get_clock(), process_container, type, value);
+ value* val = value::get("task_execute", type);
+ new PushStateEvent(MSG_get_clock(), process_container, type, val);
}
}
container_t process_container = PJ_container_get (instr_process_id(MSG_process_self(), str, len));
type_t type = PJ_type_get ("MSG_PROCESS_STATE", process_container->type);
- val_t value = PJ_value_get ("receive", type);
- new PushStateEvent (MSG_get_clock(), process_container, type, value);
+ value* val = value::get("receive", type);
+ new PushStateEvent(MSG_get_clock(), process_container, type, val);
}
}
container_t process_container = PJ_container_get (instr_process_id(MSG_process_self(), str, len));
type_t type = PJ_type_get ("MSG_PROCESS_STATE", process_container->type);
- val_t value = PJ_value_get ("send", type);
- new PushStateEvent (MSG_get_clock(), process_container, type, value);
+ value* val = value::get("send", type);
+ new PushStateEvent(MSG_get_clock(), process_container, type, val);
char key[INSTR_DEFAULT_STR_SIZE];
snprintf (key, INSTR_DEFAULT_STR_SIZE, "p%lld", task->counter);