Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Used test with receiver.
authornavarrop <navarrop@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 7 Jul 2010 09:36:05 +0000 (09:36 +0000)
committernavarrop <navarrop@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 7 Jul 2010 09:36:05 +0000 (09:36 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@7991 48e7efb5-ca39-0410-a469-dd3cf9ba447f

examples/msg/irc_isend/deployment_peer01.xml
examples/msg/irc_isend/deployment_peer02.xml
examples/msg/irc_isend/deployment_peer03.xml
examples/msg/irc_isend/deployment_peer04.xml
examples/msg/irc_isend/peer.c
src/msg/gos.c

index cb449e750eea8de701d74259d277490e1048b480..8df97ef63c0c9697595d2c92a1504caa423e2067 100755 (executable)
@@ -14,5 +14,6 @@
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="1"/>         <!-- Sleep_start_time -->
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="1"/>         <!-- Sleep_start_time -->
+    <argument value="0.1"/>      <!-- Time for test -->
   </process>
 </platform>
   </process>
 </platform>
index 23cabf6fb3eb623522c309075f94314d8b286903..8d4c92f5f935f6b622f036c9a4b72d064e4a6893 100755 (executable)
@@ -14,5 +14,6 @@
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="5"/>         <!-- Sleep_start_time -->
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="5"/>         <!-- Sleep_start_time -->
+    <argument value="0.1"/>      <!-- Time for test -->
   </process>
 </platform>
   </process>
 </platform>
index 8ffcbb8cacb2a9d4c931ad8427b725db0d6ec570..734b990c35960a0597374345ce3542f60d2af957 100755 (executable)
@@ -14,5 +14,6 @@
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="1"/>         <!-- Sleep_start_time -->
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="1"/>         <!-- Sleep_start_time -->
+    <argument value="0"/>      <!-- Time for test -->
   </process>
 </platform>
   </process>
 </platform>
index 9df7712dda8f3b1b326eab85496943cdbbfb0c2b..08d2d563b738ee4525a38207ad54fa79415b9eee 100755 (executable)
@@ -14,6 +14,7 @@
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="5"/>         <!-- Sleep_start_time -->
   <process host="Ruby" function="receiver">
     <argument value="0"/>
     <argument value="5"/>         <!-- Sleep_start_time -->
+    <argument value="0"/>      <!-- Time for test -->
   </process>
 </platform>
 
   </process>
 </platform>
 
index 838f9994578ede2c3b06e00d381ff0e5652e6b50..2271765b5626c6c1c03f2a0469a29538c39cdf2f 100755 (executable)
@@ -94,7 +94,8 @@ int receiver(int argc, char *argv[])
   char mailbox[80];
   msg_comm_t res_irecv;
   double sleep_start_time = atof(argv[2]);
   char mailbox[80];
   msg_comm_t res_irecv;
   double sleep_start_time = atof(argv[2]);
-  INFO1("sleep_start_time : %f ",sleep_start_time);
+  double sleep_test_time = atof(argv[3]);
+  INFO2("sleep_start_time : %f , sleep_test_time : %f",sleep_start_time,sleep_test_time);
 
   xbt_assert1(sscanf(argv[1],"%d", &id),
         "Invalid argument %s\n",argv[1]);
 
   xbt_assert1(sscanf(argv[1],"%d", &id),
         "Invalid argument %s\n",argv[1]);
@@ -105,9 +106,20 @@ int receiver(int argc, char *argv[])
   while(1) {
        res_irecv = MSG_task_irecv(&(task), mailbox);
        INFO0("Wait to receive a task");
   while(1) {
        res_irecv = MSG_task_irecv(&(task), mailbox);
        INFO0("Wait to receive a task");
-       res = MSG_comm_wait(res_irecv,-1);
 
 
-    xbt_assert0(res == MSG_OK, "MSG_task_get failed");
+    if(sleep_test_time == 0)
+    {
+       res = MSG_comm_wait(res_irecv,-1);
+       xbt_assert0(res == MSG_OK, "MSG_task_get failed");
+    }
+    else
+    {
+               while(MSG_comm_test(res_irecv) == 0){
+                       MSG_process_sleep (sleep_test_time);
+               };
+               MSG_comm_destroy(res_irecv);
+    }
+
        INFO1("Received \"%s\"", MSG_task_get_name(task));
        if (!strcmp(MSG_task_get_name(task),"finalize")) {
          MSG_task_destroy(task);
        INFO1("Received \"%s\"", MSG_task_get_name(task));
        if (!strcmp(MSG_task_get_name(task),"finalize")) {
          MSG_task_destroy(task);
index b98263d5ca596aa514a9f01c3a333c793171f174..6ad4005acc02013d11b0fcf3f884c59e1230bef0 100644 (file)
@@ -470,7 +470,14 @@ int MSG_comm_test(msg_comm_t comm) {
        return SIMIX_network_test(comm);
 }
 
        return SIMIX_network_test(comm);
 }
 
+/* After received TRUE to MSG_comm_test() function we have to destroy the communication */
 void MSG_comm_destroy(msg_comm_t comm) {
 void MSG_comm_destroy(msg_comm_t comm) {
+       if(!(comm->src_proc == SIMIX_process_self()))
+       {
+               m_task_t  task;
+               task = (m_task_t) SIMIX_communication_get_src_buf(comm);
+               task->simdata->refcount--;
+       }
        SIMIX_communication_destroy(comm);
 }
 
        SIMIX_communication_destroy(comm);
 }