Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Initialize variable, and make gcc happy.
[simgrid.git] / src / simix / smx_user.c
index b9099f5..f618fdf 100644 (file)
@@ -607,7 +607,7 @@ smx_rdv_t simcall_rdv_get_by_name(const char *name)
 {
   xbt_assert(name != NULL, "Invalid parameter for simcall_rdv_get_by_name (name is NULL)");
 
-  /* FIXME: this is a horrible lost of performance, so we hack it out by
+  /* FIXME: this is a horrible loss of performance, so we hack it out by
    * skipping the simcall (for now). It works in parallel, it won't work on
    * distributed but probably we will change MSG for that. */
 
@@ -735,6 +735,29 @@ smx_action_t simcall_comm_irecv(smx_rdv_t rdv, void *dst_buff, size_t *dst_buff_
 }
 
 
+/**
+ * \ingroup simix_comm_management
+ */
+double simcall_comm_change_rate_first_action(smx_rdv_t rdv, double newrate)
+{
+  xbt_assert(rdv, "No rendez-vous point defined for change_rate_first_action");
+
+  smx_action_t action;
+  xbt_fifo_item_t item;
+
+  item = xbt_fifo_get_first_item(rdv->comm_fifo);
+  if (item != NULL) {
+    action = (smx_action_t) xbt_fifo_get_item_content(item);
+    if (action->comm.rate > newrate) {
+      action->comm.rate = newrate;
+      return newrate;
+    } else
+      return action->comm.rate;
+  } else
+    return -1.0;
+}
+
+
 /**
  * \ingroup simix_comm_management
  */