diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2011-12-22 16:20:19 -0500 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2011-12-22 16:20:19 -0500 |
commit | 39c3efbda3bc4c7b415aa851ec4f42f05acda0cb (patch) | |
tree | ef7c7828d7539748e635ca0cca3f319fb9113044 /indra/newview/llpanelgrouproles.cpp | |
parent | 25ef0cd2236aeb2d0047881e11a0022c4355cd48 (diff) |
Add child_status_callback() function and arrange to call periodically.
At least on OS X 10.7, a call to apr_proc_wait(APR_NOWAIT) in fact seems to
block the caller. So instead of polling apr_proc_wait(), use APR callback
mechanism (apr_proc_other_child_register() et al.) and poll that using
apr_proc_other_child_refresh_all().
Evidently this polls the underlying system waitpid(), but the internal call
seems to better support nonblocking. On arrival in the
child_status_callback(APR_OC_REASON_DEATH) call, though, apr_proc_wait()
produces ECHILD: the child process in question has already been reaped.
The OS-encoded wait() status does get passed to the callback, but then we have
to use OS-dependent macros to tease apart voluntary termination vs. killed by
signal... a bit of a hole in APR's abstraction layer.
Wrap ensure_equals() calls with a macro to explain which comparison failed.
Diffstat (limited to 'indra/newview/llpanelgrouproles.cpp')
0 files changed, 0 insertions, 0 deletions