summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_process.c
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2001-10-21 23:57:24 +0000
committerdes <des@FreeBSD.org>2001-10-21 23:57:24 +0000
commitf4cecd8fd870f1069e3897c5001bbc12ef72eebe (patch)
tree4d88290415ec9c8c1cff416415c846591f275a37 /sys/kern/sys_process.c
parent68ea04e86493611196c5c3e77f3479fb9eb464c5 (diff)
downloadFreeBSD-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.c42
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);
OpenPOWER on IntegriCloud