asmlinkage int sys_ptrace(long request, long pid, long addr, long data) 
asmlinkage long sys_ptrace(long request, long pid, long addr, long data) 
asmlinkage int sys_ptrace(long request, long pid, long addr, long data){	struct task_struct *child;	int ret;	lock_kernel();	ret = -EPERM;	if (request == PTRACE_TRACEME) {		/* are we already being traced? */		if (current->ptrace & PT_PTRACED)			goto out;		/* set the ptrace bit in the process flags. */		current->ptrace |= PT_PTRACED;		ret = 0;		goto out;	}	ret = -ESRCH;	read_lock(&tasklist_lock);	child = find_task_by_pid(pid);	if (child)		get_task_struct(child);	read_unlock(&tasklist_lock);	if (!child)		goto out;	ret = -EPERM;	if (pid == 1)		/* you may not mess with init */		goto out;	if (request == PTRACE_ATTACH) {		ret = ptrace_attach(child);		if (ret == 0)			init_debug_traps(child);		goto out_tsk;	}	ret = ptrace_check_attach(child, request == PTRACE_KILL);	if (ret == 0)		ret = do_ptrace(request, child, addr, data);out_tsk:	put_task_struct(child);out:	unlock_kernel();	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dfb7dac3af623a68262536437af008ed6aba4d88/ptrace.c/clean/arch/m32r/kernel/ptrace.c