Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Change test to program ending to avoid infinite loop when using traces with periodici...
[simgrid.git] / src / surf / cpu_ti_private.h
1
2 /*      $Id$     */
3
4 /* Copyright (c) 2004 Arnaud Legrand. All rights reserved.                  */
5
6 /* This program is free software; you can redistribute it and/or modify it
7  * under the terms of the license (GNU LGPL) which comes with this package. */
8
9 #ifndef _SURF_CPU_TI_PRIVATE_H
10 #define _SURF_CPU_TI_PRIVATE_H
11
12 /* TIMESERIES */
13 typedef struct surf_cpu_ti_timeSeries {
14   long nb_points;               /*< Number of points in the series */
15   double spacing;               /*< Spacing between two points */
16   double *values;               /*< Array of size nb_points */
17 } s_surf_cpu_ti_timeSeries_t, *surf_cpu_ti_timeSeries_t;
18
19 /* TRACE */
20 typedef struct surf_cpu_ti_tgmr {
21   enum trace_type {
22     TRACE_FIXED,                /*< Trace fixed, no availability file */
23     TRACE_DYNAMIC               /*< Dynamic, availability file disponible */
24   } type;
25
26   double value;                 /*< Percentage of cpu power disponible. Value fixed between 0 and 1 */
27
28   /* Dynamic */
29   double last_time;             /*< Integral interval last point */
30   double total;                 /*< Integral total between 0 and last_pointn */
31
32   surf_cpu_ti_timeSeries_t *levels;     /*< Availability information */
33   int nb_levels;                /*< Number of levels */
34 } s_surf_cpu_ti_tgmr_t, *surf_cpu_ti_tgmr_t;
35
36
37 /* CPU with trace integration feature */
38 typedef struct cpu_ti {
39   s_surf_resource_t generic_resource;   /*< Structure with generic data. Needed at begin to interate with SURF */
40   double power_peak;            /*< CPU power peak */
41   double power_scale;           /*< Percentage of CPU disponible */
42   surf_cpu_ti_tgmr_t avail_trace;       /*< Structure with data needed to integrate trace file */
43   e_surf_resource_state_t state_current;        /*< CPU current state (ON or OFF) */
44   tmgr_trace_event_t state_event;       /*< trace file with states events (ON or OFF) */
45   tmgr_trace_event_t power_event;       /*< trace file with availabitly events */
46   xbt_swag_t action_set;        /*< set with all actions running on cpu */
47   s_xbt_swag_hookup_t modified_cpu_hookup;      /*< hookup to swag that indicacates whether share resources must be recalculated or not */
48   double sum_priority;          /*< the sum of actions' priority that are running on cpu */
49   double last_update;           /*< last update of actions' remaining amount done */
50 } s_cpu_ti_t, *cpu_ti_t;
51
52 typedef struct surf_action_ti {
53   s_surf_action_t generic_action;
54   s_xbt_swag_hookup_t cpu_list_hookup;
55   void *cpu;
56   int suspended;
57   int index_heap;
58 } s_surf_action_cpu_ti_t, *surf_action_cpu_ti_t;
59
60 /* Time-step for resource performance traces */
61 #define TRACE_TIMESTEP 10.00
62 /* Number of levels for resource performance traces */
63 #define TRACE_NB_LEVELS 4
64 /* Epsilon */
65 #define EPSILON 0.000000001
66 /* Usefull define to get the cpu where action is running on */
67 #define ACTION_GET_CPU(action) ((cpu_ti_t)((surf_action_cpu_ti_t)action)->cpu)
68
69
70 #endif /* _SURF_CPU_TI_PRIVATE_H */