Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill xbt_dynar_dopar().
[simgrid.git] / src / xbt / xbt_queue.c
index b3829bd..6dc3c95 100644 (file)
@@ -12,9 +12,7 @@
 #include "xbt/log.h"
 #include "xbt/dynar.h"
 
-#include "xbt/synchro.h"
 #include "xbt/queue.h"          /* this module */
-#include "gras/virtu.h"
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_queue, xbt,
                                 "Message exchanging queue");
 
@@ -33,7 +31,8 @@ typedef struct s_xbt_queue_ {
 xbt_queue_t xbt_queue_new(int capacity, unsigned long elm_size)
 {
   xbt_queue_t res = xbt_new0(s_xbt_queue_t, 1);
-  xbt_assert0(capacity >= 0, "Capacity cannot be negative");
+  if (capacity<0)
+    capacity=0;
 
   res->capacity = capacity;
   res->data = xbt_dynar_new(elm_size, NULL);
@@ -54,7 +53,7 @@ void xbt_queue_free(xbt_queue_t * queue)
   xbt_mutex_destroy((*queue)->mutex);
   xbt_cond_destroy((*queue)->not_full);
   xbt_cond_destroy((*queue)->not_empty);
-  free((*queue));
+  free(*queue);
   *queue = NULL;
 }
 
@@ -79,7 +78,7 @@ void xbt_queue_push(xbt_queue_t queue, const void *src)
   xbt_mutex_acquire(queue->mutex);
   while (queue->capacity != 0
          && queue->capacity == xbt_dynar_length(queue->data)) {
-    DEBUG2("Capacity of %p exceded (=%d). Waiting", queue,
+    XBT_DEBUG("Capacity of %p exceeded (=%d). Waiting", queue,
            queue->capacity);
     xbt_cond_wait(queue->not_full, queue->mutex);
   }
@@ -99,8 +98,8 @@ void xbt_queue_push(xbt_queue_t queue, const void *src)
 void xbt_queue_pop(xbt_queue_t queue, void *const dst)
 {
   xbt_mutex_acquire(queue->mutex);
-  while (xbt_dynar_length(queue->data) == 0) {
-    DEBUG1("Queue %p empty. Waiting", queue);
+  while (xbt_dynar_is_empty(queue->data)) {
+    XBT_DEBUG("Queue %p empty. Waiting", queue);
     xbt_cond_wait(queue->not_empty, queue->mutex);
   }
   xbt_dynar_pop(queue->data, dst);
@@ -119,7 +118,7 @@ void xbt_queue_unshift(xbt_queue_t queue, const void *src)
   xbt_mutex_acquire(queue->mutex);
   while (queue->capacity != 0
          && queue->capacity == xbt_dynar_length(queue->data)) {
-    DEBUG2("Capacity of %p exceded (=%d). Waiting", queue,
+    XBT_DEBUG("Capacity of %p exceeded (=%d). Waiting", queue,
            queue->capacity);
     xbt_cond_wait(queue->not_full, queue->mutex);
   }
@@ -139,8 +138,8 @@ void xbt_queue_unshift(xbt_queue_t queue, const void *src)
 void xbt_queue_shift(xbt_queue_t queue, void *const dst)
 {
   xbt_mutex_acquire(queue->mutex);
-  while (xbt_dynar_length(queue->data) == 0) {
-    DEBUG1("Queue %p empty. Waiting", queue);
+  while (xbt_dynar_is_empty(queue->data)) {
+    XBT_DEBUG("Queue %p empty. Waiting", queue);
     xbt_cond_wait(queue->not_empty, queue->mutex);
   }
   xbt_dynar_shift(queue->data, dst);
@@ -158,7 +157,6 @@ void xbt_queue_shift(xbt_queue_t queue, void *const dst)
 void xbt_queue_push_timed(xbt_queue_t queue, const void *src, double delay)
 {
   double begin = xbt_time();
-  xbt_ex_t e;
 
   xbt_mutex_acquire(queue->mutex);
 
@@ -167,8 +165,8 @@ void xbt_queue_push_timed(xbt_queue_t queue, const void *src, double delay)
         queue->capacity == xbt_dynar_length(queue->data)) {
 
       xbt_mutex_release(queue->mutex);
-      THROW2(timeout_error, 0,
-             "Capacity of %p exceded (=%d), and delay = 0", queue,
+      THROWF(timeout_error, 0,
+             "Capacity of %p exceeded (=%d), and delay = 0", queue,
              queue->capacity);
     }
   } else {
@@ -176,13 +174,13 @@ void xbt_queue_push_timed(xbt_queue_t queue, const void *src, double delay)
            queue->capacity == xbt_dynar_length(queue->data) &&
            (delay < 0 || (xbt_time() - begin) <= delay)) {
 
-      DEBUG2("Capacity of %p exceded (=%d). Waiting", queue,
+      XBT_DEBUG("Capacity of %p exceeded (=%d). Waiting", queue,
              queue->capacity);
       TRY {
         xbt_cond_timedwait(queue->not_full, queue->mutex,
                            delay < 0 ? -1 : delay - (xbt_time() - begin));
       }
-      CATCH(e) {
+      CATCH_ANONYMOUS {
         xbt_mutex_release(queue->mutex);
         RETHROW;
       }
@@ -203,24 +201,23 @@ void xbt_queue_push_timed(xbt_queue_t queue, const void *src, double delay)
 void xbt_queue_pop_timed(xbt_queue_t queue, void *const dst, double delay)
 {
   double begin = xbt_time();
-  xbt_ex_t e;
 
   xbt_mutex_acquire(queue->mutex);
 
   if (delay == 0) {
-    if (xbt_dynar_length(queue->data) == 0) {
+    if (xbt_dynar_is_empty(queue->data)) {
       xbt_mutex_release(queue->mutex);
-      THROW0(timeout_error, 0, "Delay = 0, and queue is empty");
+      THROWF(timeout_error, 0, "Delay = 0, and queue is empty");
     }
   } else {
-    while ((xbt_dynar_length(queue->data) == 0) &&
+    while ((xbt_dynar_is_empty(queue->data)) &&
            (delay < 0 || (xbt_time() - begin) <= delay)) {
-      DEBUG1("Queue %p empty. Waiting", queue);
+      XBT_DEBUG("Queue %p empty. Waiting", queue);
       TRY {
         xbt_cond_timedwait(queue->not_empty, queue->mutex,
                            delay < 0 ? -1 : delay - (xbt_time() - begin));
       }
-      CATCH(e) {
+      CATCH_ANONYMOUS {
         xbt_mutex_release(queue->mutex);
         RETHROW;
       }
@@ -240,7 +237,6 @@ void xbt_queue_unshift_timed(xbt_queue_t queue, const void *src,
                              double delay)
 {
   double begin = xbt_time();
-  xbt_ex_t e;
 
   xbt_mutex_acquire(queue->mutex);
 
@@ -249,8 +245,8 @@ void xbt_queue_unshift_timed(xbt_queue_t queue, const void *src,
         queue->capacity == xbt_dynar_length(queue->data)) {
 
       xbt_mutex_release(queue->mutex);
-      THROW2(timeout_error, 0,
-             "Capacity of %p exceded (=%d), and delay = 0", queue,
+      THROWF(timeout_error, 0,
+             "Capacity of %p exceeded (=%d), and delay = 0", queue,
              queue->capacity);
     }
   } else {
@@ -258,13 +254,13 @@ void xbt_queue_unshift_timed(xbt_queue_t queue, const void *src,
            queue->capacity == xbt_dynar_length(queue->data) &&
            (delay < 0 || (xbt_time() - begin) <= delay)) {
 
-      DEBUG2("Capacity of %p exceded (=%d). Waiting", queue,
+      XBT_DEBUG("Capacity of %p exceeded (=%d). Waiting", queue,
              queue->capacity);
       TRY {
         xbt_cond_timedwait(queue->not_full, queue->mutex,
                            delay < 0 ? -1 : delay - (xbt_time() - begin));
       }
-      CATCH(e) {
+      CATCH_ANONYMOUS {
         xbt_mutex_release(queue->mutex);
         RETHROW;
       }
@@ -286,33 +282,32 @@ void xbt_queue_shift_timed(xbt_queue_t queue, void *const dst,
                            double delay)
 {
   double begin = xbt_time();
-  xbt_ex_t e;
 
   xbt_mutex_acquire(queue->mutex);
 
   if (delay == 0) {
-    if (xbt_dynar_length(queue->data) == 0) {
+    if (xbt_dynar_is_empty(queue->data)) {
       xbt_mutex_release(queue->mutex);
-      THROW0(timeout_error, 0, "Delay = 0, and queue is empty");
+      THROWF(timeout_error, 0, "Delay = 0, and queue is empty");
     }
   } else {
-    while ((xbt_dynar_length(queue->data) == 0) &&
+    while ((xbt_dynar_is_empty(queue->data)) &&
            (delay < 0 || (xbt_time() - begin) <= delay)) {
-      DEBUG1("Queue %p empty. Waiting", queue);
+      XBT_DEBUG("Queue %p empty. Waiting", queue);
       TRY {
         xbt_cond_timedwait(queue->not_empty, queue->mutex,
                            delay < 0 ? -1 : delay - (xbt_time() - begin));
       }
-      CATCH(e) {
+      CATCH_ANONYMOUS {
         xbt_mutex_release(queue->mutex);
         RETHROW;
       }
     }
   }
 
-  if (xbt_dynar_length(queue->data) == 0) {
+  if (xbt_dynar_is_empty(queue->data)) {
     xbt_mutex_release(queue->mutex);
-    THROW1(timeout_error, 0, "Timeout (%f) elapsed, but queue still empty",
+    THROWF(timeout_error, 0, "Timeout (%f) elapsed, but queue still empty",
            delay);
   }