diff options
author | des <des@FreeBSD.org> | 2001-10-21 23:57:24 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2001-10-21 23:57:24 +0000 |
commit | f4cecd8fd870f1069e3897c5001bbc12ef72eebe (patch) | |
tree | 4d88290415ec9c8c1cff416415c846591f275a37 /sys/kern/sys_process.c | |
parent | 68ea04e86493611196c5c3e77f3479fb9eb464c5 (diff) | |
download | FreeBSD-src-f4cecd8fd870f1069e3897c5001bbc12ef72eebe.zip FreeBSD-src-f4cecd8fd870f1069e3897c5001bbc12ef72eebe.tar.gz |
Move procfs_* from procfs_machdep.c into sys_process.c, and rename them to
proc_* in the process; procfs_machdep.c is no longer needed.
Run-tested on i386, build-tested on Alpha, untested on other platforms.
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r-- | sys/kern/sys_process.c | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c index 7408c6c..a1ef385 100644 --- a/sys/kern/sys_process.c +++ b/sys/kern/sys_process.c @@ -53,6 +53,36 @@ #include <vm/vm_object.h> #include <vm/vm_page.h> +#define PROC_REG_ACTION(name, action, type) \ +int \ +proc_##name##_##type##s(struct thread *td, struct type *regs) \ +{ \ + int error; \ + \ + mtx_lock_spin(&sched_lock); \ + error = (action##_##type##s(td, regs)); \ + mtx_unlock_spin(&sched_lock); \ + return (error); \ +} + +PROC_REG_ACTION(read, fill, reg); +PROC_REG_ACTION(write, set, reg); +PROC_REG_ACTION(read, fill, dbreg); +PROC_REG_ACTION(write, set, dbreg); +PROC_REG_ACTION(read, fill, fpreg); +PROC_REG_ACTION(write, set, fpreg); + +int +proc_sstep(struct thread *td) +{ + int error; + + mtx_lock_spin(&sched_lock); + error = ptrace_single_step(td); + mtx_unlock_spin(&sched_lock); + return (error); +} + int proc_rwmem(struct proc *p, struct uio *uio) { @@ -495,7 +525,7 @@ ptrace(struct thread *td, struct ptrace_args *uap) error = copyin(uap->addr, &r.reg, sizeof r.reg); if (error == 0) { PHOLD(p); - error = procfs_write_regs(&p->p_thread, &r.reg); + error = proc_write_regs(&p->p_thread, &r.reg); PRELE(p); } return (error); @@ -504,7 +534,7 @@ ptrace(struct thread *td, struct ptrace_args *uap) #ifdef PT_GETREGS case PT_GETREGS: PHOLD(p); - error = procfs_read_regs(&p->p_thread, &r.reg); + error = proc_read_regs(&p->p_thread, &r.reg); PRELE(p); if (error == 0) error = copyout(&r.reg, uap->addr, sizeof r.reg); @@ -516,7 +546,7 @@ ptrace(struct thread *td, struct ptrace_args *uap) error = copyin(uap->addr, &r.fpreg, sizeof r.fpreg); if (error == 0) { PHOLD(p); - error = procfs_write_fpregs(&p->p_thread, &r.fpreg); + error = proc_write_fpregs(&p->p_thread, &r.fpreg); PRELE(p); } return (error); @@ -525,7 +555,7 @@ ptrace(struct thread *td, struct ptrace_args *uap) #ifdef PT_GETFPREGS case PT_GETFPREGS: PHOLD(p); - error = procfs_read_fpregs(&p->p_thread, &r.fpreg); + error = proc_read_fpregs(&p->p_thread, &r.fpreg); PRELE(p); if (error == 0) error = copyout(&r.fpreg, uap->addr, sizeof r.fpreg); @@ -537,7 +567,7 @@ ptrace(struct thread *td, struct ptrace_args *uap) error = copyin(uap->addr, &r.dbreg, sizeof r.dbreg); if (error == 0) { PHOLD(p); - error = procfs_write_dbregs(&p->p_thread, &r.dbreg); + error = proc_write_dbregs(&p->p_thread, &r.dbreg); PRELE(p); } return (error); @@ -546,7 +576,7 @@ ptrace(struct thread *td, struct ptrace_args *uap) #ifdef PT_GETDBREGS case PT_GETDBREGS: PHOLD(p); - error = procfs_read_dbregs(&p->p_thread, &r.dbreg); + error = proc_read_dbregs(&p->p_thread, &r.dbreg); PRELE(p); if (error == 0) error = copyout(&r.dbreg, uap->addr, sizeof r.dbreg); |