1 /* Copyright (c) 2015. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 #ifndef SIMGRID_MC_CLIENT_H
8 #define SIMGRID_MC_CLIENT_H
16 #include <simgrid/simix.h>
18 #include "src/mc/mc_protocol.h"
19 #include "src/mc/Channel.hpp"
24 class XBT_PUBLIC() Client {
28 static std::unique_ptr<Client> client_;
31 Client(int fd) : active_(true), channel_(fd) {}
32 void handleMessages();
33 Channel const& getChannel() const { return channel_; }
34 Channel& getChannel() { return channel_; }
36 void reportAssertionFailure(const char* description = nullptr);
37 void ignoreMemory(void* addr, std::size_t size);
38 void ignoreHeap(void* addr, std::size_t size);
39 void unignoreHeap(void* addr, std::size_t size);
40 void declareSymbol(const char *name, int* value);
41 void declareStack(void *stack, size_t size, smx_process_t process, ucontext_t* context);
44 // TODO, remove the singleton antipattern.
45 static Client* initialize();
58 void MC_ignore(void* addr, std::size_t size);