Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
[simgrid.git] / src / bindings / lua / simgrid_lua.c
index 6877c67..8c44001 100644 (file)
@@ -13,7 +13,6 @@
 #include "msg/msg.h"
 #include "simdag/simdag.h"
 #include "surf/surfxml_parse.h"
-#include "gras.h"
 #include <lauxlib.h>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(lua, bindings, "Lua Bindings");
@@ -24,74 +23,6 @@ int luaopen_simgrid(lua_State *L);
 static void sglua_register_c_functions(lua_State *L);
 static int run_lua_code(int argc, char **argv);
 
-/* ********************************************************************************* */
-/*                           lua_stub_generator functions                            */
-/* ********************************************************************************* */
-
-xbt_dict_t process_function_set;
-xbt_dynar_t process_list;
-xbt_dict_t machine_set;
-static s_process_t process;
-
-void s_process_free(void *process)
-{
-  s_process_t *p = (s_process_t *) process;
-  int i;
-  for (i = 0; i < p->argc; i++)
-    free(p->argv[i]);
-  free(p->argv);
-  free(p->host);
-}
-
-static int gras_add_process_function(lua_State * L)
-{
-  const char *arg;
-  const char *process_host = luaL_checkstring(L, 1);
-  const char *process_function = luaL_checkstring(L, 2);
-
-  if (xbt_dict_is_empty(machine_set)
-      || xbt_dict_is_empty(process_function_set)
-      || xbt_dynar_is_empty(process_list)) {
-    process_function_set = xbt_dict_new_homogeneous(NULL);
-    process_list = xbt_dynar_new(sizeof(s_process_t), s_process_free);
-    machine_set = xbt_dict_new_homogeneous(NULL);
-  }
-
-  xbt_dict_set(machine_set, process_host, NULL, NULL);
-  xbt_dict_set(process_function_set, process_function, NULL, NULL);
-
-  process.argc = 1;
-  process.argv = xbt_new(char *, 1);
-  process.argv[0] = xbt_strdup(process_function);
-  process.host = strdup(process_host);
-
-  lua_pushnil(L);
-  while (lua_next(L, 3) != 0) {
-    arg = lua_tostring(L, -1);
-    process.argc++;
-    process.argv =
-        xbt_realloc(process.argv, (process.argc) * sizeof(char *));
-    process.argv[(process.argc) - 1] = xbt_strdup(arg);
-
-    XBT_DEBUG("index = %f , arg = %s \n", lua_tonumber(L, -2),
-           lua_tostring(L, -1));
-    lua_pop(L, 1);
-  }
-  lua_pop(L, 1);
-  //add to the process list
-  xbt_dynar_push(process_list, &process);
-  return 0;
-}
-
-static int gras_generate(lua_State * L)
-{
-  const char *project_name = luaL_checkstring(L, 1);
-  generate_sim(project_name);
-  generate_rl(project_name);
-  generate_makefile_local(project_name);
-  return 0;
-}
-
 /* ********************************************************************************* */
 /*                                  simgrid API                                      */
 /* ********************************************************************************* */
@@ -185,9 +116,11 @@ static int get_clock(lua_State* L) {
  */
 static int simgrid_gc(lua_State * L)
 {
-  if (sglua_is_maestro(L)) {
-    MSG_clean();
-  }
+  // There is no need to cleanup the C world anymore, as it gets cleaned at system process closing automatically
+  // Maybe at some point we'll want to reintroduce this, for example when encapsulating the simulation properly
+  //if (sglua_is_maestro(L)) {
+  //  MSG_clean();
+  //}
   return 0;
 }
 
@@ -196,7 +129,7 @@ static int simgrid_gc(lua_State * L)
  */
 static int msg_register_platform(lua_State * L)
 {
-  /* Tell Simgrid we dont wanna use its parser */
+  /* Tell Simgrid we don't wanna use its parser */
   //surf_parse = console_parse_platform;
   surf_parse_reset_callbacks();
   MSG_create_environment(NULL);
@@ -214,17 +147,6 @@ static int sd_register_platform(lua_State * L)
   return 0;
 }
 
-/*
- * Register platform for gras
- */
-static int gras_register_platform(lua_State * L)
-{
-  //surf_parse = console_parse_platform;
-  surf_parse_reset_callbacks();
-  gras_create_environment(NULL);
-  return 0;
-}
-
 /**
  * Register applicaiton for MSG
  */
@@ -236,17 +158,13 @@ static int msg_register_application(lua_State * L)
   return 0;
 }
 
-/*
- * Register application for gras
- */
-static int gras_register_application(lua_State * L)
-{
-  gras_function_register_default(run_lua_code);
-  //surf_parse = console_parse_application;
-  gras_launch_application(NULL);
+static int console_init_application(lua_State *L) {
+  MSG_function_register_default(run_lua_code);
+  SIMIX_init_application();
   return 0;
 }
 
+
 static const luaL_Reg simgrid_functions[] = {
   {"create_environment", create_environment},
   {"launch_application", launch_application},
@@ -261,11 +179,7 @@ static const luaL_Reg simgrid_functions[] = {
   {"msg_register_platform", msg_register_platform},
   {"sd_register_platform", sd_register_platform},
   {"msg_register_application", msg_register_application},
-  {"gras_register_platform", gras_register_platform},
-  {"gras_register_application", gras_register_application},
-  /* gras sub generator method */
-  {"gras_set_process_function", gras_add_process_function},
-  {"gras_generate", gras_generate},
+  {"init_application", console_init_application},
   {NULL, NULL}
 };
 
@@ -288,7 +202,7 @@ int luaopen_simgrid(lua_State *L)
   XBT_DEBUG("luaopen_simgrid *****");
 
   /* Get the command line arguments from the lua interpreter */
-  char **argv = malloc(sizeof(char *) * LUA_MAX_ARGS_COUNT);
+  char **argv = xbt_malloc(sizeof(char *) * LUA_MAX_ARGS_COUNT);
   int argc = 1;
   argv[0] = (char *) "/usr/bin/lua";    /* Lie on the argv[0] so that the stack dumping facilities find the right binary. FIXME: what if lua is not in that location? */
 
@@ -318,7 +232,7 @@ int luaopen_simgrid(lua_State *L)
     argv[argc--] = NULL;
 
     /* Initialize the MSG core */
-    MSG_global_init(&argc, argv);
+    MSG_init(&argc, argv);
     MSG_process_set_data_cleanup((void_f_pvoid_t) lua_close);
     XBT_DEBUG("Still %d arguments on command line", argc); // FIXME: update the lua's arg table to reflect the changes from SimGrid
   }
@@ -441,7 +355,7 @@ static int run_lua_code(int argc, char **argv)
  * \param err an MSG error code
  * \return a string describing this error
  */
-const char* sglua_get_msg_error(MSG_error_t err) {
+const char* sglua_get_msg_error(msg_error_t err) {
 
   static const char* msg_errors[] = {
       NULL,