1
1

We had long-ago added a new loop type to libevent: EVLOOP_ONELOOP.

After talking with Brian, we're pretty sure that this is only because
really, really old libevent didn't allow bitwise or-ing of the other
loop types, because what we really need is (EVLOOP_ONCE |
EVLOOP_NONBLOCK).  And that's what EVLOOP_ONELOOP did (i.e., we
changed the logic of libevent's event.c to let ONELOOP do both ONCE
and NONBLOCK things).

In the new libevent version, we didn't implement EVLOOP_ONELOOP
properly.  As a result, and we got hangs in the SM BTL add_procs
function.  Note that the SM BTL wasn't to blame -- it was purely a
side-effect of bad ONELOOP integration (i.e., if you got past the SM
BTL add_procs, you may well have hung somewhere else).

This commit removes all ONELOOP customizations from event.c and
returns it to (almost) its original state from the libevent 2.0.7-rc
distribution.  Everwhere in the code base where we used ONELOOP, we
now use (ONCE | NONBLOCK).

This commit was SVN r23957.
Этот коммит содержится в:
Jeff Squyres
2010-10-26 20:29:22 +00:00
родитель a5c440c974
Коммит 33c3b71317
6 изменённых файлов: 4 добавлений и 24 удалений

Просмотреть файл

@ -37,7 +37,7 @@
/*
* default parameters
*/
static int opal_progress_event_flag = OPAL_EVLOOP_ONELOOP;
static int opal_progress_event_flag = OPAL_EVLOOP_ONCE | OPAL_EVLOOP_NONBLOCK;
volatile int32_t opal_progress_thread_count = 0;
int opal_progress_spin_count = 10000;