- 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;
- MC_client_send_message(&message, sizeof(message));
+/** @brief Register a stack in the model checker
+ *
+ * The stacks are allocated in the heap. The MC handle them especially
+ * when we analyze/compare the content of the heap so it must be told where
+ * they are with this function.
+ *
+ * @param stack
+ * @param process Process owning the stack
+ * @param context
+ * @param size Size of the stack
+ */
+void MC_register_stack_area(void *stack, smx_actor_t process, ucontext_t* context, size_t size)
+{
+ xbt_assert(mc_model_checker == nullptr);
+ if (!MC_is_active())
+ return;
+ simgrid::mc::Client::get()->declareStack(stack, size, process, context);
+}
+
+void MC_ignore_global_variable(const char *name)
+{
+ xbt_assert(mc_model_checker == nullptr);
+ if (!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 (!MC_is_active())
+ return;
+ simgrid::mc::Client::get()->ignoreHeap(address, size);
+}
+
+void MC_remove_ignore_heap(void *address, size_t size)
+{
+ xbt_assert(mc_model_checker == nullptr);
+ if (!MC_is_active())
+ return;
+ simgrid::mc::Client::get()->unignoreHeap(address, size);