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
10 #include "src/internal_config.h"
17 #include <simgrid/simix.h>
19 #include "src/mc/mc_protocol.h"
20 #include "src/mc/Channel.hpp"
25 class XBT_PUBLIC() Client {
29 static std::unique_ptr<Client> client_;
32 Client(int fd) : active_(true), channel_(fd) {}
33 void handleMessages();
34 Channel const& getChannel() const { return channel_; }
35 Channel& getChannel() { return channel_; }
37 void reportAssertionFailure(const char* description = nullptr);
38 void ignoreMemory(void* addr, std::size_t size);
39 void ignoreHeap(void* addr, std::size_t size);
40 void unignoreHeap(void* addr, std::size_t size);
41 void declareSymbol(const char *name, int* value);
43 void declareStack(void *stack, size_t size, smx_process_t process, ucontext_t* context);
47 // TODO, remove the singleton antipattern.
48 static Client* initialize();
61 void MC_ignore(void* addr, std::size_t size);