X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7a5846ae0f17bbb8f9a0c907f36f15afa92cf73f..7fdb9c9ac44fba9f76a3b45d032561995bec2e0d:/src/bindings/lua/lua_platf.c diff --git a/src/bindings/lua/lua_platf.c b/src/bindings/lua/lua_platf.c index 51bbe29e80..15f54ee7ac 100644 --- a/src/bindings/lua/lua_platf.c +++ b/src/bindings/lua/lua_platf.c @@ -14,6 +14,10 @@ #include #include +#include +#include +#include + 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 @@ -300,7 +325,18 @@ int console_AS_open(lua_State *L) { mode = lua_tostring(L, -1); lua_pop(L, 1); - sg_platf_new_AS_begin(id,mode); + int mode_int = A_surfxml_AS_routing_None; + if(!strcmp(mode,"Full")) mode_int = A_surfxml_AS_routing_Full; + else if(!strcmp(mode,"Floyd")) mode_int = A_surfxml_AS_routing_Floyd; + else if(!strcmp(mode,"Dijkstra")) mode_int = A_surfxml_AS_routing_Dijkstra; + else if(!strcmp(mode,"DijkstraCache")) mode_int = A_surfxml_AS_routing_DijkstraCache; + else if(!strcmp(mode,"RuleBased")) mode_int = A_surfxml_AS_routing_RuleBased; + else if(!strcmp(mode,"Vivaldi")) mode_int = A_surfxml_AS_routing_Vivaldi; + else if(!strcmp(mode,"Cluster")) mode_int = A_surfxml_AS_routing_Cluster; + else if(!strcmp(mode,"none")) mode_int = A_surfxml_AS_routing_None; + else xbt_die("Don't have the model name '%s'",mode); + + sg_platf_new_AS_begin(id,mode_int); return 0; }