ptrace: Add support for generic PTRACE_GETREGSET/PTRACE_SETREGSET
authorSuresh Siddha <suresh.b.siddha@intel.com>
Thu, 11 Feb 2010 19:51:00 +0000 (11:51 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 11 Feb 2010 23:08:33 +0000 (15:08 -0800)
commit2225a122ae26d542bdce523d9d87a4a7ba10e07b
tree861117cc1711cdf3c10f76212afe2e57b05d34c4
parent5b3efd500854d45d305b53c54c97db5970959980
ptrace: Add support for generic PTRACE_GETREGSET/PTRACE_SETREGSET

Generic support for PTRACE_GETREGSET/PTRACE_SETREGSET commands which
export the regsets supported by each architecture using the correponding
NT_* types. These NT_* types are already part of the userland ABI, used
in representing the architecture specific register sets as different NOTES
in an ELF core file.

'addr' parameter for the ptrace system call encode the REGSET type (using
the corresppnding NT_* type) and the 'data' parameter points to the
struct iovec having the user buffer and the length of that buffer.

struct iovec iov = { buf, len};
ret = ptrace(PTRACE_GETREGSET/PTRACE_SETREGSET, pid, NT_XXX_TYPE, &iov);

On successful completion, iov.len will be updated by the kernel specifying
how much the kernel has written/read to/from the user's iov.buf.

x86 extended state registers are primarily exported using this interface.

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
LKML-Reference: <20100211195614.886724710@sbs-t61.sc.intel.com>
Acked-by: Hongjiu Lu <hjl.tools@gmail.com>
Cc: Roland McGrath <roland@redhat.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
include/linux/elf.h
include/linux/ptrace.h
kernel/ptrace.c