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.