[ARM] 3665/1: crunch: add ptrace support
Patch from Lennert Buytenhek This patch makes it possible to get/set a task's Crunch state via the ptrace(2) system call. Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
3bec6ded28
commit
5429b060df
@ -634,6 +634,32 @@ static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_CRUNCH
|
||||||
|
/*
|
||||||
|
* Get the child Crunch state.
|
||||||
|
*/
|
||||||
|
static int ptrace_getcrunchregs(struct task_struct *tsk, void __user *ufp)
|
||||||
|
{
|
||||||
|
struct thread_info *thread = task_thread_info(tsk);
|
||||||
|
|
||||||
|
crunch_task_disable(thread); /* force it to ram */
|
||||||
|
return copy_to_user(ufp, &thread->crunchstate, CRUNCH_SIZE)
|
||||||
|
? -EFAULT : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the child Crunch state.
|
||||||
|
*/
|
||||||
|
static int ptrace_setcrunchregs(struct task_struct *tsk, void __user *ufp)
|
||||||
|
{
|
||||||
|
struct thread_info *thread = task_thread_info(tsk);
|
||||||
|
|
||||||
|
crunch_task_release(thread); /* force a reload */
|
||||||
|
return copy_from_user(&thread->crunchstate, ufp, CRUNCH_SIZE)
|
||||||
|
? -EFAULT : 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||||
{
|
{
|
||||||
unsigned long tmp;
|
unsigned long tmp;
|
||||||
@ -765,6 +791,16 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||||||
child->ptrace_message = data;
|
child->ptrace_message = data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef CONFIG_CRUNCH
|
||||||
|
case PTRACE_GETCRUNCHREGS:
|
||||||
|
ret = ptrace_getcrunchregs(child, (void __user *)data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PTRACE_SETCRUNCHREGS:
|
||||||
|
ret = ptrace_setcrunchregs(child, (void __user *)data);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ret = ptrace_request(child, request, addr, data);
|
ret = ptrace_request(child, request, addr, data);
|
||||||
break;
|
break;
|
||||||
|
@ -25,6 +25,11 @@
|
|||||||
|
|
||||||
#define PTRACE_SET_SYSCALL 23
|
#define PTRACE_SET_SYSCALL 23
|
||||||
|
|
||||||
|
/* PTRACE_SYSCALL is 24 */
|
||||||
|
|
||||||
|
#define PTRACE_GETCRUNCHREGS 25
|
||||||
|
#define PTRACE_SETCRUNCHREGS 26
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PSR bits
|
* PSR bits
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user