utrace_prepare_examine — prepare to examine thread state
int utrace_prepare_examine ( | struct task_struct * target, |
struct utrace_engine * engine, | |
struct utrace_examiner * exam) ; |
target
thread of interest, a struct task_struct pointer
engine
engine pointer returned by utrace_attach_task
exam
temporary state, a struct utrace_examiner pointer
This call prepares to safely examine the thread target
using
struct user_regset calls, or direct access to thread-synchronous fields.
When target
is current, this call is superfluous. When target
is
another thread, it must be held stopped via UTRACE_STOP
by engine
.
This call may block the caller until target
stays stopped, so it must
be called only after the caller is sure target
is about to unschedule.
This means a zero return from a utrace_control
call on engine
giving
UTRACE_STOP
, or a report_quiesce
or report_signal
callback to
engine
that used UTRACE_STOP
in its return value.
Returns -ESRCH
if target
is dead or -EINVAL
if UTRACE_STOP
was
not used. If target
has started running again despite UTRACE_STOP
(for SIGKILL
or a spurious wakeup), this call returns -EAGAIN
.
When this call returns zero, it's safe to use struct user_regset
calls and task_user_regset_view
on target
and to examine some of
its fields directly. When the examination is complete, a
utrace_finish_examine
call must follow to check whether it was
completed safely.