Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge with master and fix conflicts
[simgrid.git] / src / include / surf / surf_resource_lmm.h
1
2 /* Copyright (c) 2009, 2010. The SimGrid Team.
3  * All rights reserved.                                                     */
4
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. */
7
8 #ifndef SURF_RESOURCE_LMM_H
9 #define SURF_RESOURCE_LMM_H
10 #include "surf/surf.h"
11 #include "surf/trace_mgr.h"
12 #include "surf/surf_resource.h"
13
14
15 static XBT_INLINE
16     surf_resource_lmm_t surf_resource_lmm_new(size_t childsize,
17                                               /* for superclass */
18                                               surf_model_t model,
19                                               const char *name, xbt_dict_t props,
20                                               lmm_system_t system,
21                                               double constraint_value,
22                                               tmgr_history_t history,
23                                               e_surf_resource_state_t state_init,
24                                               tmgr_trace_t state_trace,
25                                               double metric_peak,
26                                               tmgr_trace_t metric_trace)
27 {
28
29   surf_resource_lmm_t res =
30       (surf_resource_lmm_t) surf_resource_new(childsize, model, name,
31                                               props);
32
33   res->constraint = lmm_constraint_new(system, res, constraint_value);
34   res->state_current = state_init;
35   if (state_trace)
36     res->state_event =
37         tmgr_history_add_trace(history, state_trace, 0.0, 0, res);
38
39   res->power.scale = 1.0;
40   res->power.peak = metric_peak;
41   if (metric_trace)
42     res->power.event =
43         tmgr_history_add_trace(history, metric_trace, 0.0, 0, res);
44   return res;
45 }
46
47
48 static XBT_INLINE e_surf_resource_state_t surf_resource_lmm_get_state(void
49                                                                       *r)
50 {
51   surf_resource_lmm_t resource = (surf_resource_lmm_t) r;
52   return (resource)->state_current;
53 }
54 #endif                          /* SURF_RESOURCE_LMM_H */