X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6760cb07d6b57be16928d95339d71e57c4e24f36..c271686fd059bd4313549ec557eb44f82109a03d:/src/surf/trace_mgr_private.h diff --git a/src/surf/trace_mgr_private.h b/src/surf/trace_mgr_private.h index c3c6120182..d05ba5b92e 100644 --- a/src/surf/trace_mgr_private.h +++ b/src/surf/trace_mgr_private.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2004, 2007, 2009, 2010. The SimGrid Team. +/* Copyright (c) 2004, 2007, 2009-2010, 2012-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -7,28 +7,72 @@ #ifndef _SURF_TMGR_PRIVATE_H #define _SURF_TMGR_PRIVATE_H +#include "xbt/base.h" #include "xbt/swag.h" #include "xbt/heap.h" #include "surf/trace_mgr.h" +#include "xbt/RngStream.h" typedef struct tmgr_event { double delta; double value; } s_tmgr_event_t, *tmgr_event_t; +enum e_trace_type { + e_trace_list, e_trace_probabilist +}; + +enum e_event_generator_type { + e_generator_uniform, e_generator_exponential, e_generator_weibull +}; + +typedef struct probabilist_event_generator { + enum e_event_generator_type type; + RngStream rng_stream; + double next_value; + union { + struct { + double min; + double max; + } s_uniform_parameters; + struct { + double rate; + } s_exponential_parameters; + struct { + double scale; + double shape; + } s_weibull_parameters; + }; +} s_probabilist_event_generator_t; + typedef struct tmgr_trace { - xbt_dynar_t event_list; + enum e_trace_type type; + union { + struct { + xbt_dynar_t event_list; + } s_list; + struct { + probabilist_event_generator_t event_generator[2]; + int is_state_trace; + int next_event; + } s_probabilist; + }; } s_tmgr_trace_t; -typedef struct tmgr_trace_event { +/* Iterator within a trace */ +typedef struct tmgr_trace_iterator { tmgr_trace_t trace; unsigned int idx; - void *model; + void *resource; int free_me; } s_tmgr_trace_event_t; -typedef struct tmgr_history { - xbt_heap_t heap; +/* Future Event Set (collection of iterators over the traces) + * That's useful to quickly know which is the next occurring event in a set of traces. */ +typedef struct tmgr_fes { + xbt_heap_t heap; /* Content: only trace_events */ } s_tmgr_history_t; -#endif /* _SURF_TMGR_PRIVATE_H */ +XBT_PRIVATE double tmgr_event_generator_next_value(probabilist_event_generator_t generator); + +#endif /* _SURF_TMGR_PRIVATE_H */