X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/33eca433c4f055cdfcc55e46d125f8708e1848c7..7d9bf5f4e3d00bbeea1aeef15d46a337c671805b:/src/mc/mc_record.h diff --git a/src/mc/mc_record.h b/src/mc/mc_record.h index 3ea2d77dff..2c55598a85 100644 --- a/src/mc/mc_record.h +++ b/src/mc/mc_record.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2014. The SimGrid Team. +/* Copyright (c) 2014-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -14,23 +14,18 @@ * passed to the application (without the MC specific arguments). */ -#ifndef MC_RECORD_H -#define MC_RECORD_H +#ifndef SIMGRID_MC_RECORD_H +#define SIMGRID_MC_RECORD_H -#include +#include +#include -#include "simgrid_config.h" +#include +#include +#include -SG_BEGIN_DECL() - -/** Whether the MC record mode is enabled - * - * The behaviour is not changed. The only real difference is that - * the path is writtent in the log when an interesting path is found. - */ -#define MC_record_is_active() _sg_do_model_check_record - -// **** Data conversion +namespace simgrid { +namespace mc { /** An element in the recorded path * @@ -40,43 +35,45 @@ SG_BEGIN_DECL() * in things like waitany and for associating a given value of MC_random() * calls. */ -typedef struct s_mc_record_item { - int pid; - int value; -} s_mc_record_item_t, *mc_record_item_t; +struct RecordTraceElement { + int pid = 0; + int value = 0; + RecordTraceElement() {} + RecordTraceElement(int pid, int value) : pid(pid), value(value) {} +}; -/** Convert a string representation of the path into a array of `s_mc_record_item_t` +typedef std::vector RecordTrace; + +/** Convert a string representation of the path into a array of `simgrid::mc::RecordTraceElement` */ -xbt_dynar_t MC_record_from_string(const char* data); +XBT_PRIVATE RecordTrace parseRecordTrace(const char* data); +XBT_PRIVATE std::string traceToString(simgrid::mc::RecordTrace const& trace); +XBT_PRIVATE void dumpRecordPath(); -/** Generate a string representation -* -* The current format is a ";"-delimited list of pairs: -* "pid0,value0;pid2,value2;pid3,value3". The value can be -* omitted is it is null. -*/ -char* MC_record_stack_to_string(xbt_fifo_t stack); +XBT_PRIVATE void replay(RecordTrace const& trace); +XBT_PRIVATE void replay(const char* trace); -/** Dump the path represented by a given stack in the log - */ -void MC_record_dump_path(xbt_fifo_t stack); +} +} -// ***** Replay +SG_BEGIN_DECL() -/** Replay a path represented by the record items +/** Whether the MC record mode is enabled * - * \param start Array of record item - * \item count Number of record items + * The behaviour is not changed. The only real difference is that + * the path is writtent in the log when an interesting path is found. */ -void MC_record_replay(mc_record_item_t start, size_t count); +#define MC_record_is_active() _sg_do_model_check_record -/** Replay a path represented by a string - * - * \param data String representation of the path - */ -void MC_record_replay_from_string(const char* data); +// **** Data conversion -void MC_record_replay_init(void); +/** Generate a string representation +* +* The current format is a ";"-delimited list of pairs: +* "pid0,value0;pid2,value2;pid3,value3". The value can be +* omitted is it is null. +*/ +XBT_PRIVATE char* MC_record_stack_to_string(xbt_fifo_t stack); SG_END_DECL()