- s_mc_register_symbol_message_t message;
- message.type = MC_MESSAGE_REGISTER_SYMBOL;
- if (strlen(name) + 1 > sizeof(message.name))
- xbt_die("Symbol is too long");
- strncpy(message.name, name, sizeof(message.name));
- message.callback = nullptr;
- message.data = value;
- if (simgrid::mc::Client::get()->getChannel().send(message))
- xbt_die("Could send REGISTER_SYMBOL message to model-checker");
+/** @brief Register a stack in the model checker
+ *
+ * The stacks are allocated in the heap. The MC handle them specifically
+ * when we analyze/compare the content of the heap so it must be told where
+ * they are with this function.
+ *
+ * @param stack Where the stack is
+ * @param actor Actor owning the stack
+ * @param context The context associated to that stack
+ * @param size Size of the stack
+ */
+void MC_register_stack_area(void* stack, smx_actor_t actor, ucontext_t* context, size_t size)
+{
+ xbt_assert(mc_model_checker == nullptr);
+ if (not MC_is_active())
+ return;
+ simgrid::mc::Client::get()->declareStack(stack, size, actor, context);
+}
+
+void MC_ignore_global_variable(const char *name)
+{
+ xbt_assert(mc_model_checker == nullptr);
+ if (not MC_is_active())
+ return;
+ // TODO, send a message to the model_checker
+ xbt_die("Unimplemented");
+}
+
+void MC_ignore_heap(void *address, size_t size)
+{
+ xbt_assert(mc_model_checker == nullptr);
+ if (not MC_is_active())
+ return;
+ simgrid::mc::Client::get()->ignoreHeap(address, size);
+}
+
+void MC_unignore_heap(void* address, size_t size)
+{
+ xbt_assert(mc_model_checker == nullptr);
+ if (not MC_is_active())
+ return;
+ simgrid::mc::Client::get()->unignoreHeap(address, size);