Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Relic of the star removal.
[simgrid.git] / src / surf / workstation.c
1 /*      $Id$     */
2
3 /* Copyright (c) 2004 Arnaud Legrand. 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 #include "xbt/dict.h"
9 #include "workstation_private.h"
10 /* #include "cpu_private.h" */
11 /* #include "network_private.h" */
12
13 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(workstation, surf,
14                                 "Logging specific to the SURF workstation module");
15
16 surf_workstation_resource_t surf_workstation_resource = NULL;
17
18 static xbt_dict_t workstation_set = NULL;
19
20 static workstation_t workstation_new(const char *name)
21 {
22   return NULL;
23 }
24
25 static void *name_service(const char *name)
26 {
27   return NULL;
28 }
29
30 static const char *get_resource_name(void *resource_id)
31 {
32   return NULL;
33 }
34
35 static int resource_used(void *resource_id)
36 {
37   return 0;
38 }
39
40 static void action_free(surf_action_t action)
41 {
42   return;
43 }
44
45 static void action_cancel(surf_action_t action)
46 {
47   return;
48 }
49
50 static void action_recycle(surf_action_t action)
51 {
52   return;
53 }
54
55 static void action_change_state(surf_action_t action,
56                                 e_surf_action_state_t state)
57 {
58   surf_action_change_state(action, state);
59   return;
60 }
61
62 static xbt_heap_float_t share_resources(xbt_heap_float_t now)
63 {
64   return -1.0;
65 }
66
67
68 static void update_actions_state(xbt_heap_float_t now,
69                                  xbt_heap_float_t delta)
70 {
71   return;
72 }
73
74 static void update_resource_state(void *id,
75                                   tmgr_trace_event_t event_type,
76                                   xbt_maxmin_float_t value)
77 {
78   return;
79 }
80
81 static surf_action_t communicate(void *workstation_src, 
82                                  void *workstation_dst,
83                                  xbt_maxmin_float_t size)
84 {
85   return NULL;
86 }
87
88 static surf_action_t execute(void *workstation, xbt_maxmin_float_t size)
89 {
90   return NULL;
91 }
92
93 static e_surf_cpu_state_t get_state(void *workstation)
94 {
95   return SURF_CPU_OFF;
96 }
97
98 static void finalize(void)
99 {
100 }
101
102 static void surf_workstation_resource_init_internal(void)
103 {
104   s_surf_action_t action;
105
106   surf_workstation_resource = xbt_new0(s_surf_workstation_resource_t, 1);
107
108   surf_workstation_resource->common_private =
109       xbt_new0(s_surf_resource_private_t, 1);
110   surf_workstation_resource->common_public =
111       xbt_new0(s_surf_resource_public_t, 1);
112 /*   surf_workstation_resource->extension_private = xbt_new0(s_surf_workstation_resource_extension_private_t,1); */
113   surf_workstation_resource->extension_public =
114       xbt_new0(s_surf_workstation_resource_extension_public_t, 1);
115
116   surf_workstation_resource->common_public->states.ready_action_set =
117       xbt_swag_new(xbt_swag_offset(action, state_hookup));
118   surf_workstation_resource->common_public->states.running_action_set =
119       xbt_swag_new(xbt_swag_offset(action, state_hookup));
120   surf_workstation_resource->common_public->states.failed_action_set =
121       xbt_swag_new(xbt_swag_offset(action, state_hookup));
122   surf_workstation_resource->common_public->states.done_action_set =
123       xbt_swag_new(xbt_swag_offset(action, state_hookup));
124
125   surf_workstation_resource->common_public->name_service = name_service;
126   surf_workstation_resource->common_public->get_resource_name =
127       get_resource_name;
128   surf_workstation_resource->common_public->action_get_state =
129       surf_action_get_state;
130   surf_workstation_resource->common_public->action_free = action_free;
131   surf_workstation_resource->common_public->action_cancel = action_cancel;
132   surf_workstation_resource->common_public->action_recycle = action_recycle;
133   surf_workstation_resource->common_public->action_change_state =
134       action_change_state;
135
136   surf_workstation_resource->common_private->resource_used = resource_used;
137   surf_workstation_resource->common_private->share_resources = share_resources;
138   surf_workstation_resource->common_private->update_actions_state =
139       update_actions_state;
140   surf_workstation_resource->common_private->update_resource_state =
141       update_resource_state;
142   surf_workstation_resource->common_private->finalize = finalize;
143
144   surf_workstation_resource->extension_public->communicate = communicate;
145   surf_workstation_resource->extension_public->execute = execute;
146
147   workstation_set = xbt_dict_new();
148
149   xbt_assert0(maxmin_system, "surf_init has to be called first!");
150 }
151
152 void surf_workstation_resource_init(const char *filename)
153 {
154   surf_workstation_resource_init_internal();
155 /*   parse_file(filename); */
156   xbt_dynar_push(resource_list, &surf_workstation_resource);
157 }