Linux Kernel
3.7.1
|
#include <regset.h>
Data Fields | |
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 |
struct user_regset - accessible thread CPU state
: Number of slots (registers). : Size in bytes of a slot (register). : Required alignment, in bytes. : Bias from natural indexing. : ELF note value used in core dumps. : 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.
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
. Each slot is bytes, and aligned to bytes (which is at least ).
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 argument must be aligned according to ; the argument must be a multiple of . These functions are not responsible for checking for invalid arguments.
When there is a natural value to use as an index, 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 from a segment selector index value computes the regset slot.
If nonzero, 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 (
* ) and nothing else. The core file note is normally omitted when there is an function and it returns zero.
user_regset_active_fn* active |
user_regset_get_fn* get |
user_regset_set_fn* set |
user_regset_writeback_fn* writeback |