Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Move smx_process related functions from sg_emul.c to sg_process.c; cosmetics; + add...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 11 Jul 2007 11:09:47 +0000 (11:09 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 11 Jul 2007 11:09:47 +0000 (11:09 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3726 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/gras/Virtu/rl_process.c
src/gras/Virtu/sg_emul.c
src/gras/Virtu/sg_process.c

index 7219c9a..f5bb0ef 100644 (file)
@@ -30,11 +30,11 @@ const char *xbt_procname(void) {
 }
 
 int gras_os_getpid(void) {
 }
 
 int gras_os_getpid(void) {
-       #ifdef _WIN32
-       return (long int) GetCurrentProcess();
-       #else
-       return (long int) getpid();
-       #endif
+#ifdef _WIN32
+   return (long int) GetCurrentProcess();
+#else
+   return (long int) getpid();
+#endif
 }
 
 /* **************************************************************************
 }
 
 /* **************************************************************************
@@ -46,3 +46,8 @@ gras_procdata_t *gras_procdata_get(void) {
 
   return _gras_procdata;
 }
 
   return _gras_procdata;
 }
+
+void gras_agent_spawn(const char *name, void *data, 
+                     xbt_main_func_t code, int argc, char *argv[]) {
+   THROW_UNIMPLEMENTED;
+}
index 65ac32f..511ba97 100644 (file)
@@ -168,60 +168,3 @@ int gras_if_RL(void) {
 int gras_if_SG(void) {
    return 1;
 }
 int gras_if_SG(void) {
    return 1;
 }
-
-void gras_global_init(int *argc,char **argv) {
-return SIMIX_global_init(argc,argv);
-}
-void gras_create_environment(const char *file) {
-return SIMIX_create_environment(file);
-}
-void gras_function_register(const char *name, xbt_main_func_t code) {
-   return SIMIX_function_register(name, code);
-}
-void gras_main() {
-       smx_cond_t cond = NULL;
-       smx_action_t smx_action;
-       xbt_fifo_t actions_done = xbt_fifo_new();
-       xbt_fifo_t actions_failed = xbt_fifo_new();
-
-
-       /* Clean IO before the run */
-       fflush(stdout);
-       fflush(stderr);
-
-
-       while (SIMIX_solve(actions_done, actions_failed) != -1.0) {
-
-               while ( (smx_action = xbt_fifo_pop(actions_failed)) ) {
-
-
-                       DEBUG1("** %s failed **",smx_action->name);
-                       while ( (cond = xbt_fifo_pop(smx_action->cond_list)) ) {
-                               SIMIX_cond_broadcast(cond);
-                       }
-                       /* action finished, destroy it */
-               //      SIMIX_action_destroy(smx_action);
-               }
-
-               while ( (smx_action = xbt_fifo_pop(actions_done)) ) {
-
-                       DEBUG1("** %s done **",smx_action->name);
-                       while ( (cond = xbt_fifo_pop(smx_action->cond_list)) ) {
-                               SIMIX_cond_broadcast(cond);
-                       }
-                       /* action finished, destroy it */
-                       //SIMIX_action_destroy(smx_action);
-               }
-       }
-       xbt_fifo_free(actions_failed);
-       xbt_fifo_free(actions_done);
-  return;
-
-}
-void gras_launch_application(const char *file) {
-return SIMIX_launch_application(file);
-}
-void gras_clean() {
-return SIMIX_clean();
-}
-
index 77951a5..6f09110 100644 (file)
@@ -17,6 +17,21 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(gras_virtu_process);
 
 static long int PID = 1;
 
 
 static long int PID = 1;
 
+
+void gras_agent_spawn(const char *name, void *data, 
+                     xbt_main_func_t code, int argc, char *argv[]) {
+   
+   SIMIX_process_create(name, code,
+                       data,
+                       gras_os_myname(), 
+                       argc, argv,
+                       /* no cleanup, thx, users will call gras_exit() */NULL);
+}
+
+/* **************************************************************************
+ * Process constructor/destructor (semi-public interface)
+ * **************************************************************************/
+
 void
 gras_process_init() {
   gras_hostdata_t *hd=(gras_hostdata_t *)SIMIX_host_get_data(SIMIX_host_self());
 void
 gras_process_init() {
   gras_hostdata_t *hd=(gras_hostdata_t *)SIMIX_host_get_data(SIMIX_host_self());
@@ -101,7 +116,7 @@ gras_process_exit() {
 }
 
 /* **************************************************************************
 }
 
 /* **************************************************************************
- * Process data
+ * Process data (public interface)
  * **************************************************************************/
 
 gras_procdata_t *gras_procdata_get(void) {
  * **************************************************************************/
 
 gras_procdata_t *gras_procdata_get(void) {
@@ -122,7 +137,11 @@ gras_libdata_by_name_from_remote(const char *name, smx_process_t p) {
    
   return gras_libdata_by_name_from_procdata(name, pd);
 }   
    
   return gras_libdata_by_name_from_procdata(name, pd);
 }   
-  
+
+/* **************************************************************************
+ * OS virtualization function
+ * **************************************************************************/
+
 const char* xbt_procname(void) {
   const char *res = NULL;
   smx_process_t process = SIMIX_process_self();
 const char* xbt_procname(void) {
   const char *res = NULL;
   smx_process_t process = SIMIX_process_self();
@@ -139,7 +158,68 @@ int gras_os_getpid(void) {
   smx_process_t process = SIMIX_process_self();
        
   if ((process != NULL) && (process->data))
   smx_process_t process = SIMIX_process_self();
        
   if ((process != NULL) && (process->data))
-               return ((gras_procdata_t*)process->data)->pid;
+     return ((gras_procdata_t*)process->data)->pid;
   else
     return 0;
 }
   else
     return 0;
 }
+
+/* **************************************************************************
+ * Interface with SIMIX
+ * **************************************************************************/
+
+void gras_global_init(int *argc,char **argv) {
+   return SIMIX_global_init(argc,argv);
+}
+void gras_create_environment(const char *file) {
+   return SIMIX_create_environment(file);
+}
+void gras_function_register(const char *name, xbt_main_func_t code) {
+   return SIMIX_function_register(name, code);
+}
+void gras_main() {
+   smx_cond_t cond = NULL;
+   smx_action_t smx_action;
+   xbt_fifo_t actions_done = xbt_fifo_new();
+   xbt_fifo_t actions_failed = xbt_fifo_new();
+   
+
+   /* Clean IO before the run */
+   fflush(stdout);
+   fflush(stderr);
+   
+   
+   while (SIMIX_solve(actions_done, actions_failed) != -1.0) {
+
+      while ( (smx_action = xbt_fifo_pop(actions_failed)) ) {
+        
+        
+        DEBUG1("** %s failed **",smx_action->name);
+        while ( (cond = xbt_fifo_pop(smx_action->cond_list)) ) {
+           SIMIX_cond_broadcast(cond);
+                       }
+        /* action finished, destroy it */
+        //     SIMIX_action_destroy(smx_action);
+      }
+      
+      while ( (smx_action = xbt_fifo_pop(actions_done)) ) {
+        
+        DEBUG1("** %s done **",smx_action->name);
+        while ( (cond = xbt_fifo_pop(smx_action->cond_list)) ) {
+           SIMIX_cond_broadcast(cond);
+        }
+        /* action finished, destroy it */
+        //SIMIX_action_destroy(smx_action);
+      }
+   }
+   xbt_fifo_free(actions_failed);
+   xbt_fifo_free(actions_done);
+   return;   
+}
+void gras_launch_application(const char *file) {
+   return SIMIX_launch_application(file);
+}
+void gras_clean() {
+   return SIMIX_clean();
+}
+
+