Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of github.com:THEpini/simgrid
authorPierre-Nicolas Clauss <pini@tuxfamily.org>
Tue, 29 Mar 2011 15:37:45 +0000 (17:37 +0200)
committerPierre-Nicolas Clauss <pini@tuxfamily.org>
Tue, 29 Mar 2011 15:37:45 +0000 (17:37 +0200)
1  2 
src/simix/smx_user.c

diff --combined src/simix/smx_user.c
@@@ -154,6 -154,10 +154,10 @@@ smx_action_t SIMIX_req_host_execute(con
                                      double computation_amount,
                                      double priority)
  {
+   /* checking for infinite values */
+   xbt_assert(isfinite(computation_amount), "computation_amount is not finite!");
+   xbt_assert(isfinite(priority), "priority is not finite!");
+   
    smx_req_t req = SIMIX_req_mine();
  
    req->call = REQ_HOST_EXECUTE;
@@@ -186,6 -190,19 +190,19 @@@ smx_action_t SIMIX_req_host_parallel_ex
                                           double amount,
                                           double rate)
  {
+   int i,j;
+   /* checking for infinite values */
+   for (i = 0 ; i < host_nb ; ++i) {
+      xbt_assert(isfinite(computation_amount[i]), "computation_amount[%d] is not finite!", i);
+      for (j = 0 ; j < host_nb ; ++j) {
+         xbt_assert(isfinite(communication_amount[i + host_nb * j]), 
+                  "communication_amount[%d+%d*%d] is not finite!", i, host_nb, j);
+      }   
+   }   
+  
+   xbt_assert(isfinite(amount), "amount is not finite!");
+   xbt_assert(isfinite(rate), "rate is not finite!");
+   
    smx_req_t req = SIMIX_req_mine();
  
    req->call = REQ_HOST_PARALLEL_EXECUTE;
@@@ -271,6 -288,9 +288,9 @@@ e_smx_state_t SIMIX_req_host_execution_
   */
  void SIMIX_req_host_execution_set_priority(smx_action_t execution, double priority)
  {
+   /* checking for infinite values */
+   xbt_assert(isfinite(priority), "priority is not finite!");
+   
    smx_req_t req = SIMIX_req_mine();
  
    req->call = REQ_HOST_EXECUTION_SET_PRIORITY;
@@@ -376,12 -396,13 +396,12 @@@ void SIMIX_req_process_cleanup(smx_proc
   * \param source name of the previous host
   * \param dest name of the new host
   */
 -void SIMIX_req_process_change_host(smx_process_t process, const char *source, const char *dest)
 +void SIMIX_req_process_change_host(smx_process_t process, smx_host_t dest)
  {
    smx_req_t req = SIMIX_req_mine();
  
    req->call = REQ_PROCESS_CHANGE_HOST;
    req->process_change_host.process = process;
 -  req->process_change_host.source = source;
    req->process_change_host.dest = dest;
    SIMIX_request_push();
  }
@@@ -564,6 -585,9 +584,9 @@@ xbt_dict_t SIMIX_req_process_get_proper
   */
  e_smx_state_t SIMIX_req_process_sleep(double duration)
  {
+   /* checking for infinite values */
+   xbt_assert(isfinite(duration), "duration is not finite!");
+   
    smx_req_t req = SIMIX_req_mine();
  
    req->call = REQ_PROCESS_SLEEP;
@@@ -660,6 -684,11 +683,11 @@@ void SIMIX_req_comm_send(smx_rdv_t rdv
                           int (*match_fun)(void *, void *), void *data,
                           double timeout)
  {
+   /* checking for infinite values */
+   xbt_assert(isfinite(task_size), "task_size is not finite!");
+   xbt_assert(isfinite(rate), "rate is not finite!");
+   xbt_assert(isfinite(timeout), "timeout is not finite!");
+   
    xbt_assert(rdv, "No rendez-vous point defined for send");
  
    if (MC_IS_ENABLED) {
@@@ -690,6 -719,10 +718,10 @@@ smx_action_t SIMIX_req_comm_isend(smx_r
                                int (*match_fun)(void *, void *), void *data,
                                int detached)
  {
+   /* checking for infinite values */
+   xbt_assert(isfinite(task_size), "task_size is not finite!");
+   xbt_assert(isfinite(rate), "rate is not finite!");
+   
    xbt_assert(rdv, "No rendez-vous point defined for isend");
  
    smx_req_t req = SIMIX_req_mine();
  void SIMIX_req_comm_recv(smx_rdv_t rdv, void *dst_buff, size_t * dst_buff_size,
                           int (*match_fun)(void *, void *), void *data, double timeout)
  {
+   xbt_assert(isfinite(timeout), "timeout is not finite!");
    xbt_assert(rdv, "No rendez-vous point defined for recv");
  
    if (MC_IS_ENABLED) {
@@@ -805,6 -839,8 +838,8 @@@ int SIMIX_req_comm_testany(xbt_dynar_t 
  
  void SIMIX_req_comm_wait(smx_action_t comm, double timeout)
  {
+   xbt_assert(isfinite(timeout), "timeout is not finite!");
+   
    smx_req_t req = SIMIX_req_mine();
  
    req->call = REQ_COMM_WAIT;
@@@ -1025,6 -1061,8 +1060,8 @@@ void SIMIX_req_cond_wait_timeout(smx_co
                                   smx_mutex_t mutex,
                                   double timeout)
  {
+   xbt_assert(isfinite(timeout), "timeout is not finite!");
+   
    smx_req_t req = SIMIX_req_mine();
  
    req->call = REQ_COND_WAIT_TIMEOUT;
@@@ -1100,6 -1138,8 +1137,8 @@@ void SIMIX_req_sem_acquire(smx_sem_t se
  
  void SIMIX_req_sem_acquire_timeout(smx_sem_t sem, double timeout)
  {
+   xbt_assert(isfinite(timeout), "timeout is not finite!");
+   
    smx_req_t req = SIMIX_req_mine();
  
    req->call = REQ_SEM_ACQUIRE_TIMEOUT;