struct user_regset — accessible thread CPU state
struct user_regset { user_regset_get_fn * get; user_regset_set_fn * set; user_regset_active_fn * active; user_regset_writeback_fn * writeback; unsigned int n; unsigned int size; unsigned int align; unsigned int bias; unsigned int core_note_type; };
Function to fetch values.
Function to store values.
Function to report if regset is active, or NULL
.
Function to write data back to user memory, or NULL
.
Number of slots (registers).
Size in bytes of a slot (register).
Required alignment, in bytes.
Bias from natural indexing.
ELF note n_type
value used in core dumps.
This data structure describes a machine resource we call a register set.
This is part of the state of an individual thread, not necessarily
actual CPU registers per se. A register set consists of a number of
similar slots, given by n
. Each slot is size
bytes, and aligned to
align
bytes (which is at least size
).
These functions must be called only on the current thread or on a
thread that is in TASK_STOPPED
or TASK_TRACED
state, that we are
guaranteed will not be woken up and return to user mode, and that we
have called wait_task_inactive
on. (The target thread always might
wake up for SIGKILL while these functions are working, in which case
that thread's user_regset state might be scrambled.)
The pos
argument must be aligned according to align
; the count
argument must be a multiple of size
. These functions are not
responsible for checking for invalid arguments.
When there is a natural value to use as an index, bias
gives the
difference between the natural index and the slot index for the
register set. For example, x86 GDT segment descriptors form a regset;
the segment selector produces a natural index, but only a subset of
that index space is available as a regset (the TLS slots); subtracting
bias
from a segment selector index value computes the regset slot.
If nonzero, core_note_type
gives the n_type field (NT_* value)
of the core file note in which this regset's data appears.
NT_PRSTATUS is a special case in that the regset data starts at
offsetof(struct elf_prstatus, pr_reg) into the note data; that is
part of the per-machine ELF formats userland knows about. In
other cases, the core file note contains exactly the whole regset
(n
* size
) and nothing else. The core file note is normally
omitted when there is an active
function and it returns zero.