Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : store last visited states during exploration
[simgrid.git] / src / surf / trace_mgr_private.h
1 /* Copyright (c) 2004, 2007, 2009, 2010. The SimGrid Team.
2  * All rights reserved.                                                     */
3
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. */
6
7 #ifndef _SURF_TMGR_PRIVATE_H
8 #define _SURF_TMGR_PRIVATE_H
9
10 #include "xbt/swag.h"
11 #include "xbt/heap.h"
12 #include "surf/trace_mgr.h"
13 #include "xbt/RngStream.h"
14
15 typedef struct tmgr_event {
16   double delta;
17   double value;
18 } s_tmgr_event_t, *tmgr_event_t;
19
20 enum e_trace_type {
21   e_trace_list, e_trace_probabilist
22 };
23
24 enum e_event_generator_type {
25   e_generator_uniform, e_generator_exponential, e_generator_weibull
26 };
27
28 typedef struct probabilist_event_generator {
29   enum e_event_generator_type type;
30   RngStream rng_stream;
31   double next_value;
32   union {
33     struct {
34       double min;
35       double max;
36     } s_uniform_parameters;
37     struct {
38       double rate;
39     } s_exponential_parameters;
40     struct {
41       double scale;
42       double shape;
43     } s_weibull_parameters;
44   };
45 } s_probabilist_event_generator_t;
46
47 typedef struct tmgr_trace {
48   enum e_trace_type type;
49   union {
50     struct {
51       xbt_dynar_t event_list;
52     } s_list;
53     struct {
54       probabilist_event_generator_t event_generator[2];
55       int is_state_trace;
56       int next_event;
57     } s_probabilist;
58   };
59 } s_tmgr_trace_t;
60
61
62 typedef struct tmgr_trace_event {
63   tmgr_trace_t trace;
64   unsigned int idx;
65   void *model;
66   int free_me;
67 } s_tmgr_trace_event_t;
68
69 typedef struct tmgr_history {
70   xbt_heap_t heap;
71 } s_tmgr_history_t;
72
73 double tmgr_event_generator_next_value(probabilist_event_generator_t generator);
74
75 #endif                          /* _SURF_TMGR_PRIVATE_H */