case PTRACE_POKEUSR: /* write the word at location addr in the USER area */ if (addr & 3) goto out_eio;
if (regno == PT_SR) {
data &= SR_MASK;
data |= get_reg(child, PT_SR) & ~SR_MASK;
} if (regno >= 0 && regno < 19) { if (put_reg(child, regno, data)) goto out_eio;
} elseif (regno >= 21 && regno < 48) { /* Convert long double format *intointernalfpuregrepresentation
*/ if (FPU_IS_EMU && (regno < 45) && !(regno % 3)) {
data <<= 15;
data = (data & 0xffff0000) |
((data & 0x0000ffff) >> 1);
}
child->thread.fp[regno - 21] = data;
} else goto out_eio; break;
case PTRACE_GETREGS: /* Get all gp regs from the child. */ for (i = 0; i < 19; i++) {
tmp = get_reg(child, i);
ret = put_user(tmp, datap); if (ret) break;
datap++;
} break;
case PTRACE_SETREGS: /* Set all gp regs in the child. */ for (i = 0; i < 19; i++) {
ret = get_user(tmp, datap); if (ret) break; if (i == PT_SR) {
tmp &= SR_MASK;
tmp |= get_reg(child, PT_SR) & ~SR_MASK;
}
put_reg(child, i, tmp);
datap++;
} break;
case PTRACE_GETFPREGS: /* Get the child FPU state. */ if (copy_to_user(datap, &child->thread.fp, sizeof(struct user_m68kfp_struct)))
ret = -EFAULT; break;
case PTRACE_SETFPREGS: /* Set the child FPU state. */ if (copy_from_user(&child->thread.fp, datap, sizeof(struct user_m68kfp_struct)))
ret = -EFAULT; break;
case PTRACE_GET_THREAD_AREA:
ret = put_user(task_thread_info(child)->tp_value, datap); break;
default:
ret = ptrace_request(child, request, addr, data); break;
}
return ret;
out_eio: return -EIO;
}
asmlinkage int syscall_trace_enter(void)
{ int ret = 0;
if (test_thread_flag(TIF_SYSCALL_TRACE))
ret = ptrace_report_syscall_entry(task_pt_regs(current));
if (secure_computing() == -1) return -1;
return ret;
}
asmlinkage void syscall_trace_leave(void)
{ if (test_thread_flag(TIF_SYSCALL_TRACE))
ptrace_report_syscall_exit(task_pt_regs(current), 0);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.