#include "xbt/automaton.hpp"
#include "xbt/system_error.hpp"
+#include <array>
#include <sys/ptrace.h>
#include <sys/wait.h>
checker_side_.start([](evutil_socket_t sig, short events, void* arg) {
auto mc = static_cast<simgrid::mc::ModelChecker*>(arg);
if (events == EV_READ) {
- char buffer[MC_MESSAGE_LENGTH];
- ssize_t size = mc->checker_side_.get_channel().receive(buffer, sizeof(buffer), false);
+ std::array<char, MC_MESSAGE_LENGTH> buffer;
+ ssize_t size = mc->checker_side_.get_channel().receive(buffer.data(), buffer.size(), false);
if (size == -1 && errno != EAGAIN)
throw simgrid::xbt::errno_error();
- if (not mc->handle_message(buffer, size))
+ if (not mc->handle_message(buffer.data(), size))
mc->checker_side_.break_loop();
} else if (events == EV_SIGNAL) {
if (sig == SIGCHLD)
#include "xbt/log.h"
#include "xbt/system_error.hpp"
+#include <array>
#include <memory>
#include <string>
{
s_mc_message_actor_enabled_t msg{MC_MESSAGE_ACTOR_ENABLED, pid};
model_checker_->channel().send(msg);
- char buff[MC_MESSAGE_LENGTH];
- ssize_t received = model_checker_->channel().receive(buff, MC_MESSAGE_LENGTH, true);
+ std::array<char, MC_MESSAGE_LENGTH> buff;
+ ssize_t received = model_checker_->channel().receive(buff.data(), buff.size(), true);
xbt_assert(received == sizeof(s_mc_message_int_t), "Unexpected size in answer to ACTOR_ENABLED");
- return ((s_mc_message_int_t*)buff)->value;
+ return ((s_mc_message_int_t*)buff.data())->value;
}
simgrid::mc::Session* session;
#include "src/mc/sosp/Snapshot.hpp"
#include "xbt/backtrace.hpp"
+#include <array>
#include <libunwind.h>
#endif
void dumpStack(FILE* file, unw_cursor_t* cursor)
{
int nframe = 0;
- char buffer[100];
+ std::array<char, 100> buffer;
unw_word_t off;
do {
- const char* name = not unw_get_proc_name(cursor, buffer, 100, &off) ? buffer : "?";
+ const char* name = not unw_get_proc_name(cursor, buffer.data(), buffer.size(), &off) ? buffer.data() : "?";
// Unmangle C++ names:
auto realname = simgrid::xbt::demangle(name);
while (true) {
XBT_DEBUG("Waiting messages from model-checker");
- char message_buffer[MC_MESSAGE_LENGTH];
- ssize_t received_size = channel_.receive(&message_buffer, sizeof(message_buffer));
+ std::array<char, MC_MESSAGE_LENGTH> message_buffer;
+ ssize_t received_size = channel_.receive(message_buffer.data(), message_buffer.size());
xbt_assert(received_size >= 0, "Could not receive commands from the model-checker");
- const s_mc_message_t* message = (s_mc_message_t*)message_buffer;
+ const s_mc_message_t* message = (s_mc_message_t*)message_buffer.data();
switch (message->type) {
case MC_MESSAGE_DEADLOCK_CHECK:
assert_msg_size("DEADLOCK_CHECK", s_mc_message_t);
case MC_MESSAGE_SIMCALL_HANDLE:
assert_msg_size("SIMCALL_HANDLE", s_mc_message_simcall_handle_t);
- handle_simcall((s_mc_message_simcall_handle_t*)message_buffer);
+ handle_simcall((s_mc_message_simcall_handle_t*)message_buffer.data());
break;
case MC_MESSAGE_ACTOR_ENABLED:
assert_msg_size("ACTOR_ENABLED", s_mc_message_actor_enabled_t);
- handle_actor_enabled((s_mc_message_actor_enabled_t*)message_buffer);
+ handle_actor_enabled((s_mc_message_actor_enabled_t*)message_buffer.data());
break;
default: