utrace_barrier — synchronize with simultaneous tracing callbacks
int utrace_barrier ( | struct task_struct * target, |
struct utrace_engine * engine) ; |
This blocks while target
might be in the midst of making a callback to
engine
. It can be interrupted by signals and will return -ERESTARTSYS
.
A return value of zero means no callback from target
to engine
was
in progress. Any effect of its return value (such as UTRACE_STOP
) has
already been applied to engine
.
It's not necessary to keep the target
pointer alive for this call.
It's only necessary to hold a ref on engine
. This will return
safely even if target
has been reaped and has no task refs.
A successful return from utrace_barrier
guarantees its ordering
with respect to utrace_set_events
and utrace_control
calls. If
target
was not properly stopped, event callbacks just disabled might
still be in progress; utrace_barrier
waits until there is no chance
an unwanted callback can be in progress.