#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"
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;
}
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);
//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
//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);
//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
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);
+
+ s_sg_platf_AS_cbarg_t AS = SG_PLATF_AS_INITIALIZER;
+ AS.id = id;
+ AS.routing = mode_int;
+ sg_platf_new_AS_begin(&AS);
return 0;
}
lua_pop(L, 1);
// FIXME: hackish to go under MSG that way
- m_host_t host = xbt_lib_get_or_null(host_lib,host_id,MSG_HOST_LEVEL);
+ msg_host_t host = xbt_lib_get_or_null(host_lib,host_id,MSG_HOST_LEVEL);
if (!host) {
XBT_ERROR("no host '%s' found",host_id);
return -1;
lua_pop(L, 1);
// FIXME: hackish to go under MSG that way
- m_host_t host = xbt_lib_get_or_null(host_lib,name,MSG_HOST_LEVEL);
+ msg_host_t host = xbt_lib_get_or_null(host_lib,name,MSG_HOST_LEVEL);
if (!host) {
XBT_ERROR("no host '%s' found",name);
return -1;