Logo AND Algorithmique Numérique Distribuée

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