#include "xbt/sysdep.h"
#include "xbt/log.h"
#include "xbt/dynar.h"
+#include "xbt/synchro_core.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");
xbt_mutex_acquire(queue->mutex);
while (queue->capacity != 0
&& queue->capacity == xbt_dynar_length(queue->data)) {
- XBT_DEBUG("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);
}
void xbt_queue_pop(xbt_queue_t queue, void *const dst)
{
xbt_mutex_acquire(queue->mutex);
- while (xbt_dynar_length(queue->data) == 0) {
+ while (xbt_dynar_is_empty(queue->data)) {
XBT_DEBUG("Queue %p empty. Waiting", queue);
xbt_cond_wait(queue->not_empty, queue->mutex);
}
xbt_mutex_acquire(queue->mutex);
while (queue->capacity != 0
&& queue->capacity == xbt_dynar_length(queue->data)) {
- XBT_DEBUG("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);
}
void xbt_queue_shift(xbt_queue_t queue, void *const dst)
{
xbt_mutex_acquire(queue->mutex);
- while (xbt_dynar_length(queue->data) == 0) {
+ while (xbt_dynar_is_empty(queue->data)) {
XBT_DEBUG("Queue %p empty. Waiting", queue);
xbt_cond_wait(queue->not_empty, queue->mutex);
}
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);
xbt_mutex_release(queue->mutex);
THROWF(timeout_error, 0,
- "Capacity of %p exceded (=%d), and delay = 0", queue,
+ "Capacity of %p exceeded (=%d), and delay = 0", queue,
queue->capacity);
}
} else {
queue->capacity == xbt_dynar_length(queue->data) &&
(delay < 0 || (xbt_time() - begin) <= delay)) {
- XBT_DEBUG("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;
}
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);
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)) {
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;
}
double delay)
{
double begin = xbt_time();
- xbt_ex_t e;
xbt_mutex_acquire(queue->mutex);
xbt_mutex_release(queue->mutex);
THROWF(timeout_error, 0,
- "Capacity of %p exceded (=%d), and delay = 0", queue,
+ "Capacity of %p exceeded (=%d), and delay = 0", queue,
queue->capacity);
}
} else {
queue->capacity == xbt_dynar_length(queue->data) &&
(delay < 0 || (xbt_time() - begin) <= delay)) {
- XBT_DEBUG("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;
}
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);
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)) {
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);
THROWF(timeout_error, 0, "Timeout (%f) elapsed, but queue still empty",
delay);