Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Actually, upvalues were implemented a while ago.
[simgrid.git] / src / bindings / lua / lua_platf.c
index 51bbe29..5022900 100644 (file)
 #include <ctype.h>
 #include <lauxlib.h>
 
+#include <msg/msg_private.h>
+#include <simix/smx_host_private.h>
+#include <surf/surf_private.h>
+
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(lua_platf, bindings, "Lua bindings (platform module)");
 
 #define PLATF_MODULE_NAME "simgrid.platf"
@@ -38,12 +42,29 @@ int console_open(lua_State *L) {
   sg_platf_init();
   sg_platf_begin();
   surf_parse_init_callbacks();
+  routing_register_callbacks();
+
   return 0;
 }
 
 int console_close(lua_State *L) {
   sg_platf_end();
   sg_platf_exit();
+
+  xbt_lib_cursor_t cursor;
+  void **data;
+  char *name;
+
+  /* Initialize MSG and WKS hosts */
+  XBT_DEBUG("Initialize MSG and WKS hosts");
+  xbt_lib_foreach(host_lib, cursor, name, data) {
+    if(data[SURF_WKS_LEVEL]){
+      XBT_DEBUG("\tSee surf host %s",name);
+      SIMIX_host_create(name, data[SURF_WKS_LEVEL], NULL);
+      __MSG_host_create((smx_host_t)data[SIMIX_HOST_LEVEL]);
+    }
+  }
+
   return 0;
 }
 
@@ -71,6 +92,15 @@ int console_add_host(lua_State *L) {
   host.power_peak = lua_tonumber(L, -1);
   lua_pop(L, 1);
 
+  // get core
+  lua_pushstring(L, "core");
+  lua_gettable(L, -2);
+  if(!lua_isnumber(L,-1)) host.core_amount = 1;// Default value
+  else host.core_amount = lua_tonumber(L, -1);
+  if (host.core_amount == 0)
+    host.core_amount = 1;
+  lua_pop(L, 1);
+
   //get power_scale
   lua_pushstring(L, "power_scale");
   lua_gettable(L, -2);
@@ -80,21 +110,16 @@ int console_add_host(lua_State *L) {
   //get power_trace
   lua_pushstring(L, "power_trace");
   lua_gettable(L, -2);
-  host.power_trace = tmgr_trace_new(lua_tostring(L, -1));
-  lua_pop(L, 1);
-
-  lua_pushstring(L, "core");
-  lua_gettable(L, -2);
-  host.core_amount = lua_tonumber(L, -1);
-  if (host.core_amount == 0)
-    host.core_amount = 1;
+  host.power_trace = tmgr_trace_new_from_file(lua_tostring(L, -1));
   lua_pop(L, 1);
 
   //get state initial
   lua_pushstring(L, "state_initial");
   lua_gettable(L, -2);
-  state = lua_tonumber(L, -1);
+  if(!lua_isnumber(L,-1)) state = 1;// Default value
+  else state = lua_tonumber(L, -1);
   lua_pop(L, 1);
+
   if (state)
     host.initial_state = SURF_RESOURCE_ON;
   else
@@ -103,7 +128,7 @@ int console_add_host(lua_State *L) {
   //get trace state
   lua_pushstring(L, "state_trace");
   lua_gettable(L, -2);
-  host.state_trace = tmgr_trace_new(lua_tostring(L, -1));
+  host.state_trace = tmgr_trace_new_from_file(lua_tostring(L, -1));
   lua_pop(L, 1);
 
   sg_platf_new_host(&host);
@@ -145,19 +170,19 @@ int  console_add_link(lua_State *L) {
   //get bandwidth_trace value
   lua_pushstring(L, "bandwidth_trace");
   lua_gettable(L, -2);
-  link.bandwidth_trace = tmgr_trace_new(lua_tostring(L, -1));
+  link.bandwidth_trace = tmgr_trace_new_from_file(lua_tostring(L, -1));
   lua_pop(L, 1);
 
   //get latency_trace value
   lua_pushstring(L, "latency_trace");
   lua_gettable(L, -2);
-  link.latency_trace = tmgr_trace_new(lua_tostring(L, -1));
+  link.latency_trace = tmgr_trace_new_from_file(lua_tostring(L, -1));
   lua_pop(L, 1);
 
   //get state_trace value
   lua_pushstring(L, "state_trace");
   lua_gettable(L, -2);
-  link.state_trace = tmgr_trace_new(lua_tostring(L, -1));
+  link.state_trace = tmgr_trace_new_from_file(lua_tostring(L, -1));
   lua_pop(L, 1);
 
   //get state_initial value