1 /* Copyright (c) 2004-2007, 2009-2014. 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. */
11 #include "xbt/dynar.h"
12 #include "surf/maxmin.h"
13 #include "surf/datatypes.h"
14 #include "simgrid/platf_interface.h"
20 #include "trace_mgr.hpp"
21 #include "xbt/RngStream.h"
23 typedef struct tmgr_event {
26 } s_tmgr_event_t, *tmgr_event_t;
29 e_trace_list, e_trace_probabilist
32 enum e_event_generator_type {
33 e_generator_uniform, e_generator_exponential, e_generator_weibull
36 typedef struct probabilist_event_generator {
37 enum e_event_generator_type type;
44 } s_uniform_parameters;
47 } s_exponential_parameters;
51 } s_weibull_parameters;
53 } s_probabilist_event_generator_t;
55 typedef struct tmgr_trace {
56 enum e_trace_type type;
59 xbt_dynar_t event_list;
62 probabilist_event_generator_t event_generator[2];
69 /* Iterator within a trace */
70 typedef struct tmgr_trace_iterator {
75 } s_tmgr_trace_event_t;
77 /* Future Event Set (collection of iterators over the traces)
78 * That's useful to quickly know which is the next occurring event in a set of traces. */
79 typedef struct tmgr_fes {
80 xbt_heap_t heap; /* Content: only trace_events */
83 XBT_PRIVATE double tmgr_event_generator_next_value(probabilist_event_generator_t generator);
85 /* Creation functions */
86 XBT_PUBLIC(tmgr_fes_t) tmgr_history_new(void);
87 XBT_PUBLIC(void) tmgr_history_free(tmgr_fes_t history);
89 XBT_PUBLIC(tmgr_trace_t) tmgr_empty_trace_new(void);
90 XBT_PUBLIC(void) tmgr_trace_free(tmgr_trace_t trace);
92 * \brief Free a trace event structure
94 * This function frees a trace_event if it can be freed, ie, if it has the free_me flag set to 1. This flag indicates whether the structure is still used somewhere or not.
95 * \param trace_event Trace event structure
96 * \return 1 if the structure was freed, 0 otherwise
98 XBT_PUBLIC(int) tmgr_trace_event_free(tmgr_trace_iterator_t trace_event);
100 XBT_PUBLIC(tmgr_trace_iterator_t) tmgr_history_add_trace(tmgr_fes_t
107 /* Access functions */
108 XBT_PUBLIC(double) tmgr_history_next_date(tmgr_fes_t history);
109 XBT_PUBLIC(tmgr_trace_iterator_t)
110 tmgr_history_get_next_event_leq(tmgr_fes_t history, double date,
111 double *value, void **model);
113 XBT_PUBLIC(void) tmgr_finalize(void);
117 #endif /* _SURF_TMGR_H */