2 /* Copyright (c) 2009-2010, 2013. The SimGrid Team.
3 * All rights reserved. */
5 /* This program is free software; you can redistribute it and/or modify it
6 * under the terms of the license (GNU LGPL) which comes with this package. */
8 #ifndef _SURF_CPU_TI_PRIVATE_H
9 #define _SURF_CPU_TI_PRIVATE_H
11 typedef struct surf_cpu_ti_trace {
15 } s_surf_cpu_ti_trace_t, *surf_cpu_ti_trace_t;
18 typedef struct surf_cpu_ti_tgmr {
20 TRACE_FIXED, /*< Trace fixed, no availability file */
21 TRACE_DYNAMIC /*< Dynamic, availability file disponible */
24 double value; /*< Percentage of cpu power disponible. Value fixed between 0 and 1 */
27 double last_time; /*< Integral interval last point (discret time) */
28 double total; /*< Integral total between 0 and last_pointn */
30 surf_cpu_ti_trace_t trace;
31 tmgr_trace_t power_trace;
33 } s_surf_cpu_ti_tgmr_t, *surf_cpu_ti_tgmr_t;
36 /* CPU with trace integration feature */
37 typedef struct cpu_ti {
38 s_surf_resource_t generic_resource; /*< Structure with generic data. Needed at begin to interate with SURF */
39 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 availability 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 double current_frequency;
51 } s_cpu_ti_t, *cpu_ti_t;
53 typedef struct surf_action_ti {
54 s_surf_action_t generic_action;
55 s_xbt_swag_hookup_t cpu_list_hookup;
59 } s_surf_action_cpu_ti_t, *surf_action_cpu_ti_t;
62 #define EPSILON 0.000000001
63 /* Usefull define to get the cpu where action is running on */
64 #define ACTION_GET_CPU(action) ((cpu_ti_t)((surf_action_cpu_ti_t)action)->cpu)
67 #endif /* _SURF_CPU_TI_PRIVATE_H */