summaryrefslogtreecommitdiffstats
path: root/sys/i386/ibcs2
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2001-09-12 08:38:13 +0000
committerjulian <julian@FreeBSD.org>2001-09-12 08:38:13 +0000
commit5596676e6c6c1e81e899cd0531f9b1c28a292669 (patch)
treeb1a19fcdf05759281fab0d89efb13f0fdf42102e /sys/i386/ibcs2
parent83e00d4274950d2b531c24692cd123538ffbddb9 (diff)
downloadFreeBSD-src-5596676e6c6c1e81e899cd0531f9b1c28a292669.zip
FreeBSD-src-5596676e6c6c1e81e899cd0531f9b1c28a292669.tar.gz
KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
Diffstat (limited to 'sys/i386/ibcs2')
-rw-r--r--sys/i386/ibcs2/ibcs2_fcntl.c55
-rw-r--r--sys/i386/ibcs2/ibcs2_ioctl.c81
-rw-r--r--sys/i386/ibcs2/ibcs2_ipc.c48
-rw-r--r--sys/i386/ibcs2/ibcs2_isc.c6
-rw-r--r--sys/i386/ibcs2/ibcs2_misc.c321
-rw-r--r--sys/i386/ibcs2/ibcs2_msg.c22
-rw-r--r--sys/i386/ibcs2/ibcs2_other.c24
-rw-r--r--sys/i386/ibcs2/ibcs2_proto.h114
-rw-r--r--sys/i386/ibcs2/ibcs2_signal.c60
-rw-r--r--sys/i386/ibcs2/ibcs2_socksys.c66
-rw-r--r--sys/i386/ibcs2/ibcs2_socksys.h4
-rw-r--r--sys/i386/ibcs2/ibcs2_stat.c44
-rw-r--r--sys/i386/ibcs2/ibcs2_sysi86.c10
-rw-r--r--sys/i386/ibcs2/ibcs2_util.c14
-rw-r--r--sys/i386/ibcs2/ibcs2_util.h12
-rw-r--r--sys/i386/ibcs2/ibcs2_xenix.c42
-rw-r--r--sys/i386/ibcs2/ibcs2_xenix.h36
-rw-r--r--sys/i386/ibcs2/imgact_coff.c21
18 files changed, 499 insertions, 481 deletions
diff --git a/sys/i386/ibcs2/ibcs2_fcntl.c b/sys/i386/ibcs2/ibcs2_fcntl.c
index 971adce..6151c5d 100644
--- a/sys/i386/ibcs2/ibcs2_fcntl.c
+++ b/sys/i386/ibcs2/ibcs2_fcntl.c
@@ -169,73 +169,74 @@ oflags2ioflags(flags)
}
int
-ibcs2_open(p, uap)
- struct proc *p;
+ibcs2_open(td, uap)
+ struct thread *td;
struct ibcs2_open_args *uap;
{
+ struct proc *p = td->td_proc;
int noctty = SCARG(uap, flags) & IBCS2_O_NOCTTY;
int ret;
caddr_t sg = stackgap_init();
SCARG(uap, flags) = cvt_o_flags(SCARG(uap, flags));
if (SCARG(uap, flags) & O_CREAT)
- CHECKALTCREAT(p, &sg, SCARG(uap, path));
+ CHECKALTCREAT(td, &sg, SCARG(uap, path));
else
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- ret = open(p, (struct open_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ ret = open(td, (struct open_args *)uap);
#ifdef SPX_HACK
if (ret == ENXIO) {
if (!strcmp(SCARG(uap, path), "/compat/ibcs2/dev/spx"))
- ret = spx_open(p, uap);
+ ret = spx_open(td, uap);
} else
#endif /* SPX_HACK */
PROC_LOCK(p);
if (!ret && !noctty && SESS_LEADER(p) && !(p->p_flag & P_CONTROLT)) {
struct filedesc *fdp = p->p_fd;
- struct file *fp = fdp->fd_ofiles[p->p_retval[0]];
+ struct file *fp = fdp->fd_ofiles[td->td_retval[0]];
PROC_UNLOCK(p);
/* ignore any error, just give it a try */
if (fp->f_type == DTYPE_VNODE)
- fo_ioctl(fp, TIOCSCTTY, (caddr_t) 0, p);
+ fo_ioctl(fp, TIOCSCTTY, (caddr_t) 0, td);
} else
PROC_UNLOCK(p);
return ret;
}
int
-ibcs2_creat(p, uap)
- struct proc *p;
+ibcs2_creat(td, uap)
+ struct thread *td;
struct ibcs2_creat_args *uap;
{
struct open_args cup;
caddr_t sg = stackgap_init();
- CHECKALTCREAT(p, &sg, SCARG(uap, path));
+ CHECKALTCREAT(td, &sg, SCARG(uap, path));
SCARG(&cup, path) = SCARG(uap, path);
SCARG(&cup, mode) = SCARG(uap, mode);
SCARG(&cup, flags) = O_WRONLY | O_CREAT | O_TRUNC;
- return open(p, &cup);
+ return open(td, &cup);
}
int
-ibcs2_access(p, uap)
- struct proc *p;
+ibcs2_access(td, uap)
+ struct thread *td;
struct ibcs2_access_args *uap;
{
struct access_args cup;
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
SCARG(&cup, path) = SCARG(uap, path);
SCARG(&cup, flags) = SCARG(uap, flags);
- return access(p, &cup);
+ return access(td, &cup);
}
int
-ibcs2_fcntl(p, uap)
- struct proc *p;
+ibcs2_fcntl(td, uap)
+ struct thread *td;
struct ibcs2_fcntl_args *uap;
{
int error;
@@ -248,32 +249,32 @@ ibcs2_fcntl(p, uap)
SCARG(&fa, fd) = SCARG(uap, fd);
SCARG(&fa, cmd) = F_DUPFD;
SCARG(&fa, arg) = (/* XXX */ int)SCARG(uap, arg);
- return fcntl(p, &fa);
+ return fcntl(td, &fa);
case IBCS2_F_GETFD:
SCARG(&fa, fd) = SCARG(uap, fd);
SCARG(&fa, cmd) = F_GETFD;
SCARG(&fa, arg) = (/* XXX */ int)SCARG(uap, arg);
- return fcntl(p, &fa);
+ return fcntl(td, &fa);
case IBCS2_F_SETFD:
SCARG(&fa, fd) = SCARG(uap, fd);
SCARG(&fa, cmd) = F_SETFD;
SCARG(&fa, arg) = (/* XXX */ int)SCARG(uap, arg);
- return fcntl(p, &fa);
+ return fcntl(td, &fa);
case IBCS2_F_GETFL:
SCARG(&fa, fd) = SCARG(uap, fd);
SCARG(&fa, cmd) = F_GETFL;
SCARG(&fa, arg) = (/* XXX */ int)SCARG(uap, arg);
- error = fcntl(p, &fa);
+ error = fcntl(td, &fa);
if (error)
return error;
- p->p_retval[0] = oflags2ioflags(p->p_retval[0]);
+ td->td_retval[0] = oflags2ioflags(td->td_retval[0]);
return error;
case IBCS2_F_SETFL:
SCARG(&fa, fd) = SCARG(uap, fd);
SCARG(&fa, cmd) = F_SETFL;
SCARG(&fa, arg) = (/* XXX */ int)
ioflags2oflags((int)SCARG(uap, arg));
- return fcntl(p, &fa);
+ return fcntl(td, &fa);
case IBCS2_F_GETLK:
{
@@ -287,7 +288,7 @@ ibcs2_fcntl(p, uap)
SCARG(&fa, fd) = SCARG(uap, fd);
SCARG(&fa, cmd) = F_GETLK;
SCARG(&fa, arg) = (/* XXX */ int)flp;
- error = fcntl(p, &fa);
+ error = fcntl(td, &fa);
if (error)
return error;
cvt_flock2iflock(flp, &ifl);
@@ -308,7 +309,7 @@ ibcs2_fcntl(p, uap)
SCARG(&fa, cmd) = F_SETLK;
SCARG(&fa, arg) = (/* XXX */ int)flp;
- return fcntl(p, &fa);
+ return fcntl(td, &fa);
}
case IBCS2_F_SETLKW:
@@ -323,7 +324,7 @@ ibcs2_fcntl(p, uap)
SCARG(&fa, fd) = SCARG(uap, fd);
SCARG(&fa, cmd) = F_SETLKW;
SCARG(&fa, arg) = (/* XXX */ int)flp;
- return fcntl(p, &fa);
+ return fcntl(td, &fa);
}
}
return ENOSYS;
diff --git a/sys/i386/ibcs2/ibcs2_ioctl.c b/sys/i386/ibcs2/ibcs2_ioctl.c
index 4dfa80b..39fdc99 100644
--- a/sys/i386/ibcs2/ibcs2_ioctl.c
+++ b/sys/i386/ibcs2/ibcs2_ioctl.c
@@ -57,7 +57,7 @@ static void stio2stios __P((struct ibcs2_termio *, struct ibcs2_termios *));
int
-ibcs2_gtty(struct proc *p, struct ibcs2_gtty_args *args)
+ibcs2_gtty(struct thread *td, struct ibcs2_gtty_args *args)
{
struct ioctl_args ioctl_arg;
@@ -65,11 +65,11 @@ ibcs2_gtty(struct proc *p, struct ibcs2_gtty_args *args)
ioctl_arg.com = TIOCGETC;
ioctl_arg.data = (caddr_t)args->buf;
- return ioctl(p, &ioctl_arg);
+ return ioctl(td, &ioctl_arg);
}
int
-ibcs2_stty(struct proc *p, struct ibcs2_stty_args *args)
+ibcs2_stty(struct thread *td, struct ibcs2_stty_args *args)
{
struct ioctl_args ioctl_arg;
@@ -77,7 +77,7 @@ ibcs2_stty(struct proc *p, struct ibcs2_stty_args *args)
ioctl_arg.com = TIOCSETC;
ioctl_arg.data = (caddr_t)args->buf;
- return ioctl(p, &ioctl_arg);
+ return ioctl(td, &ioctl_arg);
}
@@ -336,10 +336,11 @@ stio2stios(t, ts)
}
int
-ibcs2_ioctl(p, uap)
- struct proc *p;
+ibcs2_ioctl(td, uap)
+ struct thread *td;
struct ibcs2_ioctl_args *uap;
{
+ struct proc *p = td->td_proc;
struct filedesc *fdp = p->p_fd;
struct file *fp;
int error;
@@ -365,7 +366,7 @@ ibcs2_ioctl(p, uap)
struct ibcs2_termios sts;
struct ibcs2_termio st;
- if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, p)) != 0)
+ if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, td)) != 0)
return error;
btios2stios (&bts, &sts);
@@ -401,7 +402,7 @@ ibcs2_ioctl(p, uap)
}
/* get full BSD termios so we don't lose information */
- if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, p)) != 0) {
+ if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, td)) != 0) {
DPRINTF(("ibcs2_ioctl(%d): TCSET ctl failed fd %d ",
p->p_pid, SCARG(uap, fd)));
return error;
@@ -416,7 +417,7 @@ ibcs2_ioctl(p, uap)
stios2btios(&sts, &bts);
return fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_TCSETA + TIOCSETA,
- (caddr_t)&bts, p);
+ (caddr_t)&bts, td);
}
case IBCS2_XCSETA:
@@ -432,7 +433,7 @@ ibcs2_ioctl(p, uap)
}
stios2btios (&sts, &bts);
return fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_XCSETA + TIOCSETA,
- (caddr_t)&bts, p);
+ (caddr_t)&bts, td);
}
case IBCS2_OXCSETA:
@@ -448,7 +449,7 @@ ibcs2_ioctl(p, uap)
}
stios2btios (&sts, &bts);
return fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_OXCSETA + TIOCSETA,
- (caddr_t)&bts, p);
+ (caddr_t)&bts, td);
}
case IBCS2_TCSBRK:
@@ -463,9 +464,9 @@ ibcs2_ioctl(p, uap)
DPRINTF(("ibcs2_ioctl(%d): TCXONC ", p->p_pid));
return ENOSYS;
case 2:
- return fo_ioctl(fp, TIOCSTOP, (caddr_t)0, p);
+ return fo_ioctl(fp, TIOCSTOP, (caddr_t)0, td);
case 3:
- return fo_ioctl(fp, TIOCSTART, (caddr_t)1, p);
+ return fo_ioctl(fp, TIOCSTART, (caddr_t)1, td);
default:
return EINVAL;
}
@@ -488,16 +489,16 @@ ibcs2_ioctl(p, uap)
default:
return EINVAL;
}
- return fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, p);
+ return fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, td);
}
case IBCS2_TIOCGWINSZ:
SCARG(uap, cmd) = TIOCGWINSZ;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_TIOCSWINSZ:
SCARG(uap, cmd) = TIOCSWINSZ;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_TIOCGPGRP:
PROC_LOCK(p);
@@ -512,7 +513,7 @@ ibcs2_ioctl(p, uap)
SCARG(&sa, pid) = 0;
SCARG(&sa, pgid) = (int)SCARG(uap, data);
- if ((error = setpgid(p, &sa)) != 0)
+ if ((error = setpgid(td, &sa)) != 0)
return error;
return 0;
}
@@ -548,96 +549,96 @@ ibcs2_ioctl(p, uap)
case IBCS2_KDGKBMODE: /* get keyboard translation mode */
SCARG(uap, cmd) = KDGKBMODE;
/* printf("ioctl KDGKBMODE = %x\n", SCARG(uap, cmd));*/
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDSKBMODE: /* set keyboard translation mode */
SCARG(uap, cmd) = KDSKBMODE;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDMKTONE: /* sound tone */
SCARG(uap, cmd) = KDMKTONE;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDGETMODE: /* get text/graphics mode */
SCARG(uap, cmd) = KDGETMODE;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDSETMODE: /* set text/graphics mode */
SCARG(uap, cmd) = KDSETMODE;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDSBORDER: /* set ega color border */
SCARG(uap, cmd) = KDSBORDER;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDGKBSTATE:
SCARG(uap, cmd) = KDGKBSTATE;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDSETRAD:
SCARG(uap, cmd) = KDSETRAD;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDENABIO: /* enable direct I/O to ports */
SCARG(uap, cmd) = KDENABIO;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDDISABIO: /* disable direct I/O to ports */
SCARG(uap, cmd) = KDDISABIO;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KIOCSOUND: /* start sound generation */
SCARG(uap, cmd) = KIOCSOUND;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDGKBTYPE: /* get keyboard type */
SCARG(uap, cmd) = KDGKBTYPE;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDGETLED: /* get keyboard LED status */
SCARG(uap, cmd) = KDGETLED;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_KDSETLED: /* set keyboard LED status */
SCARG(uap, cmd) = KDSETLED;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
/* Xenix keyboard and display ioctl's from sys/kd.h -- type 'k' */
case IBCS2_GETFKEY: /* Get function key */
SCARG(uap, cmd) = GETFKEY;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_SETFKEY: /* Set function key */
SCARG(uap, cmd) = SETFKEY;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_GIO_SCRNMAP: /* Get screen output map table */
SCARG(uap, cmd) = GIO_SCRNMAP;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_PIO_SCRNMAP: /* Set screen output map table */
SCARG(uap, cmd) = PIO_SCRNMAP;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_GIO_KEYMAP: /* Get keyboard map table */
SCARG(uap, cmd) = GIO_KEYMAP;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
case IBCS2_PIO_KEYMAP: /* Set keyboard map table */
SCARG(uap, cmd) = PIO_KEYMAP;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
/* socksys */
case IBCS2_SIOCSOCKSYS:
- return ibcs2_socksys(p, (struct ibcs2_socksys_args *)uap);
+ return ibcs2_socksys(td, (struct ibcs2_socksys_args *)uap);
case IBCS2_I_NREAD: /* STREAMS */
SCARG(uap, cmd) = FIONREAD;
- return ioctl(p, (struct ioctl_args *)uap);
+ return ioctl(td, (struct ioctl_args *)uap);
default:
DPRINTF(("ibcs2_ioctl(%d): unknown cmd 0x%lx ",
- p->p_pid, SCARG(uap, cmd)));
+ td->proc->p_pid, SCARG(uap, cmd)));
return ENOSYS;
}
return ENOSYS;
diff --git a/sys/i386/ibcs2/ibcs2_ipc.c b/sys/i386/ibcs2/ibcs2_ipc.c
index 2acf3d2..804f82d 100644
--- a/sys/i386/ibcs2/ibcs2_ipc.c
+++ b/sys/i386/ibcs2/ibcs2_ipc.c
@@ -102,14 +102,14 @@ struct msqid_ds *bp;
}
int
-ibcs2_msgsys(p, uap)
- struct proc *p;
+ibcs2_msgsys(td, uap)
+ struct thread *td;
struct ibcs2_msgsys_args *uap;
{
switch (SCARG(uap, which)) {
case 0: /* msgget */
SCARG(uap, which) = 1;
- return msgsys(p, (struct msgsys_args *)uap);
+ return msgsys(td, (struct msgsys_args *)uap);
case 1: { /* msgctl */
int error;
struct msgsys_args margs;
@@ -122,7 +122,7 @@ ibcs2_msgsys(p, uap)
SCARG(&margs, a3) = SCARG(uap, a3);
switch (SCARG(&margs, a3)) {
case IBCS2_IPC_STAT:
- error = msgsys(p, &margs);
+ error = msgsys(td, &margs);
if (!error)
cvt_msqid2imsqid(
(struct msqid_ds *)SCARG(&margs, a4),
@@ -132,18 +132,18 @@ ibcs2_msgsys(p, uap)
cvt_imsqid2msqid((struct ibcs2_msqid_ds *)SCARG(uap,
a4),
(struct msqid_ds *)SCARG(&margs, a4));
- return msgsys(p, &margs);
+ return msgsys(td, &margs);
case IBCS2_IPC_RMID:
- return msgsys(p, &margs);
+ return msgsys(td, &margs);
}
return EINVAL;
}
case 2: /* msgrcv */
SCARG(uap, which) = 3;
- return msgsys(p, (struct msgsys_args *)uap);
+ return msgsys(td, (struct msgsys_args *)uap);
case 3: /* msgsnd */
SCARG(uap, which) = 2;
- return msgsys(p, (struct msgsys_args *)uap);
+ return msgsys(td, (struct msgsys_args *)uap);
default:
return EINVAL;
}
@@ -233,8 +233,8 @@ struct semid_ds *bp;
}
int
-ibcs2_semsys(p, uap)
- struct proc *p;
+ibcs2_semsys(td, uap)
+ struct thread *td;
struct ibcs2_semsys_args *uap;
{
int error;
@@ -255,7 +255,7 @@ ibcs2_semsys(p, uap)
sup = stackgap_alloc(&sg, sizeof(union semun));
sup->buf = sp;
SCARG(uap, a5) = (int)sup;
- error = semsys(p, (struct semsys_args *)uap);
+ error = semsys(td, (struct semsys_args *)uap);
if (!error) {
SCARG(uap, a5) = (int)ssu.buf;
isp = stackgap_alloc(&sg, sizeof(*isp));
@@ -280,7 +280,7 @@ ibcs2_semsys(p, uap)
return error;
cvt_isemid2semid(isp, sp);
SCARG(uap, a5) = (int)sp;
- return semsys(p, (struct semsys_args *)uap);
+ return semsys(td, (struct semsys_args *)uap);
}
case IBCS2_SETVAL:
{
@@ -290,17 +290,17 @@ ibcs2_semsys(p, uap)
sp = stackgap_alloc(&sg, sizeof(*sp));
sp->val = (int) SCARG(uap, a5);
SCARG(uap, a5) = (int)sp;
- return semsys(p, (struct semsys_args *)uap);
+ return semsys(td, (struct semsys_args *)uap);
}
}
- return semsys(p, (struct semsys_args *)uap);
+ return semsys(td, (struct semsys_args *)uap);
case 1: /* semget */
- return semsys(p, (struct semsys_args *)uap);
+ return semsys(td, (struct semsys_args *)uap);
case 2: /* semop */
- return semsys(p, (struct semsys_args *)uap);
+ return semsys(td, (struct semsys_args *)uap);
}
return EINVAL;
}
@@ -345,15 +345,15 @@ struct shmid_ds *bp;
}
int
-ibcs2_shmsys(p, uap)
- struct proc *p;
+ibcs2_shmsys(td, uap)
+ struct thread *td;
struct ibcs2_shmsys_args *uap;
{
int error;
switch (SCARG(uap, which)) {
case 0: /* shmat */
- return shmsys(p, (struct shmsys_args *)uap);
+ return shmsys(td, (struct shmsys_args *)uap);
case 1: /* shmctl */
switch(SCARG(uap, a3)) {
@@ -366,7 +366,7 @@ ibcs2_shmsys(p, uap)
isp = (struct ibcs2_shmid_ds *)SCARG(uap, a4);
sp = stackgap_alloc(&sg, sizeof(*sp));
SCARG(uap, a4) = (int)sp;
- error = shmsys(p, (struct shmsys_args *)uap);
+ error = shmsys(td, (struct shmsys_args *)uap);
if (!error) {
SCARG(uap, a4) = (int)isp;
isp = stackgap_alloc(&sg, sizeof(*isp));
@@ -391,17 +391,17 @@ ibcs2_shmsys(p, uap)
return error;
cvt_ishmid2shmid(isp, sp);
SCARG(uap, a4) = (int)sp;
- return shmsys(p, (struct shmsys_args *)uap);
+ return shmsys(td, (struct shmsys_args *)uap);
}
}
- return shmsys(p, (struct shmsys_args *)uap);
+ return shmsys(td, (struct shmsys_args *)uap);
case 2: /* shmdt */
- return shmsys(p, (struct shmsys_args *)uap);
+ return shmsys(td, (struct shmsys_args *)uap);
case 3: /* shmget */
- return shmsys(p, (struct shmsys_args *)uap);
+ return shmsys(td, (struct shmsys_args *)uap);
}
return EINVAL;
}
diff --git a/sys/i386/ibcs2/ibcs2_isc.c b/sys/i386/ibcs2/ibcs2_isc.c
index 9c690c9..31ebd0a 100644
--- a/sys/i386/ibcs2/ibcs2_isc.c
+++ b/sys/i386/ibcs2/ibcs2_isc.c
@@ -45,9 +45,9 @@
extern struct sysent isc_sysent[];
int
-ibcs2_isc(struct proc *p, struct ibcs2_isc_args *uap)
+ibcs2_isc(struct thread *td, struct ibcs2_isc_args *uap)
{
- struct trapframe *tf = p->p_frame;
+ struct trapframe *tf = td->td_frame;
struct sysent *callp;
u_int code;
@@ -55,7 +55,7 @@ ibcs2_isc(struct proc *p, struct ibcs2_isc_args *uap)
callp = &isc_sysent[code];
if(code < IBCS2_ISC_MAXSYSCALL)
- return((*callp->sy_call)(p, (void *)uap));
+ return((*callp->sy_call)(td, (void *)uap));
else
return ENOSYS;
}
diff --git a/sys/i386/ibcs2/ibcs2_misc.c b/sys/i386/ibcs2/ibcs2_misc.c
index c2e28b9..bbe32eb 100644
--- a/sys/i386/ibcs2/ibcs2_misc.c
+++ b/sys/i386/ibcs2/ibcs2_misc.c
@@ -85,8 +85,8 @@
#include <i386/ibcs2/ibcs2_xenix.h>
int
-ibcs2_ulimit(p, uap)
- struct proc *p;
+ibcs2_ulimit(td, uap)
+ struct thread *td;
struct ibcs2_ulimit_args *uap;
{
#ifdef notyet
@@ -104,31 +104,31 @@ ibcs2_ulimit(p, uap)
switch (SCARG(uap, cmd)) {
case IBCS2_GETFSIZE:
- p->p_retval[0] = p->p_rlimit[RLIMIT_FSIZE].rlim_cur;
- if (p->p_retval[0] == -1) p->p_retval[0] = 0x7fffffff;
+ td->td_retval[0] = td->td_proc->p_rlimit[RLIMIT_FSIZE].rlim_cur;
+ if (td->td_retval[0] == -1) td->td_retval[0] = 0x7fffffff;
return 0;
case IBCS2_SETFSIZE: /* XXX - fix this */
#ifdef notyet
rl.rlim_cur = SCARG(uap, newlimit);
sra.resource = RLIMIT_FSIZE;
sra.rlp = &rl;
- error = setrlimit(p, &sra);
+ error = setrlimit(td, &sra);
if (!error)
- p->p_retval[0] = p->p_rlimit[RLIMIT_FSIZE].rlim_cur;
+ td->td_retval[0] = td->td_proc->p_rlimit[RLIMIT_FSIZE].rlim_cur;
else
DPRINTF(("failed "));
return error;
#else
- p->p_retval[0] = SCARG(uap, newlimit);
+ td->td_retval[0] = SCARG(uap, newlimit);
return 0;
#endif
case IBCS2_GETPSIZE:
mtx_assert(&Giant, MA_OWNED);
- p->p_retval[0] = p->p_rlimit[RLIMIT_RSS].rlim_cur; /* XXX */
+ td->td_retval[0] = td->td_proc->p_rlimit[RLIMIT_RSS].rlim_cur; /* XXX */
return 0;
case IBCS2_GETDTABLESIZE:
uap->cmd = IBCS2_SC_OPEN_MAX;
- return ibcs2_sysconf(p, (struct ibcs2_sysconf_args *)uap);
+ return ibcs2_sysconf(td, (struct ibcs2_sysconf_args *)uap);
default:
return ENOSYS;
}
@@ -137,13 +137,13 @@ ibcs2_ulimit(p, uap)
#define IBCS2_WSTOPPED 0177
#define IBCS2_STOPCODE(sig) ((sig) << 8 | IBCS2_WSTOPPED)
int
-ibcs2_wait(p, uap)
- struct proc *p;
+ibcs2_wait(td, uap)
+ struct thread *td;
struct ibcs2_wait_args *uap;
{
int error, status;
struct wait_args w4;
- struct trapframe *tf = p->p_frame;
+ struct trapframe *tf = td->td_frame;
SCARG(&w4, rusage) = NULL;
if ((tf->tf_eflags & (PSL_Z|PSL_PF|PSL_N|PSL_V))
@@ -158,7 +158,7 @@ ibcs2_wait(p, uap)
SCARG(&w4, status) = (int *)SCARG(uap, a1);
SCARG(&w4, options) = 0;
}
- if ((error = wait4(p, &w4)) != 0)
+ if ((error = wait4(td, &w4)) != 0)
return error;
if (SCARG(&w4, status)) { /* this is real iBCS brain-damage */
error = copyin((caddr_t)SCARG(&w4, status), (caddr_t)&status,
@@ -175,7 +175,7 @@ ibcs2_wait(p, uap)
/* else exit status -- identical */
/* record result/status */
- p->p_retval[1] = status;
+ td->td_retval[1] = status;
return copyout((caddr_t)&status, (caddr_t)SCARG(&w4, status),
sizeof(SCARG(&w4, status)));
}
@@ -184,45 +184,45 @@ ibcs2_wait(p, uap)
}
int
-ibcs2_execv(p, uap)
- struct proc *p;
+ibcs2_execv(td, uap)
+ struct thread *td;
struct ibcs2_execv_args *uap;
{
struct execve_args ea;
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
SCARG(&ea, fname) = SCARG(uap, path);
SCARG(&ea, argv) = SCARG(uap, argp);
SCARG(&ea, envv) = NULL;
- return execve(p, &ea);
+ return execve(td, &ea);
}
int
-ibcs2_execve(p, uap)
- struct proc *p;
+ibcs2_execve(td, uap)
+ struct thread *td;
struct ibcs2_execve_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- return execve(p, (struct execve_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ return execve(td, (struct execve_args *)uap);
}
int
-ibcs2_umount(p, uap)
- struct proc *p;
+ibcs2_umount(td, uap)
+ struct thread *td;
struct ibcs2_umount_args *uap;
{
struct unmount_args um;
SCARG(&um, path) = SCARG(uap, name);
SCARG(&um, flags) = 0;
- return unmount(p, &um);
+ return unmount(td, &um);
}
int
-ibcs2_mount(p, uap)
- struct proc *p;
+ibcs2_mount(td, uap)
+ struct thread *td;
struct ibcs2_mount_args *uap;
{
#ifdef notyet
@@ -279,7 +279,7 @@ ibcs2_mount(p, uap)
if (error = copyout(&na, SCARG(uap, data), sizeof na))
return (error);
}
- return (mount(p, uap));
+ return (mount(td, uap));
#else
return EINVAL;
#endif
@@ -294,8 +294,8 @@ ibcs2_mount(p, uap)
*/
int
-ibcs2_getdents(p, uap)
- struct proc *p;
+ibcs2_getdents(td, uap)
+ struct thread *td;
register struct ibcs2_getdents_args *uap;
{
register struct vnode *vp;
@@ -314,7 +314,7 @@ ibcs2_getdents(p, uap)
#define BSD_DIRENT(cp) ((struct dirent *)(cp))
#define IBCS2_RECLEN(reclen) (reclen + sizeof(u_short))
- if ((error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) != 0)
+ if ((error = getvnode(td->td_proc->p_fd, SCARG(uap, fd), &fp)) != 0)
return (error);
if ((fp->f_flag & FREAD) == 0)
return (EBADF);
@@ -327,7 +327,7 @@ ibcs2_getdents(p, uap)
buflen = max(DIRBLKSIZ, SCARG(uap, nbytes));
buflen = min(buflen, MAXBSIZE);
buf = malloc(buflen, M_TEMP, M_WAITOK);
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
again:
aiov.iov_base = buf;
aiov.iov_len = buflen;
@@ -335,7 +335,7 @@ again:
auio.uio_iovcnt = 1;
auio.uio_rw = UIO_READ;
auio.uio_segflg = UIO_SYSSPACE;
- auio.uio_procp = p;
+ auio.uio_td = td;
auio.uio_resid = buflen;
auio.uio_offset = off;
@@ -425,18 +425,18 @@ again:
goto again;
fp->f_offset = off; /* update the vnode offset */
eof:
- p->p_retval[0] = SCARG(uap, nbytes) - resid;
+ td->td_retval[0] = SCARG(uap, nbytes) - resid;
out:
if (cookies)
free(cookies, M_TEMP);
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
free(buf, M_TEMP);
return (error);
}
int
-ibcs2_read(p, uap)
- struct proc *p;
+ibcs2_read(td, uap)
+ struct thread *td;
struct ibcs2_read_args *uap;
{
register struct vnode *vp;
@@ -456,9 +456,9 @@ ibcs2_read(p, uap)
u_long *cookies = NULL, *cookiep;
int ncookies;
- if ((error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) != 0) {
+ if ((error = getvnode(td->td_proc->p_fd, SCARG(uap, fd), &fp)) != 0) {
if (error == EINVAL)
- return read(p, (struct read_args *)uap);
+ return read(td, (struct read_args *)uap);
else
return error;
}
@@ -466,7 +466,7 @@ ibcs2_read(p, uap)
return (EBADF);
vp = (struct vnode *)fp->f_data;
if (vp->v_type != VDIR)
- return read(p, (struct read_args *)uap);
+ return read(td, (struct read_args *)uap);
DPRINTF(("ibcs2_read: read directory\n"));
@@ -474,7 +474,7 @@ ibcs2_read(p, uap)
buflen = max(DIRBLKSIZ, SCARG(uap, nbytes));
buflen = min(buflen, MAXBSIZE);
buf = malloc(buflen, M_TEMP, M_WAITOK);
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
again:
aiov.iov_base = buf;
aiov.iov_len = buflen;
@@ -482,7 +482,7 @@ again:
auio.uio_iovcnt = 1;
auio.uio_rw = UIO_READ;
auio.uio_segflg = UIO_SYSSPACE;
- auio.uio_procp = p;
+ auio.uio_td = td;
auio.uio_resid = buflen;
auio.uio_offset = off;
@@ -576,40 +576,40 @@ again:
goto again;
fp->f_offset = off; /* update the vnode offset */
eof:
- p->p_retval[0] = SCARG(uap, nbytes) - resid;
+ td->td_retval[0] = SCARG(uap, nbytes) - resid;
out:
if (cookies)
free(cookies, M_TEMP);
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
free(buf, M_TEMP);
return (error);
}
int
-ibcs2_mknod(p, uap)
- struct proc *p;
+ibcs2_mknod(td, uap)
+ struct thread *td;
struct ibcs2_mknod_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTCREAT(p, &sg, SCARG(uap, path));
+ CHECKALTCREAT(td, &sg, SCARG(uap, path));
if (S_ISFIFO(SCARG(uap, mode))) {
struct mkfifo_args ap;
SCARG(&ap, path) = SCARG(uap, path);
SCARG(&ap, mode) = SCARG(uap, mode);
- return mkfifo(p, &ap);
+ return mkfifo(td, &ap);
} else {
struct mknod_args ap;
SCARG(&ap, path) = SCARG(uap, path);
SCARG(&ap, mode) = SCARG(uap, mode);
SCARG(&ap, dev) = SCARG(uap, dev);
- return mknod(p, &ap);
+ return mknod(td, &ap);
}
}
int
-ibcs2_getgroups(p, uap)
- struct proc *p;
+ibcs2_getgroups(td, uap)
+ struct thread *td;
struct ibcs2_getgroups_args *uap;
{
int error, i;
@@ -625,23 +625,23 @@ ibcs2_getgroups(p, uap)
iset = stackgap_alloc(&sg, SCARG(uap, gidsetsize) *
sizeof(ibcs2_gid_t));
}
- if ((error = getgroups(p, &sa)) != 0)
+ if ((error = getgroups(td, &sa)) != 0)
return error;
if (SCARG(uap, gidsetsize) == 0)
return 0;
- for (i = 0, gp = SCARG(&sa, gidset); i < p->p_retval[0]; i++)
+ for (i = 0, gp = SCARG(&sa, gidset); i < td->td_retval[0]; i++)
iset[i] = (ibcs2_gid_t)*gp++;
- if (p->p_retval[0] && (error = copyout((caddr_t)iset,
+ if (td->td_retval[0] && (error = copyout((caddr_t)iset,
(caddr_t)SCARG(uap, gidset),
- sizeof(ibcs2_gid_t) * p->p_retval[0])))
+ sizeof(ibcs2_gid_t) * td->td_retval[0])))
return error;
return 0;
}
int
-ibcs2_setgroups(p, uap)
- struct proc *p;
+ibcs2_setgroups(td, uap)
+ struct thread *td;
struct ibcs2_setgroups_args *uap;
{
int error, i;
@@ -663,40 +663,40 @@ ibcs2_setgroups(p, uap)
}
for (i = 0, gp = SCARG(&sa, gidset); i < SCARG(&sa, gidsetsize); i++)
*gp++ = (gid_t)iset[i];
- return setgroups(p, &sa);
+ return setgroups(td, &sa);
}
int
-ibcs2_setuid(p, uap)
- struct proc *p;
+ibcs2_setuid(td, uap)
+ struct thread *td;
struct ibcs2_setuid_args *uap;
{
struct setuid_args sa;
SCARG(&sa, uid) = (uid_t)SCARG(uap, uid);
- return setuid(p, &sa);
+ return setuid(td, &sa);
}
int
-ibcs2_setgid(p, uap)
- struct proc *p;
+ibcs2_setgid(td, uap)
+ struct thread *td;
struct ibcs2_setgid_args *uap;
{
struct setgid_args sa;
SCARG(&sa, gid) = (gid_t)SCARG(uap, gid);
- return setgid(p, &sa);
+ return setgid(td, &sa);
}
int
-ibcs2_time(p, uap)
- struct proc *p;
+ibcs2_time(td, uap)
+ struct thread *td;
struct ibcs2_time_args *uap;
{
struct timeval tv;
microtime(&tv);
- p->p_retval[0] = tv.tv_sec;
+ td->td_retval[0] = tv.tv_sec;
if (SCARG(uap, tp))
return copyout((caddr_t)&tv.tv_sec, (caddr_t)SCARG(uap, tp),
sizeof(ibcs2_time_t));
@@ -705,26 +705,26 @@ ibcs2_time(p, uap)
}
int
-ibcs2_pathconf(p, uap)
- struct proc *p;
+ibcs2_pathconf(td, uap)
+ struct thread *td;
struct ibcs2_pathconf_args *uap;
{
SCARG(uap, name)++; /* iBCS2 _PC_* defines are offset by one */
- return pathconf(p, (struct pathconf_args *)uap);
+ return pathconf(td, (struct pathconf_args *)uap);
}
int
-ibcs2_fpathconf(p, uap)
- struct proc *p;
+ibcs2_fpathconf(td, uap)
+ struct thread *td;
struct ibcs2_fpathconf_args *uap;
{
SCARG(uap, name)++; /* iBCS2 _PC_* defines are offset by one */
- return fpathconf(p, (struct fpathconf_args *)uap);
+ return fpathconf(td, (struct fpathconf_args *)uap);
}
int
-ibcs2_sysconf(p, uap)
- struct proc *p;
+ibcs2_sysconf(td, uap)
+ struct thread *td;
struct ibcs2_sysconf_args *uap;
{
int mib[2], value, len, error;
@@ -742,14 +742,14 @@ ibcs2_sysconf(p, uap)
SCARG(&ga, which) = RLIMIT_NPROC;
SCARG(&ga, rlp) = stackgap_alloc(&sg, sizeof(struct rlimit *));
- if ((error = getrlimit(p, &ga)) != 0)
+ if ((error = getrlimit(td, &ga)) != 0)
return error;
- p->p_retval[0] = SCARG(&ga, rlp)->rlim_cur;
+ td->td_retval[0] = SCARG(&ga, rlp)->rlim_cur;
return 0;
}
case IBCS2_SC_CLK_TCK:
- p->p_retval[0] = hz;
+ td->td_retval[0] = hz;
return 0;
case IBCS2_SC_NGROUPS_MAX:
@@ -762,9 +762,9 @@ ibcs2_sysconf(p, uap)
SCARG(&ga, which) = RLIMIT_NOFILE;
SCARG(&ga, rlp) = stackgap_alloc(&sg, sizeof(struct rlimit *));
- if ((error = getrlimit(p, &ga)) != 0)
+ if ((error = getrlimit(td, &ga)) != 0)
return error;
- p->p_retval[0] = SCARG(&ga, rlp)->rlim_cur;
+ td->td_retval[0] = SCARG(&ga, rlp)->rlim_cur;
return 0;
}
@@ -781,11 +781,11 @@ ibcs2_sysconf(p, uap)
break;
case IBCS2_SC_PASS_MAX:
- p->p_retval[0] = 128; /* XXX - should we create PASS_MAX ? */
+ td->td_retval[0] = 128; /* XXX - should we create PASS_MAX ? */
return 0;
case IBCS2_SC_XOPEN_VERSION:
- p->p_retval[0] = 2; /* XXX: What should that be? */
+ td->td_retval[0] = 2; /* XXX: What should that be? */
return 0;
default:
@@ -800,15 +800,15 @@ ibcs2_sysconf(p, uap)
SCARG(&sa, oldlenp) = &len;
SCARG(&sa, new) = NULL;
SCARG(&sa, newlen) = 0;
- if ((error = __sysctl(p, &sa)) != 0)
+ if ((error = __sysctl(td, &sa)) != 0)
return error;
- p->p_retval[0] = value;
+ td->td_retval[0] = value;
return 0;
}
int
-ibcs2_alarm(p, uap)
- struct proc *p;
+ibcs2_alarm(td, uap)
+ struct thread *td;
struct ibcs2_alarm_args *uap;
{
int error;
@@ -825,18 +825,18 @@ ibcs2_alarm(p, uap)
SCARG(&sa, which) = ITIMER_REAL;
SCARG(&sa, itv) = itp;
SCARG(&sa, oitv) = oitp;
- error = setitimer(p, &sa);
+ error = setitimer(td, &sa);
if (error)
return error;
if (oitp->it_value.tv_usec)
oitp->it_value.tv_sec++;
- p->p_retval[0] = oitp->it_value.tv_sec;
+ td->td_retval[0] = oitp->it_value.tv_sec;
return 0;
}
int
-ibcs2_times(p, uap)
- struct proc *p;
+ibcs2_times(td, uap)
+ struct thread *td;
struct ibcs2_times_args *uap;
{
int error;
@@ -849,29 +849,29 @@ ibcs2_times(p, uap)
SCARG(&ga, who) = RUSAGE_SELF;
SCARG(&ga, rusage) = ru;
- error = getrusage(p, &ga);
+ error = getrusage(td, &ga);
if (error)
return error;
tms.tms_utime = CONVTCK(ru->ru_utime);
tms.tms_stime = CONVTCK(ru->ru_stime);
SCARG(&ga, who) = RUSAGE_CHILDREN;
- error = getrusage(p, &ga);
+ error = getrusage(td, &ga);
if (error)
return error;
tms.tms_cutime = CONVTCK(ru->ru_utime);
tms.tms_cstime = CONVTCK(ru->ru_stime);
microtime(&t);
- p->p_retval[0] = CONVTCK(t);
+ td->td_retval[0] = CONVTCK(t);
return copyout((caddr_t)&tms, (caddr_t)SCARG(uap, tp),
sizeof(struct tms));
}
int
-ibcs2_stime(p, uap)
- struct proc *p;
+ibcs2_stime(td, uap)
+ struct thread *td;
struct ibcs2_stime_args *uap;
{
int error;
@@ -884,14 +884,14 @@ ibcs2_stime(p, uap)
&(SCARG(&sa, tv)->tv_sec), sizeof(long))) != 0)
return error;
SCARG(&sa, tv)->tv_usec = 0;
- if ((error = settimeofday(p, &sa)) != 0)
+ if ((error = settimeofday(td, &sa)) != 0)
return EPERM;
return 0;
}
int
-ibcs2_utime(p, uap)
- struct proc *p;
+ibcs2_utime(td, uap)
+ struct thread *td;
struct ibcs2_utime_args *uap;
{
int error;
@@ -899,7 +899,7 @@ ibcs2_utime(p, uap)
struct timeval *tp;
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
SCARG(&sa, path) = SCARG(uap, path);
if (SCARG(uap, buf)) {
struct ibcs2_utimbuf ubuf;
@@ -917,12 +917,12 @@ ibcs2_utime(p, uap)
tp->tv_usec = 0;
} else
SCARG(&sa, tptr) = NULL;
- return utimes(p, &sa);
+ return utimes(td, &sa);
}
int
-ibcs2_nice(p, uap)
- struct proc *p;
+ibcs2_nice(td, uap)
+ struct thread *td;
struct ibcs2_nice_args *uap;
{
int error;
@@ -930,10 +930,10 @@ ibcs2_nice(p, uap)
SCARG(&sa, which) = PRIO_PROCESS;
SCARG(&sa, who) = 0;
- SCARG(&sa, prio) = p->p_nice + SCARG(uap, incr);
- if ((error = setpriority(p, &sa)) != 0)
+ SCARG(&sa, prio) = td->td_ksegrp->kg_nice + SCARG(uap, incr);
+ if ((error = setpriority(td, &sa)) != 0)
return EPERM;
- p->p_retval[0] = p->p_nice;
+ td->td_retval[0] = td->td_ksegrp->kg_nice;
return 0;
}
@@ -942,14 +942,15 @@ ibcs2_nice(p, uap)
*/
int
-ibcs2_pgrpsys(p, uap)
- struct proc *p;
+ibcs2_pgrpsys(td, uap)
+ struct thread *td;
struct ibcs2_pgrpsys_args *uap;
{
+ struct proc *p = td->td_proc;
switch (SCARG(uap, type)) {
case 0: /* getpgrp */
PROC_LOCK(p);
- p->p_retval[0] = p->p_pgrp->pg_id;
+ td->td_retval[0] = p->p_pgrp->pg_id;
PROC_UNLOCK(p);
return 0;
@@ -959,9 +960,9 @@ ibcs2_pgrpsys(p, uap)
SCARG(&sa, pid) = 0;
SCARG(&sa, pgid) = 0;
- setpgid(p, &sa);
+ setpgid(td, &sa);
PROC_LOCK(p);
- p->p_retval[0] = p->p_pgrp->pg_id;
+ td->td_retval[0] = p->p_pgrp->pg_id;
PROC_UNLOCK(p);
return 0;
}
@@ -972,11 +973,11 @@ ibcs2_pgrpsys(p, uap)
SCARG(&sa, pid) = SCARG(uap, pid);
SCARG(&sa, pgid) = SCARG(uap, pgid);
- return setpgid(p, &sa);
+ return setpgid(td, &sa);
}
case 3: /* setsid */
- return setsid(p, NULL);
+ return setsid(td, NULL);
default:
return EINVAL;
@@ -988,8 +989,8 @@ ibcs2_pgrpsys(p, uap)
*/
int
-ibcs2_plock(p, uap)
- struct proc *p;
+ibcs2_plock(td, uap)
+ struct thread *td;
struct ibcs2_plock_args *uap;
{
int error;
@@ -999,7 +1000,7 @@ ibcs2_plock(p, uap)
#define IBCS2_DATALOCK 4
- if ((error = suser(p)) != 0)
+ if ((error = suser_td(td)) != 0)
return EPERM;
switch(SCARG(uap, cmd)) {
case IBCS2_UNLOCK:
@@ -1012,8 +1013,8 @@ ibcs2_plock(p, uap)
}
int
-ibcs2_uadmin(p, uap)
- struct proc *p;
+ibcs2_uadmin(td, uap)
+ struct thread *td;
struct ibcs2_uadmin_args *uap;
{
#define SCO_A_REBOOT 1
@@ -1034,7 +1035,7 @@ ibcs2_uadmin(p, uap)
#define SCO_AD_GETBMAJ 0
#define SCO_AD_GETCMAJ 1
- if (suser(p))
+ if (suser_td(td))
return EPERM;
switch(SCARG(uap, cmd)) {
@@ -1046,11 +1047,11 @@ ibcs2_uadmin(p, uap)
case SCO_AD_PWRDOWN:
case SCO_AD_PWRNAP:
r.opt = RB_HALT;
- reboot(p, &r);
+ reboot(td, &r);
case SCO_AD_BOOT:
case SCO_AD_IBOOT:
r.opt = RB_AUTOBOOT;
- reboot(p, &r);
+ reboot(td, &r);
}
return EINVAL;
case SCO_A_REMOUNT:
@@ -1064,8 +1065,8 @@ ibcs2_uadmin(p, uap)
}
int
-ibcs2_sysfs(p, uap)
- struct proc *p;
+ibcs2_sysfs(td, uap)
+ struct thread *td;
struct ibcs2_sysfs_args *uap;
{
#define IBCS2_GETFSIND 1
@@ -1082,102 +1083,102 @@ ibcs2_sysfs(p, uap)
}
int
-ibcs2_unlink(p, uap)
- struct proc *p;
+ibcs2_unlink(td, uap)
+ struct thread *td;
struct ibcs2_unlink_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- return unlink(p, (struct unlink_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ return unlink(td, (struct unlink_args *)uap);
}
int
-ibcs2_chdir(p, uap)
- struct proc *p;
+ibcs2_chdir(td, uap)
+ struct thread *td;
struct ibcs2_chdir_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- return chdir(p, (struct chdir_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ return chdir(td, (struct chdir_args *)uap);
}
int
-ibcs2_chmod(p, uap)
- struct proc *p;
+ibcs2_chmod(td, uap)
+ struct thread *td;
struct ibcs2_chmod_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- return chmod(p, (struct chmod_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ return chmod(td, (struct chmod_args *)uap);
}
int
-ibcs2_chown(p, uap)
- struct proc *p;
+ibcs2_chown(td, uap)
+ struct thread *td;
struct ibcs2_chown_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- return chown(p, (struct chown_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ return chown(td, (struct chown_args *)uap);
}
int
-ibcs2_rmdir(p, uap)
- struct proc *p;
+ibcs2_rmdir(td, uap)
+ struct thread *td;
struct ibcs2_rmdir_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- return rmdir(p, (struct rmdir_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ return rmdir(td, (struct rmdir_args *)uap);
}
int
-ibcs2_mkdir(p, uap)
- struct proc *p;
+ibcs2_mkdir(td, uap)
+ struct thread *td;
struct ibcs2_mkdir_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTCREAT(p, &sg, SCARG(uap, path));
- return mkdir(p, (struct mkdir_args *)uap);
+ CHECKALTCREAT(td, &sg, SCARG(uap, path));
+ return mkdir(td, (struct mkdir_args *)uap);
}
int
-ibcs2_symlink(p, uap)
- struct proc *p;
+ibcs2_symlink(td, uap)
+ struct thread *td;
struct ibcs2_symlink_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- CHECKALTCREAT(p, &sg, SCARG(uap, link));
- return symlink(p, (struct symlink_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ CHECKALTCREAT(td, &sg, SCARG(uap, link));
+ return symlink(td, (struct symlink_args *)uap);
}
int
-ibcs2_rename(p, uap)
- struct proc *p;
+ibcs2_rename(td, uap)
+ struct thread *td;
struct ibcs2_rename_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, from));
- CHECKALTCREAT(p, &sg, SCARG(uap, to));
- return rename(p, (struct rename_args *)uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, from));
+ CHECKALTCREAT(td, &sg, SCARG(uap, to));
+ return rename(td, (struct rename_args *)uap);
}
int
-ibcs2_readlink(p, uap)
- struct proc *p;
+ibcs2_readlink(td, uap)
+ struct thread *td;
struct ibcs2_readlink_args *uap;
{
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- return readlink(p, (struct readlink_args *) uap);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ return readlink(td, (struct readlink_args *) uap);
}
diff --git a/sys/i386/ibcs2/ibcs2_msg.c b/sys/i386/ibcs2/ibcs2_msg.c
index 6c36cf8..413859a 100644
--- a/sys/i386/ibcs2/ibcs2_msg.c
+++ b/sys/i386/ibcs2/ibcs2_msg.c
@@ -41,16 +41,16 @@
int
-ibcs2_getmsg(p, uap)
- struct proc *p;
+ibcs2_getmsg(td, uap)
+ struct thread *td;
struct ibcs2_getmsg_args *uap;
{
return 0; /* fake */
}
int
-ibcs2_putmsg(p, uap)
- struct proc *p;
+ibcs2_putmsg(td, uap)
+ struct thread *td;
struct ibcs2_putmsg_args *uap;
{
return 0; /* fake */
@@ -58,8 +58,8 @@ ibcs2_putmsg(p, uap)
int
-ibcs2_poll(p, uap)
- struct proc *p;
+ibcs2_poll(td, uap)
+ struct thread *td;
struct ibcs2_poll_args *uap;
{
int error, i;
@@ -107,12 +107,12 @@ ibcs2_poll(p, uap)
FD_SET(conv.fd, writefds);
FD_SET(conv.fd, exceptfds);
}
- if ((error = select(p, &tmp_select)) != 0)
+ if ((error = select(td, &tmp_select)) != 0)
return error;
- if (p->p_retval[0] == 0)
+ if (td->td_retval[0] == 0)
return 0;
- p->p_retval[0] = 0;
- for (p->p_retval[0] = 0, i = 0; i < uap->nfds; i++) {
+ td->td_retval[0] = 0;
+ for (td->td_retval[0] = 0, i = 0; i < uap->nfds; i++) {
copyin(uap->fds + i*sizeof(struct ibcs2_poll),
&conv, sizeof(conv));
conv.revents = 0;
@@ -127,7 +127,7 @@ ibcs2_poll(p, uap)
if (FD_ISSET(conv.fd, exceptfds))
conv.revents |= IBCS2_POLLERR;
if (conv.revents)
- ++p->p_retval[0];
+ ++td->td_retval[0];
}
if ((error = copyout(&conv,
uap->fds + i*sizeof(struct ibcs2_poll),
diff --git a/sys/i386/ibcs2/ibcs2_other.c b/sys/i386/ibcs2/ibcs2_other.c
index 4f90159..2881f42 100644
--- a/sys/i386/ibcs2/ibcs2_other.c
+++ b/sys/i386/ibcs2/ibcs2_other.c
@@ -45,14 +45,14 @@
#define IBCS2_SECURE_SETLUID 2
int
-ibcs2_secure(struct proc *p, struct ibcs2_secure_args *uap)
+ibcs2_secure(struct thread *td, struct ibcs2_secure_args *uap)
{
switch (uap->cmd) {
case IBCS2_SECURE_GETLUID: /* get login uid */
- PROC_LOCK(p);
- p->p_retval[0] = p->p_ucred->cr_uid;
- PROC_UNLOCK(p);
+ PROC_LOCK(td->td_proc);
+ td->td_retval[0] = td->td_proc->p_ucred->cr_uid;
+ PROC_UNLOCK(td->td_proc);
return 0;
case IBCS2_SECURE_SETLUID: /* set login uid */
@@ -66,7 +66,7 @@ ibcs2_secure(struct proc *p, struct ibcs2_secure_args *uap)
}
int
-ibcs2_lseek(struct proc *p, register struct ibcs2_lseek_args *uap)
+ibcs2_lseek(struct thread *td, register struct ibcs2_lseek_args *uap)
{
struct lseek_args largs;
int error;
@@ -74,7 +74,7 @@ ibcs2_lseek(struct proc *p, register struct ibcs2_lseek_args *uap)
largs.fd = uap->fd;
largs.offset = uap->offset;
largs.whence = uap->whence;
- error = lseek(p, &largs);
+ error = lseek(td, &largs);
return (error);
}
@@ -83,7 +83,7 @@ ibcs2_lseek(struct proc *p, register struct ibcs2_lseek_args *uap)
#include <sys/un.h>
int
-spx_open(struct proc *p, void *uap)
+spx_open(struct thread *td, void *uap)
{
struct socket_args sock;
struct connect_args conn;
@@ -96,7 +96,7 @@ spx_open(struct proc *p, void *uap)
sock.domain = AF_UNIX;
sock.type = SOCK_STREAM;
sock.protocol = 0;
- error = socket(p, &sock);
+ error = socket(td, &sock);
if (error)
return error;
@@ -108,17 +108,17 @@ spx_open(struct proc *p, void *uap)
strlen(Xaddr->sun_path) + 1;
copyout("/tmp/.X11-unix/X0", Xaddr->sun_path, 18);
- conn.s = fd = p->p_retval[0];
+ conn.s = fd = td->td_retval[0];
conn.name = (caddr_t)Xaddr;
conn.namelen = sizeof(struct sockaddr_un);
- error = connect(p, &conn);
+ error = connect(td, &conn);
if (error) {
struct close_args cl;
cl.fd = fd;
- close(p, &cl);
+ close(td, &cl);
return error;
}
- p->p_retval[0] = fd;
+ td->td_retval[0] = fd;
return 0;
}
#endif /* SPX_HACK */
diff --git a/sys/i386/ibcs2/ibcs2_proto.h b/sys/i386/ibcs2/ibcs2_proto.h
index a91c96d..c7ac3df 100644
--- a/sys/i386/ibcs2/ibcs2_proto.h
+++ b/sys/i386/ibcs2/ibcs2_proto.h
@@ -15,6 +15,8 @@
struct proc;
+struct thread;
+
#define PAD_(t) (sizeof(register_t) <= sizeof(t) ? \
0 : sizeof(register_t) - sizeof(t))
@@ -273,62 +275,62 @@ struct ibcs2_readlink_args {
struct ibcs2_isc_args {
register_t dummy;
};
-int ibcs2_read __P((struct proc *, struct ibcs2_read_args *));
-int ibcs2_open __P((struct proc *, struct ibcs2_open_args *));
-int ibcs2_wait __P((struct proc *, struct ibcs2_wait_args *));
-int ibcs2_creat __P((struct proc *, struct ibcs2_creat_args *));
-int ibcs2_unlink __P((struct proc *, struct ibcs2_unlink_args *));
-int ibcs2_execv __P((struct proc *, struct ibcs2_execv_args *));
-int ibcs2_chdir __P((struct proc *, struct ibcs2_chdir_args *));
-int ibcs2_time __P((struct proc *, struct ibcs2_time_args *));
-int ibcs2_mknod __P((struct proc *, struct ibcs2_mknod_args *));
-int ibcs2_chmod __P((struct proc *, struct ibcs2_chmod_args *));
-int ibcs2_chown __P((struct proc *, struct ibcs2_chown_args *));
-int ibcs2_stat __P((struct proc *, struct ibcs2_stat_args *));
-int ibcs2_lseek __P((struct proc *, struct ibcs2_lseek_args *));
-int ibcs2_mount __P((struct proc *, struct ibcs2_mount_args *));
-int ibcs2_umount __P((struct proc *, struct ibcs2_umount_args *));
-int ibcs2_setuid __P((struct proc *, struct ibcs2_setuid_args *));
-int ibcs2_stime __P((struct proc *, struct ibcs2_stime_args *));
-int ibcs2_alarm __P((struct proc *, struct ibcs2_alarm_args *));
-int ibcs2_fstat __P((struct proc *, struct ibcs2_fstat_args *));
-int ibcs2_pause __P((struct proc *, struct ibcs2_pause_args *));
-int ibcs2_utime __P((struct proc *, struct ibcs2_utime_args *));
-int ibcs2_stty __P((struct proc *, struct ibcs2_stty_args *));
-int ibcs2_gtty __P((struct proc *, struct ibcs2_gtty_args *));
-int ibcs2_access __P((struct proc *, struct ibcs2_access_args *));
-int ibcs2_nice __P((struct proc *, struct ibcs2_nice_args *));
-int ibcs2_statfs __P((struct proc *, struct ibcs2_statfs_args *));
-int ibcs2_kill __P((struct proc *, struct ibcs2_kill_args *));
-int ibcs2_fstatfs __P((struct proc *, struct ibcs2_fstatfs_args *));
-int ibcs2_pgrpsys __P((struct proc *, struct ibcs2_pgrpsys_args *));
-int ibcs2_xenix __P((struct proc *, struct ibcs2_xenix_args *));
-int ibcs2_times __P((struct proc *, struct ibcs2_times_args *));
-int ibcs2_plock __P((struct proc *, struct ibcs2_plock_args *));
-int ibcs2_setgid __P((struct proc *, struct ibcs2_setgid_args *));
-int ibcs2_sigsys __P((struct proc *, struct ibcs2_sigsys_args *));
-int ibcs2_msgsys __P((struct proc *, struct ibcs2_msgsys_args *));
-int ibcs2_sysi86 __P((struct proc *, struct ibcs2_sysi86_args *));
-int ibcs2_shmsys __P((struct proc *, struct ibcs2_shmsys_args *));
-int ibcs2_semsys __P((struct proc *, struct ibcs2_semsys_args *));
-int ibcs2_ioctl __P((struct proc *, struct ibcs2_ioctl_args *));
-int ibcs2_uadmin __P((struct proc *, struct ibcs2_uadmin_args *));
-int ibcs2_utssys __P((struct proc *, struct ibcs2_utssys_args *));
-int ibcs2_execve __P((struct proc *, struct ibcs2_execve_args *));
-int ibcs2_fcntl __P((struct proc *, struct ibcs2_fcntl_args *));
-int ibcs2_ulimit __P((struct proc *, struct ibcs2_ulimit_args *));
-int ibcs2_rmdir __P((struct proc *, struct ibcs2_rmdir_args *));
-int ibcs2_mkdir __P((struct proc *, struct ibcs2_mkdir_args *));
-int ibcs2_getdents __P((struct proc *, struct ibcs2_getdents_args *));
-int ibcs2_sysfs __P((struct proc *, struct ibcs2_sysfs_args *));
-int ibcs2_getmsg __P((struct proc *, struct ibcs2_getmsg_args *));
-int ibcs2_putmsg __P((struct proc *, struct ibcs2_putmsg_args *));
-int ibcs2_poll __P((struct proc *, struct ibcs2_poll_args *));
-int ibcs2_secure __P((struct proc *, struct ibcs2_secure_args *));
-int ibcs2_symlink __P((struct proc *, struct ibcs2_symlink_args *));
-int ibcs2_lstat __P((struct proc *, struct ibcs2_lstat_args *));
-int ibcs2_readlink __P((struct proc *, struct ibcs2_readlink_args *));
-int ibcs2_isc __P((struct proc *, struct ibcs2_isc_args *));
+int ibcs2_read __P((struct thread *, struct ibcs2_read_args *));
+int ibcs2_open __P((struct thread *, struct ibcs2_open_args *));
+int ibcs2_wait __P((struct thread *, struct ibcs2_wait_args *));
+int ibcs2_creat __P((struct thread *, struct ibcs2_creat_args *));
+int ibcs2_unlink __P((struct thread *, struct ibcs2_unlink_args *));
+int ibcs2_execv __P((struct thread *, struct ibcs2_execv_args *));
+int ibcs2_chdir __P((struct thread *, struct ibcs2_chdir_args *));
+int ibcs2_time __P((struct thread *, struct ibcs2_time_args *));
+int ibcs2_mknod __P((struct thread *, struct ibcs2_mknod_args *));
+int ibcs2_chmod __P((struct thread *, struct ibcs2_chmod_args *));
+int ibcs2_chown __P((struct thread *, struct ibcs2_chown_args *));
+int ibcs2_stat __P((struct thread *, struct ibcs2_stat_args *));
+int ibcs2_lseek __P((struct thread *, struct ibcs2_lseek_args *));
+int ibcs2_mount __P((struct thread *, struct ibcs2_mount_args *));
+int ibcs2_umount __P((struct thread *, struct ibcs2_umount_args *));
+int ibcs2_setuid __P((struct thread *, struct ibcs2_setuid_args *));
+int ibcs2_stime __P((struct thread *, struct ibcs2_stime_args *));
+int ibcs2_alarm __P((struct thread *, struct ibcs2_alarm_args *));
+int ibcs2_fstat __P((struct thread *, struct ibcs2_fstat_args *));
+int ibcs2_pause __P((struct thread *, struct ibcs2_pause_args *));
+int ibcs2_utime __P((struct thread *, struct ibcs2_utime_args *));
+int ibcs2_stty __P((struct thread *, struct ibcs2_stty_args *));
+int ibcs2_gtty __P((struct thread *, struct ibcs2_gtty_args *));
+int ibcs2_access __P((struct thread *, struct ibcs2_access_args *));
+int ibcs2_nice __P((struct thread *, struct ibcs2_nice_args *));
+int ibcs2_statfs __P((struct thread *, struct ibcs2_statfs_args *));
+int ibcs2_kill __P((struct thread *, struct ibcs2_kill_args *));
+int ibcs2_fstatfs __P((struct thread *, struct ibcs2_fstatfs_args *));
+int ibcs2_pgrpsys __P((struct thread *, struct ibcs2_pgrpsys_args *));
+int ibcs2_xenix __P((struct thread *, struct ibcs2_xenix_args *));
+int ibcs2_times __P((struct thread *, struct ibcs2_times_args *));
+int ibcs2_plock __P((struct thread *, struct ibcs2_plock_args *));
+int ibcs2_setgid __P((struct thread *, struct ibcs2_setgid_args *));
+int ibcs2_sigsys __P((struct thread *, struct ibcs2_sigsys_args *));
+int ibcs2_msgsys __P((struct thread *, struct ibcs2_msgsys_args *));
+int ibcs2_sysi86 __P((struct thread *, struct ibcs2_sysi86_args *));
+int ibcs2_shmsys __P((struct thread *, struct ibcs2_shmsys_args *));
+int ibcs2_semsys __P((struct thread *, struct ibcs2_semsys_args *));
+int ibcs2_ioctl __P((struct thread *, struct ibcs2_ioctl_args *));
+int ibcs2_uadmin __P((struct thread *, struct ibcs2_uadmin_args *));
+int ibcs2_utssys __P((struct thread *, struct ibcs2_utssys_args *));
+int ibcs2_execve __P((struct thread *, struct ibcs2_execve_args *));
+int ibcs2_fcntl __P((struct thread *, struct ibcs2_fcntl_args *));
+int ibcs2_ulimit __P((struct thread *, struct ibcs2_ulimit_args *));
+int ibcs2_rmdir __P((struct thread *, struct ibcs2_rmdir_args *));
+int ibcs2_mkdir __P((struct thread *, struct ibcs2_mkdir_args *));
+int ibcs2_getdents __P((struct thread *, struct ibcs2_getdents_args *));
+int ibcs2_sysfs __P((struct thread *, struct ibcs2_sysfs_args *));
+int ibcs2_getmsg __P((struct thread *, struct ibcs2_getmsg_args *));
+int ibcs2_putmsg __P((struct thread *, struct ibcs2_putmsg_args *));
+int ibcs2_poll __P((struct thread *, struct ibcs2_poll_args *));
+int ibcs2_secure __P((struct thread *, struct ibcs2_secure_args *));
+int ibcs2_symlink __P((struct thread *, struct ibcs2_symlink_args *));
+int ibcs2_lstat __P((struct thread *, struct ibcs2_lstat_args *));
+int ibcs2_readlink __P((struct thread *, struct ibcs2_readlink_args *));
+int ibcs2_isc __P((struct thread *, struct ibcs2_isc_args *));
#ifdef COMPAT_43
diff --git a/sys/i386/ibcs2/ibcs2_signal.c b/sys/i386/ibcs2/ibcs2_signal.c
index 6049142..197c295 100644
--- a/sys/i386/ibcs2/ibcs2_signal.c
+++ b/sys/i386/ibcs2/ibcs2_signal.c
@@ -188,8 +188,8 @@ bsd_to_ibcs2_sigaction(bsa, isa)
}
int
-ibcs2_sigaction(p, uap)
- register struct proc *p;
+ibcs2_sigaction(td, uap)
+ register struct thread *td;
struct ibcs2_sigaction_args *uap;
{
struct ibcs2_sigaction *nisa, *oisa, tmpisa;
@@ -221,7 +221,7 @@ ibcs2_sigaction(p, uap)
SCARG(&sa, act) = nbsa;
SCARG(&sa, oact) = obsa;
- if ((error = sigaction(p, &sa)) != 0)
+ if ((error = sigaction(td, &sa)) != 0)
return error;
if (oisa != NULL) {
@@ -236,10 +236,11 @@ ibcs2_sigaction(p, uap)
}
int
-ibcs2_sigsys(p, uap)
- register struct proc *p;
+ibcs2_sigsys(td, uap)
+ register struct thread *td;
struct ibcs2_sigsys_args *uap;
{
+ struct proc *p = td->td_proc;
struct sigaction sa;
int signum = ibcs2_to_bsd_sig[_SIG_IDX(IBCS2_SIGNO(SCARG(uap, sig)))];
int error;
@@ -248,7 +249,7 @@ ibcs2_sigsys(p, uap)
if (signum <= 0 || signum >= IBCS2_NSIG) {
if (IBCS2_SIGCALL(SCARG(uap, sig)) == IBCS2_SIGNAL_MASK ||
IBCS2_SIGCALL(SCARG(uap, sig)) == IBCS2_SIGSET_MASK)
- p->p_retval[0] = (int)IBCS2_SIG_ERR;
+ td->td_retval[0] = (int)IBCS2_SIG_ERR;
return EINVAL;
}
@@ -275,7 +276,7 @@ ibcs2_sigsys(p, uap)
SCARG(&sa, how) = SIG_BLOCK;
SCARG(&sa, set) = &mask;
SCARG(&sa, oset) = NULL;
- return sigprocmask(p, &sa);
+ return sigprocmask(td, &sa);
}
case IBCS2_SIGNAL_MASK:
@@ -305,19 +306,19 @@ ibcs2_sigsys(p, uap)
if (signum != SIGALRM)
sa.sa_flags |= SA_RESTART;
#endif
- p->p_retval[0] = (int)IBCS2_SIG_ERR; /* init error return */
+ td->td_retval[0] = (int)IBCS2_SIG_ERR; /* init error return */
/* perform native sigaction() */
if ((error = copyout(&sa, nbsa, sizeof(sa))) != 0)
return error;
- if ((error = sigaction(p, &sa_args)) != 0) {
+ if ((error = sigaction(td, &sa_args)) != 0) {
DPRINTF(("signal: sigaction failed: %d\n",
error));
return error;
}
if ((error = copyin(obsa, &sa, sizeof(sa))) != 0)
return error;
- p->p_retval[0] = (int)sa.sa_handler;
+ td->td_retval[0] = (int)sa.sa_handler;
/* special sigset() check */
if(IBCS2_SIGCALL(SCARG(uap, sig)) == IBCS2_SIGSET_MASK) {
@@ -325,7 +326,7 @@ ibcs2_sigsys(p, uap)
/* check to make sure signal is not blocked */
if(sigismember(&p->p_sigmask, signum)) {
/* return SIG_HOLD and unblock signal*/
- p->p_retval[0] = (int)IBCS2_SIG_HOLD;
+ td->td_retval[0] = (int)IBCS2_SIG_HOLD;
SIGDELSET(p->p_sigmask, signum);
}
PROC_UNLOCK(p);
@@ -344,7 +345,7 @@ ibcs2_sigsys(p, uap)
SCARG(&sa, how) = SIG_UNBLOCK;
SCARG(&sa, set) = &mask;
SCARG(&sa, oset) = NULL;
- return sigprocmask(p, &sa);
+ return sigprocmask(td, &sa);
}
case IBCS2_SIGIGNORE_MASK:
@@ -362,7 +363,7 @@ ibcs2_sigsys(p, uap)
sa.sa_flags = 0;
if ((error = copyout(&sa, bsa, sizeof(sa))) != 0)
return error;
- if ((error = sigaction(p, &sa_args)) != 0) {
+ if ((error = sigaction(td, &sa_args)) != 0) {
DPRINTF(("sigignore: sigaction failed\n"));
return error;
}
@@ -379,7 +380,7 @@ ibcs2_sigsys(p, uap)
PROC_UNLOCK(p);
SIGDELSET(mask, signum);
SCARG(&sa, sigmask) = &mask;
- return sigsuspend(p, &sa);
+ return sigsuspend(td, &sa);
}
default:
@@ -388,10 +389,11 @@ ibcs2_sigsys(p, uap)
}
int
-ibcs2_sigprocmask(p, uap)
- register struct proc *p;
+ibcs2_sigprocmask(td, uap)
+ register struct thread *td;
struct ibcs2_sigprocmask_args *uap;
{
+ struct proc *p = td->td_proc;
ibcs2_sigset_t iss;
sigset_t bss;
int error = 0;
@@ -442,10 +444,11 @@ ibcs2_sigprocmask(p, uap)
}
int
-ibcs2_sigpending(p, uap)
- register struct proc *p;
+ibcs2_sigpending(td, uap)
+ register struct thread *td;
struct ibcs2_sigpending_args *uap;
{
+ struct proc *p = td->td_proc;
sigset_t bss;
ibcs2_sigset_t iss;
@@ -459,8 +462,8 @@ ibcs2_sigpending(p, uap)
}
int
-ibcs2_sigsuspend(p, uap)
- register struct proc *p;
+ibcs2_sigsuspend(td, uap)
+ register struct thread *td;
struct ibcs2_sigsuspend_args *uap;
{
ibcs2_sigset_t sss;
@@ -473,32 +476,33 @@ ibcs2_sigsuspend(p, uap)
ibcs2_to_bsd_sigset(&sss, &bss);
SCARG(&sa, sigmask) = &bss;
- return sigsuspend(p, &sa);
+ return sigsuspend(td, &sa);
}
int
-ibcs2_pause(p, uap)
- register struct proc *p;
+ibcs2_pause(td, uap)
+ register struct thread *td;
struct ibcs2_pause_args *uap;
{
+ struct proc *p = td->td_proc;
sigset_t mask;
struct sigsuspend_args sa;
PROC_LOCK(p);
- mask = p->p_sigmask;
+ mask = td->td_proc->p_sigmask;
PROC_UNLOCK(p);
SCARG(&sa, sigmask) = &mask;
- return sigsuspend(p, &sa);
+ return sigsuspend(td, &sa);
}
int
-ibcs2_kill(p, uap)
- register struct proc *p;
+ibcs2_kill(td, uap)
+ register struct thread *td;
struct ibcs2_kill_args *uap;
{
struct kill_args ka;
SCARG(&ka, pid) = SCARG(uap, pid);
SCARG(&ka, signum) = ibcs2_to_bsd_sig[_SIG_IDX(SCARG(uap, signo))];
- return kill(p, &ka);
+ return kill(td, &ka);
}
diff --git a/sys/i386/ibcs2/ibcs2_socksys.c b/sys/i386/ibcs2/ibcs2_socksys.c
index 16d964e..533b5c9 100644
--- a/sys/i386/ibcs2/ibcs2_socksys.c
+++ b/sys/i386/ibcs2/ibcs2_socksys.c
@@ -21,6 +21,8 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#include <sys/param.h>
@@ -44,9 +46,9 @@ struct setipdomainname_args {
};
/* Local prototypes */
-static int ibcs2_getipdomainname __P((struct proc *,
+static int ibcs2_getipdomainname __P((struct thread *,
struct getipdomainname_args *));
-static int ibcs2_setipdomainname __P((struct proc *,
+static int ibcs2_setipdomainname __P((struct thread *,
struct setipdomainname_args *));
/*
@@ -54,8 +56,8 @@ static int ibcs2_setipdomainname __P((struct proc *,
*/
int
-ibcs2_socksys(p, uap)
- register struct proc *p;
+ibcs2_socksys(td, uap)
+ register struct thread *td;
register struct ibcs2_socksys_args *uap;
{
int error;
@@ -77,55 +79,55 @@ ibcs2_socksys(p, uap)
passargs = (void *)(realargs + 1);
switch (realargs[0]) {
case SOCKSYS_ACCEPT:
- return accept(p, passargs);
+ return accept(td, passargs);
case SOCKSYS_BIND:
- return bind(p, passargs);
+ return bind(td, passargs);
case SOCKSYS_CONNECT:
- return connect(p, passargs);
+ return connect(td, passargs);
case SOCKSYS_GETPEERNAME:
- return getpeername(p, passargs);
+ return getpeername(td, passargs);
case SOCKSYS_GETSOCKNAME:
- return getsockname(p, passargs);
+ return getsockname(td, passargs);
case SOCKSYS_GETSOCKOPT:
- return getsockopt(p, passargs);
+ return getsockopt(td, passargs);
case SOCKSYS_LISTEN:
- return listen(p, passargs);
+ return listen(td, passargs);
case SOCKSYS_RECV:
realargs[5] = realargs[6] = 0;
/* FALLTHROUGH */
case SOCKSYS_RECVFROM:
- return recvfrom(p, passargs);
+ return recvfrom(td, passargs);
case SOCKSYS_SEND:
realargs[5] = realargs[6] = 0;
/* FALLTHROUGH */
case SOCKSYS_SENDTO:
- return sendto(p, passargs);
+ return sendto(td, passargs);
case SOCKSYS_SETSOCKOPT:
- return setsockopt(p, passargs);
+ return setsockopt(td, passargs);
case SOCKSYS_SHUTDOWN:
- return shutdown(p, passargs);
+ return shutdown(td, passargs);
case SOCKSYS_SOCKET:
- return socket(p, passargs);
+ return socket(td, passargs);
case SOCKSYS_SELECT:
- return select(p, passargs);
+ return select(td, passargs);
case SOCKSYS_GETIPDOMAIN:
- return ibcs2_getipdomainname(p, passargs);
+ return ibcs2_getipdomainname(td, passargs);
case SOCKSYS_SETIPDOMAIN:
- return ibcs2_setipdomainname(p, passargs);
+ return ibcs2_setipdomainname(td, passargs);
case SOCKSYS_ADJTIME:
- return adjtime(p, passargs);
+ return adjtime(td, passargs);
case SOCKSYS_SETREUID:
- return setreuid(p, passargs);
+ return setreuid(td, passargs);
case SOCKSYS_SETREGID:
- return setregid(p, passargs);
+ return setregid(td, passargs);
case SOCKSYS_GETTIME:
- return gettimeofday(p, passargs);
+ return gettimeofday(td, passargs);
case SOCKSYS_SETTIME:
- return settimeofday(p, passargs);
+ return settimeofday(td, passargs);
case SOCKSYS_GETITIMER:
- return getitimer(p, passargs);
+ return getitimer(td, passargs);
case SOCKSYS_SETITIMER:
- return setitimer(p, passargs);
+ return setitimer(td, passargs);
default:
printf("socksys unknown %08x %08x %08x %08x %08x %08x %08x\n",
@@ -138,8 +140,8 @@ ibcs2_socksys(p, uap)
/* ARGSUSED */
static int
-ibcs2_getipdomainname(p, uap)
- struct proc *p;
+ibcs2_getipdomainname(td, uap)
+ struct thread *td;
struct getipdomainname_args *uap;
{
char hname[MAXHOSTNAMELEN], *dptr;
@@ -162,14 +164,14 @@ ibcs2_getipdomainname(p, uap)
/* ARGSUSED */
static int
-ibcs2_setipdomainname(p, uap)
- struct proc *p;
+ibcs2_setipdomainname(td, uap)
+ struct thread *td;
struct setipdomainname_args *uap;
{
char hname[MAXHOSTNAMELEN], *ptr;
int error, sctl[2], hlen;
- if ((error = suser(p)))
+ if ((error = suser_td(td)))
return (error);
/* W/out a hostname a domain-name is nonsense */
@@ -200,5 +202,5 @@ ibcs2_setipdomainname(p, uap)
sctl[0] = CTL_KERN;
sctl[1] = KERN_HOSTNAME;
hlen = strlen(hname) + 1;
- return (kernel_sysctl(p, sctl, 2, 0, 0, hname, hlen, 0));
+ return (kernel_sysctl(td, sctl, 2, 0, 0, hname, hlen, 0));
}
diff --git a/sys/i386/ibcs2/ibcs2_socksys.h b/sys/i386/ibcs2/ibcs2_socksys.h
index f6b212e..f0c72bd 100644
--- a/sys/i386/ibcs2/ibcs2_socksys.h
+++ b/sys/i386/ibcs2/ibcs2_socksys.h
@@ -21,6 +21,8 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#ifndef _I386_IBCS2_IBCS2_SOCKSYS_H_
@@ -121,6 +123,6 @@ struct ibcs2_socksys_args {
caddr_t argsp;
};
-int ibcs2_socksys __P((struct proc *, struct ibcs2_socksys_args *));
+int ibcs2_socksys __P((struct thread *, struct ibcs2_socksys_args *));
#endif /* !_I386_IBCS2_IBCS2_SOCKSYS_H_ */
diff --git a/sys/i386/ibcs2/ibcs2_stat.c b/sys/i386/ibcs2/ibcs2_stat.c
index 824118f..fd39853 100644
--- a/sys/i386/ibcs2/ibcs2_stat.c
+++ b/sys/i386/ibcs2/ibcs2_stat.c
@@ -95,8 +95,8 @@ cvt_statfs(sp, buf, len)
}
int
-ibcs2_statfs(p, uap)
- struct proc *p;
+ibcs2_statfs(td, uap)
+ struct thread *td;
struct ibcs2_statfs_args *uap;
{
register struct mount *mp;
@@ -105,23 +105,23 @@ ibcs2_statfs(p, uap)
struct nameidata nd;
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
- NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), p);
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
+ NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, SCARG(uap, path), td);
if ((error = namei(&nd)) != 0)
return (error);
NDFREE(&nd, NDF_ONLY_PNBUF);
mp = nd.ni_vp->v_mount;
sp = &mp->mnt_stat;
vrele(nd.ni_vp);
- if ((error = VFS_STATFS(mp, sp, p)) != 0)
+ if ((error = VFS_STATFS(mp, sp, td)) != 0)
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
return cvt_statfs(sp, (caddr_t)SCARG(uap, buf), SCARG(uap, len));
}
int
-ibcs2_fstatfs(p, uap)
- struct proc *p;
+ibcs2_fstatfs(td, uap)
+ struct thread *td;
struct ibcs2_fstatfs_args *uap;
{
struct file *fp;
@@ -129,19 +129,19 @@ ibcs2_fstatfs(p, uap)
register struct statfs *sp;
int error;
- if ((error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) != 0)
+ if ((error = getvnode(td->td_proc->p_fd, SCARG(uap, fd), &fp)) != 0)
return (error);
mp = ((struct vnode *)fp->f_data)->v_mount;
sp = &mp->mnt_stat;
- if ((error = VFS_STATFS(mp, sp, p)) != 0)
+ if ((error = VFS_STATFS(mp, sp, td)) != 0)
return (error);
sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK;
return cvt_statfs(sp, (caddr_t)SCARG(uap, buf), SCARG(uap, len));
}
int
-ibcs2_stat(p, uap)
- struct proc *p;
+ibcs2_stat(td, uap)
+ struct thread *td;
struct ibcs2_stat_args *uap;
{
struct stat st;
@@ -150,11 +150,11 @@ ibcs2_stat(p, uap)
int error;
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
SCARG(&cup, path) = SCARG(uap, path);
SCARG(&cup, ub) = stackgap_alloc(&sg, sizeof(st));
- if ((error = stat(p, &cup)) != 0)
+ if ((error = stat(td, &cup)) != 0)
return error;
if ((error = copyin(SCARG(&cup, ub), &st, sizeof(st))) != 0)
@@ -165,8 +165,8 @@ ibcs2_stat(p, uap)
}
int
-ibcs2_lstat(p, uap)
- struct proc *p;
+ibcs2_lstat(td, uap)
+ struct thread *td;
struct ibcs2_lstat_args *uap;
{
struct stat st;
@@ -175,11 +175,11 @@ ibcs2_lstat(p, uap)
int error;
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
SCARG(&cup, path) = SCARG(uap, path);
SCARG(&cup, ub) = stackgap_alloc(&sg, sizeof(st));
- if ((error = lstat(p, &cup)) != 0)
+ if ((error = lstat(td, &cup)) != 0)
return error;
if ((error = copyin(SCARG(&cup, ub), &st, sizeof(st))) != 0)
@@ -190,8 +190,8 @@ ibcs2_lstat(p, uap)
}
int
-ibcs2_fstat(p, uap)
- struct proc *p;
+ibcs2_fstat(td, uap)
+ struct thread *td;
struct ibcs2_fstat_args *uap;
{
struct stat st;
@@ -203,7 +203,7 @@ ibcs2_fstat(p, uap)
SCARG(&cup, fd) = SCARG(uap, fd);
SCARG(&cup, sb) = stackgap_alloc(&sg, sizeof(st));
- if ((error = fstat(p, &cup)) != 0)
+ if ((error = fstat(td, &cup)) != 0)
return error;
if ((error = copyin(SCARG(&cup, sb), &st, sizeof(st))) != 0)
@@ -214,8 +214,8 @@ ibcs2_fstat(p, uap)
}
int
-ibcs2_utssys(p, uap)
- struct proc *p;
+ibcs2_utssys(td, uap)
+ struct thread *td;
struct ibcs2_utssys_args *uap;
{
switch (SCARG(uap, flag)) {
diff --git a/sys/i386/ibcs2/ibcs2_sysi86.c b/sys/i386/ibcs2/ibcs2_sysi86.c
index bcc758b..ae5215f 100644
--- a/sys/i386/ibcs2/ibcs2_sysi86.c
+++ b/sys/i386/ibcs2/ibcs2_sysi86.c
@@ -26,7 +26,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * ibcs2_sysi86.c,v 1.1 1994/10/14 08:53:11 sos Exp
+ * $FreeBSD$
*/
#include <sys/param.h>
@@ -51,7 +51,7 @@
extern int hw_float;
int
-ibcs2_sysi86(struct proc *p, struct ibcs2_sysi86_args *args)
+ibcs2_sysi86(struct thread *td, struct ibcs2_sysi86_args *args)
{
switch (SCARG(args, cmd)) {
case SI86_FPHW: { /* Floating Point information */
@@ -73,16 +73,16 @@ ibcs2_sysi86(struct proc *p, struct ibcs2_sysi86_args *args)
int name[2];
int error;
- if ((error = suser(p)))
+ if ((error = suser_td(td)))
return (error);
name[0] = CTL_KERN;
name[1] = KERN_HOSTNAME;
- return (userland_sysctl(p, name, 2, 0, 0, 0,
+ return (userland_sysctl(td, name, 2, 0, 0, 0,
SCARG(args, arg), 7, 0));
}
case SI86_MEM: /* size of physical memory */
- p->p_retval[0] = ctob(physmem);
+ td->td_retval[0] = ctob(physmem);
return 0;
default:
diff --git a/sys/i386/ibcs2/ibcs2_util.c b/sys/i386/ibcs2/ibcs2_util.c
index bef94fd3..8b0720a 100644
--- a/sys/i386/ibcs2/ibcs2_util.c
+++ b/sys/i386/ibcs2/ibcs2_util.c
@@ -50,8 +50,8 @@ const char ibcs2_emul_path[] = "/compat/ibcs2";
* be in exists.
*/
int
-ibcs2_emul_find(p, sgp, prefix, path, pbuf, cflag)
- struct proc *p;
+ibcs2_emul_find(td, sgp, prefix, path, pbuf, cflag)
+ struct thread *td;
caddr_t *sgp; /* Pointer to stackgap memory */
const char *prefix;
char *path;
@@ -104,7 +104,7 @@ ibcs2_emul_find(p, sgp, prefix, path, pbuf, cflag)
for (cp = &ptr[len] - 1; *cp != '/'; cp--);
*cp = '\0';
- NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, p);
+ NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, td);
if ((error = namei(&nd)) != 0) {
free(buf, M_TEMP);
@@ -114,7 +114,7 @@ ibcs2_emul_find(p, sgp, prefix, path, pbuf, cflag)
*cp = '/';
}
else {
- NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, p);
+ NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, td);
if ((error = namei(&nd)) != 0) {
free(buf, M_TEMP);
@@ -130,7 +130,7 @@ ibcs2_emul_find(p, sgp, prefix, path, pbuf, cflag)
* to the emulation root directory. This is expensive :-(
*/
NDINIT(&ndroot, LOOKUP, FOLLOW, UIO_SYSSPACE, ibcs2_emul_path,
- p);
+ td);
if ((error = namei(&ndroot)) != 0) {
/* Cannot happen! */
@@ -140,11 +140,11 @@ ibcs2_emul_find(p, sgp, prefix, path, pbuf, cflag)
return error;
}
- if ((error = VOP_GETATTR(nd.ni_vp, &vat, p->p_ucred, p)) != 0) {
+ if ((error = VOP_GETATTR(nd.ni_vp, &vat, td->td_proc->p_ucred, td)) != 0) {
goto done;
}
- if ((error = VOP_GETATTR(ndroot.ni_vp, &vatroot, p->p_ucred, p))
+ if ((error = VOP_GETATTR(ndroot.ni_vp, &vatroot, td->td_proc->p_ucred, td))
!= 0) {
goto done;
}
diff --git a/sys/i386/ibcs2/ibcs2_util.h b/sys/i386/ibcs2/ibcs2_util.h
index 4ef390f..93382c4 100644
--- a/sys/i386/ibcs2/ibcs2_util.h
+++ b/sys/i386/ibcs2/ibcs2_util.h
@@ -29,6 +29,8 @@
*
* from: svr4_util.h,v 1.5 1994/11/18 02:54:31 christos Exp
* from: linux_util.h,v 1.2 1995/03/05 23:23:50 fvdl Exp
+ *
+ * $FreeBSD$
*/
/*
@@ -60,7 +62,7 @@ static __inline void *stackgap_alloc(caddr_t *, size_t);
static __inline caddr_t
stackgap_init()
{
-#define szsigcode (*(curproc->p_sysent->sv_szsigcode))
+#define szsigcode (*(curthread->td_proc->p_sysent->sv_szsigcode))
return (caddr_t)(PS_STRINGS - szsigcode - SPARE_USRSPACE);
}
@@ -82,17 +84,17 @@ stackgap_alloc(sgp, sz)
extern const char ibcs2_emul_path[];
-int ibcs2_emul_find __P((struct proc *, caddr_t *, const char *, char *,
+int ibcs2_emul_find __P((struct thread *, caddr_t *, const char *, char *,
char **, int));
#define CHECKALTEXIST(p, sgp, path) \
- ibcs2_emul_find(p, sgp, ibcs2_emul_path, path, &(path), 0)
+ ibcs2_emul_find(td, sgp, ibcs2_emul_path, path, &(path), 0)
#define CHECKALTCREAT(p, sgp, path) \
- ibcs2_emul_find(p, sgp, ibcs2_emul_path, path, &(path), 1)
+ ibcs2_emul_find(td, sgp, ibcs2_emul_path, path, &(path), 1)
#ifdef SPX_HACK
-int spx_open __P((struct proc *p, void *uap));
+int spx_open __P((struct thread *td, void *uap));
#endif
#endif /* !_IBCS2_UTIL_H_ */
diff --git a/sys/i386/ibcs2/ibcs2_xenix.c b/sys/i386/ibcs2/ibcs2_xenix.c
index b11275c2..2f30195 100644
--- a/sys/i386/ibcs2/ibcs2_xenix.c
+++ b/sys/i386/ibcs2/ibcs2_xenix.c
@@ -53,9 +53,9 @@
extern struct sysent xenix_sysent[];
int
-ibcs2_xenix(struct proc *p, struct ibcs2_xenix_args *uap)
+ibcs2_xenix(struct thread *td, struct ibcs2_xenix_args *uap)
{
- struct trapframe *tf = p->p_frame;
+ struct trapframe *tf = td->td_frame;
struct sysent *callp;
u_int code;
@@ -63,14 +63,14 @@ ibcs2_xenix(struct proc *p, struct ibcs2_xenix_args *uap)
callp = &xenix_sysent[code];
if(code < IBCS2_XENIX_MAXSYSCALL)
- return((*callp->sy_call)(p, (void *)uap));
+ return((*callp->sy_call)(td, (void *)uap));
else
return ENOSYS;
}
int
-xenix_rdchk(p, uap)
- struct proc *p;
+xenix_rdchk(td, uap)
+ struct thread *td;
struct xenix_rdchk_args *uap;
{
int error;
@@ -81,15 +81,15 @@ xenix_rdchk(p, uap)
SCARG(&sa, fd) = SCARG(uap, fd);
SCARG(&sa, com) = FIONREAD;
SCARG(&sa, data) = stackgap_alloc(&sg, sizeof(int));
- if ((error = ioctl(p, &sa)) != 0)
+ if ((error = ioctl(td, &sa)) != 0)
return error;
- p->p_retval[0] = (*((int*)SCARG(&sa, data))) ? 1 : 0;
+ td->td_retval[0] = (*((int*)SCARG(&sa, data))) ? 1 : 0;
return 0;
}
int
-xenix_chsize(p, uap)
- struct proc *p;
+xenix_chsize(td, uap)
+ struct thread *td;
struct xenix_chsize_args *uap;
{
struct ftruncate_args sa;
@@ -98,13 +98,13 @@ xenix_chsize(p, uap)
SCARG(&sa, fd) = SCARG(uap, fd);
SCARG(&sa, pad) = 0;
SCARG(&sa, length) = SCARG(uap, size);
- return ftruncate(p, &sa);
+ return ftruncate(td, &sa);
}
int
-xenix_ftime(p, uap)
- struct proc *p;
+xenix_ftime(td, uap)
+ struct thread *td;
struct xenix_ftime_args *uap;
{
struct timeval tv;
@@ -127,7 +127,7 @@ xenix_ftime(p, uap)
}
int
-xenix_nap(struct proc *p, struct xenix_nap_args *uap)
+xenix_nap(struct thread *td, struct xenix_nap_args *uap)
{
long period;
@@ -140,7 +140,7 @@ xenix_nap(struct proc *p, struct xenix_nap_args *uap)
}
int
-xenix_utsname(struct proc *p, struct xenix_utsname_args *uap)
+xenix_utsname(struct thread *td, struct xenix_utsname_args *uap)
{
struct ibcs2_sco_utsname {
char sysname[9];
@@ -183,26 +183,26 @@ xenix_utsname(struct proc *p, struct xenix_utsname_args *uap)
}
int
-xenix_scoinfo(struct proc *p, struct xenix_scoinfo_args *uap)
+xenix_scoinfo(struct thread *td, struct xenix_scoinfo_args *uap)
{
/* scoinfo (not documented) */
- p->p_retval[0] = 0;
+ td->td_retval[0] = 0;
return 0;
}
int
-xenix_eaccess(struct proc *p, struct xenix_eaccess_args *uap)
+xenix_eaccess(struct thread *td, struct xenix_eaccess_args *uap)
{
- struct ucred *cred = p->p_ucred;
+ struct ucred *cred = td->td_proc->p_ucred;
struct vnode *vp;
struct nameidata nd;
int error, flags;
caddr_t sg = stackgap_init();
- CHECKALTEXIST(p, &sg, SCARG(uap, path));
+ CHECKALTEXIST(td, &sg, SCARG(uap, path));
NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF, UIO_USERSPACE,
- SCARG(uap, path), p);
+ SCARG(uap, path), td);
if ((error = namei(&nd)) != 0)
return error;
vp = nd.ni_vp;
@@ -217,7 +217,7 @@ xenix_eaccess(struct proc *p, struct xenix_eaccess_args *uap)
if (SCARG(uap, flags) & IBCS2_X_OK)
flags |= VEXEC;
if ((flags & VWRITE) == 0 || (error = vn_writechk(vp)) == 0)
- error = VOP_ACCESS(vp, flags, cred, p);
+ error = VOP_ACCESS(vp, flags, cred, td);
}
NDFREE(&nd, NDF_ONLY_PNBUF);
vput(vp);
diff --git a/sys/i386/ibcs2/ibcs2_xenix.h b/sys/i386/ibcs2/ibcs2_xenix.h
index 3d487ee..07e827f 100644
--- a/sys/i386/ibcs2/ibcs2_xenix.h
+++ b/sys/i386/ibcs2/ibcs2_xenix.h
@@ -15,6 +15,8 @@
struct proc;
+struct thread;
+
#define PAD_(t) (sizeof(register_t) <= sizeof(t) ? \
0 : sizeof(register_t) - sizeof(t))
@@ -80,23 +82,23 @@ struct ibcs2_rename_args {
struct xenix_utsname_args {
long addr; char addr_[PAD_(long)];
};
-int xenix_rdchk __P((struct proc *, struct xenix_rdchk_args *));
-int xenix_chsize __P((struct proc *, struct xenix_chsize_args *));
-int xenix_ftime __P((struct proc *, struct xenix_ftime_args *));
-int xenix_nap __P((struct proc *, struct xenix_nap_args *));
-int xenix_scoinfo __P((struct proc *, struct xenix_scoinfo_args *));
-int xenix_eaccess __P((struct proc *, struct xenix_eaccess_args *));
-int ibcs2_sigaction __P((struct proc *, struct ibcs2_sigaction_args *));
-int ibcs2_sigprocmask __P((struct proc *, struct ibcs2_sigprocmask_args *));
-int ibcs2_sigpending __P((struct proc *, struct ibcs2_sigpending_args *));
-int ibcs2_sigsuspend __P((struct proc *, struct ibcs2_sigsuspend_args *));
-int ibcs2_getgroups __P((struct proc *, struct ibcs2_getgroups_args *));
-int ibcs2_setgroups __P((struct proc *, struct ibcs2_setgroups_args *));
-int ibcs2_sysconf __P((struct proc *, struct ibcs2_sysconf_args *));
-int ibcs2_pathconf __P((struct proc *, struct ibcs2_pathconf_args *));
-int ibcs2_fpathconf __P((struct proc *, struct ibcs2_fpathconf_args *));
-int ibcs2_rename __P((struct proc *, struct ibcs2_rename_args *));
-int xenix_utsname __P((struct proc *, struct xenix_utsname_args *));
+int xenix_rdchk __P((struct thread *, struct xenix_rdchk_args *));
+int xenix_chsize __P((struct thread *, struct xenix_chsize_args *));
+int xenix_ftime __P((struct thread *, struct xenix_ftime_args *));
+int xenix_nap __P((struct thread *, struct xenix_nap_args *));
+int xenix_scoinfo __P((struct thread *, struct xenix_scoinfo_args *));
+int xenix_eaccess __P((struct thread *, struct xenix_eaccess_args *));
+int ibcs2_sigaction __P((struct thread *, struct ibcs2_sigaction_args *));
+int ibcs2_sigprocmask __P((struct thread *, struct ibcs2_sigprocmask_args *));
+int ibcs2_sigpending __P((struct thread *, struct ibcs2_sigpending_args *));
+int ibcs2_sigsuspend __P((struct thread *, struct ibcs2_sigsuspend_args *));
+int ibcs2_getgroups __P((struct thread *, struct ibcs2_getgroups_args *));
+int ibcs2_setgroups __P((struct thread *, struct ibcs2_setgroups_args *));
+int ibcs2_sysconf __P((struct thread *, struct ibcs2_sysconf_args *));
+int ibcs2_pathconf __P((struct thread *, struct ibcs2_pathconf_args *));
+int ibcs2_fpathconf __P((struct thread *, struct ibcs2_fpathconf_args *));
+int ibcs2_rename __P((struct thread *, struct ibcs2_rename_args *));
+int xenix_utsname __P((struct thread *, struct xenix_utsname_args *));
#ifdef COMPAT_43
diff --git a/sys/i386/ibcs2/imgact_coff.c b/sys/i386/ibcs2/imgact_coff.c
index a2f624d..3ea816b 100644
--- a/sys/i386/ibcs2/imgact_coff.c
+++ b/sys/i386/ibcs2/imgact_coff.c
@@ -54,7 +54,7 @@ MODULE_DEPEND(coff, ibcs2, 1, 1, 1);
extern struct sysentvec ibcs2_svr3_sysvec;
-static int coff_load_file __P((struct proc *p, char *name));
+static int coff_load_file __P((struct thread *td, char *name));
static int exec_coff_imgact __P((struct image_params *imgp));
static int load_coff_section __P((struct vmspace *vmspace, struct vnode *vp, vm_offset_t offset, caddr_t vmaddr, size_t memsz, size_t filsz, vm_prot_t prot));
@@ -150,8 +150,9 @@ load_coff_section(struct vmspace *vmspace, struct vnode *vp, vm_offset_t offset,
}
static int
-coff_load_file(struct proc *p, char *name)
+coff_load_file(struct thread *td, char *name)
{
+ struct proc *p = td->td_proc;
struct vmspace *vmspace = p->p_vmspace;
int error;
struct nameidata nd;
@@ -167,7 +168,7 @@ coff_load_file(struct proc *p, char *name)
unsigned long bss_size = 0;
int i;
- NDINIT(&nd, LOOKUP, LOCKLEAF | FOLLOW | SAVENAME, UIO_SYSSPACE, name, p);
+ NDINIT(&nd, LOOKUP, LOCKLEAF | FOLLOW | SAVENAME, UIO_SYSSPACE, name, td);
error = namei(&nd);
if (error)
@@ -182,7 +183,7 @@ coff_load_file(struct proc *p, char *name)
goto fail;
}
- if ((error = VOP_GETATTR(vp, &attr, p->p_ucred, p)) != 0)
+ if ((error = VOP_GETATTR(vp, &attr, p->p_ucred, td)) != 0)
goto fail;
if ((vp->v_mount->mnt_flag & MNT_NOEXEC)
@@ -195,17 +196,17 @@ coff_load_file(struct proc *p, char *name)
goto fail;
}
- if ((error = VOP_ACCESS(vp, VEXEC, p->p_ucred, p)) != 0)
+ if ((error = VOP_ACCESS(vp, VEXEC, p->p_ucred, td)) != 0)
goto fail;
- if ((error = VOP_OPEN(vp, FREAD, p->p_ucred, p)) != 0)
+ if ((error = VOP_OPEN(vp, FREAD, p->p_ucred, td)) != 0)
goto fail;
/*
* Lose the lock on the vnode. It's no longer needed, and must not
* exist for the pagefault paging to work below.
*/
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
if ((error = vm_mmap(kernel_map,
(vm_offset_t *) &ptr,
@@ -278,7 +279,7 @@ coff_load_file(struct proc *p, char *name)
panic(__FUNCTION__ " vm_map_remove failed");
fail:
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
unlocked_fail:
NDFREE(&nd, NDF_ONLY_PNBUF);
vrele(nd.ni_vp);
@@ -393,9 +394,9 @@ exec_coff_imgact(imgp)
DPRINTF(("%s(%d): shared library %s\n",
__FILE__, __LINE__, libname));
strcpy(&libbuf[emul_path_len], libname);
- error = coff_load_file(imgp->proc, libbuf);
+/* XXXKSE only 1:1 in coff */ error = coff_load_file(&imgp->proc->p_thread, libbuf);
if (error)
- error = coff_load_file(imgp->proc,
+ error = coff_load_file(&imgp->proc->p_thread,
libname);
if (error)
break;
OpenPOWER on IntegriCloud