summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/procfs_machdep.c43
1 files changed, 16 insertions, 27 deletions
diff --git a/sys/ia64/ia64/procfs_machdep.c b/sys/ia64/ia64/procfs_machdep.c
index e771a37..6deaafa 100644
--- a/sys/ia64/ia64/procfs_machdep.c
+++ b/sys/ia64/ia64/procfs_machdep.c
@@ -81,19 +81,25 @@
#include <sys/user.h>
+#define PROCFS_ACTION(action) do { \
+ int error; \
+ \
+ mtx_lock_spin(&sched_lock); \
+ if ((p->p_sflag & PS_INMEM) == 0) \
+ error = EIO; \
+ else \
+ error = (action); \
+ mtx_unlock_spin(&sched_lock); \
+ return (error); \
+} while(0)
+
int
procfs_read_regs(p, regs)
struct proc *p;
struct reg *regs;
{
- mtx_lock_spin(&sched_lock);
- if ((p->p_sflag & PS_INMEM) == 0) {
- mtx_unlock_spin(&sched_lock);
- return (EIO);
- }
- mtx_unlock_spin(&sched_lock);
- return (fill_regs(p, regs));
+ PROCFS_ACTION(fill_regs(p, regs));
}
int
@@ -102,13 +108,7 @@ procfs_write_regs(p, regs)
struct reg *regs;
{
- mtx_lock_spin(&sched_lock);
- if ((p->p_sflag & PS_INMEM) == 0) {
- mtx_unlock_spin(&sched_lock);
- return (EIO);
- }
- mtx_unlock_spin(&sched_lock);
- return (set_regs(p, regs));
+ PROCFS_ACTION(set_regs(p, regs));
}
/*
@@ -122,12 +122,7 @@ procfs_read_fpregs(p, fpregs)
struct fpreg *fpregs;
{
- mtx_lock_spin(&sched_lock);
- if ((p->p_sflag & PS_INMEM) == 0) {
- mtx_unlock_spin(&sched_lock);
- return (EIO);
- }
- return (fill_fpregs(p, fpregs));
+ PROCFS_ACTION(fill_fpregs(p, fpregs));
}
int
@@ -136,13 +131,7 @@ procfs_write_fpregs(p, fpregs)
struct fpreg *fpregs;
{
- mtx_lock_spin(&sched_lock);
- if ((p->p_sflag & PS_INMEM) == 0) {
- mtx_unlock_spin(&sched_lock);
- return (EIO);
- }
- mtx_unlock_spin(&sched_lock);
- return (set_fpregs(p, fpregs));
+ PROCFS_ACTION(set_fpregs(p, fpregs));
}
int
OpenPOWER on IntegriCloud