/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#ifndef MC_SERVER_H
-#define MC_SERVER_H
+#ifndef SIMGRID_MC_SERVER_H
+#define SIMGRID_MC_SERVER_H
+
+#include <poll.h>
+
+#include <stdbool.h>
+
+#include <sys/signalfd.h>
+#include <sys/types.h>
#include <xbt/misc.h>
+#include <xbt/base.h>
+
+#include "mc/Process.hpp"
+#include "mc_exit.h"
SG_BEGIN_DECL()
-#define MC_SERVER_ERROR 127
+#define MC_SERVER_ERROR SIMGRID_ERROR
typedef struct s_mc_server s_mc_server_t, *mc_server_t;
extern mc_server_t mc_server;
+XBT_PRIVATE void MC_server_wait_client(simgrid::mc::Process* process);
+XBT_PRIVATE void MC_server_simcall_handle(simgrid::mc::Process* process, unsigned long pid, int value);
+
+XBT_PRIVATE void MC_server_loop(mc_server_t server);
+
SG_END_DECL()
#ifdef __cplusplus
void start();
void shutdown();
void exit();
- void resume(mc_process_t process);
+ void resume(simgrid::mc::Process* process);
void loop();
- void handle_events();
+ bool handle_events();
protected:
void handle_signals();
void handle_waitpid();