270cc11156
The eviction callback, for convenience (and to avoid code duplication), use to call opal_hotel_checkout(). However, opal_hotel_checkout() deletes the eviction event -- which is fine to do when opal_hotel_checkout() is invoked by the application. But when it's invoked by the same event that it's deleting, it can cause Bad Things to happen. For simplicity, instead of invoking opal_hotel_checkout() from the eviction callback, just duplicate the checkout logic into the eviction callback function (and skip the delete-the-evict-event part). For good measure, put a comment in all three places where the checkout logic occurs (because it's inlined): don't change this logic without changing all 3 places. Finally, also add a line in the docs for opal_hotel_init() warning users from calling opal_hotel_checkout() from their eviction callback. |
||
---|---|---|
.. | ||
Makefile.am | ||
opal_bitmap.c | ||
opal_bitmap.h | ||
opal_fifo.c | ||
opal_fifo.h | ||
opal_free_list.c | ||
opal_free_list.h | ||
opal_graph.c | ||
opal_graph.h | ||
opal_hash_table.c | ||
opal_hash_table.h | ||
opal_hotel.c | ||
opal_hotel.h | ||
opal_lifo.c | ||
opal_lifo.h | ||
opal_list.c | ||
opal_list.h | ||
opal_object.c | ||
opal_object.h | ||
opal_pointer_array.c | ||
opal_pointer_array.h | ||
opal_rb_tree.c | ||
opal_rb_tree.h | ||
opal_ring_buffer.c | ||
opal_ring_buffer.h | ||
opal_tree.c | ||
opal_tree.h | ||
opal_value_array.c | ||
opal_value_array.h |