X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/aa252590f8b8836497d92ebda9afd9a8fa192e13..64561039d3dec9e50b4eaf1b78b3edef71898383:/src/xbt/fifo.c diff --git a/src/xbt/fifo.c b/src/xbt/fifo.c index a11b4168bb..51eb9b7184 100644 --- a/src/xbt/fifo.c +++ b/src/xbt/fifo.c @@ -36,13 +36,24 @@ xbt_fifo_t xbt_fifo_new(void) * Free the fifo structure. None of the objects that was in the fifo is however modified. */ void xbt_fifo_free(xbt_fifo_t l) +{ + xbt_fifo_reset(l); + xbt_free(l); +} + +/** + * \brief Makes a fifo empty. + * \param l a fifo + * + * None of the objects that was in the fifo is however modified. + */ +void xbt_fifo_reset(xbt_fifo_t l) { xbt_fifo_item_t b, tmp; for (b = xbt_fifo_get_first_item(l); b; tmp = b, b = b->next, xbt_fifo_free_item(tmp)); - xbt_free(l); - return; + l->head = l->tail = NULL; } /** Push @@ -509,19 +520,21 @@ xbt_fifo_item_t xbt_fifo_getPrevItem(xbt_fifo_item_t i) * These are internal XBT functions called by xbt_preinit/postexit(). * It can be used several times to recreate the mallocator, for example when you switch to MC mode */ -void xbt_fifo_preinit(void) { +void xbt_fifo_preinit(void) +{ if (item_mallocator != NULL) { /* Already created. I guess we want to switch to MC mode, so kill the previously created mallocator */ xbt_mallocator_free(item_mallocator); } - item_mallocator = xbt_mallocator_new(256, + item_mallocator = xbt_mallocator_new(65536, fifo_item_mallocator_new_f, fifo_item_mallocator_free_f, fifo_item_mallocator_reset_f); } -void xbt_fifo_postexit(void) { +void xbt_fifo_postexit(void) +{ if (item_mallocator != NULL) { xbt_mallocator_free(item_mallocator); item_mallocator = NULL;