svn commit: r273901 - head/sys/kern
Mateusz Guzik
mjg at FreeBSD.org
Fri Oct 31 10:35:02 UTC 2014
Author: mjg
Date: Fri Oct 31 10:35:01 2014
New Revision: 273901
URL: https://svnweb.freebsd.org/changeset/base/273901
Log:
filedesc: drop retval argument from do_dup
It was almost always td_retval anyway.
For the one case where it is not, preserve the old value across the call.
Modified:
head/sys/kern/kern_descrip.c
Modified: head/sys/kern/kern_descrip.c
==============================================================================
--- head/sys/kern/kern_descrip.c Fri Oct 31 10:25:31 2014 (r273900)
+++ head/sys/kern/kern_descrip.c Fri Oct 31 10:35:01 2014 (r273901)
@@ -101,8 +101,7 @@ static uma_zone_t file_zone;
static int closefp(struct filedesc *fdp, int fd, struct file *fp,
struct thread *td, int holdleaders);
-static int do_dup(struct thread *td, int flags, int old, int new,
- register_t *retval);
+static int do_dup(struct thread *td, int flags, int old, int new);
static int fd_first_free(struct filedesc *fdp, int low, int size);
static int fd_last_used(struct filedesc *fdp, int size);
static void fdgrowtable(struct filedesc *fdp, int nfd);
@@ -361,8 +360,7 @@ int
sys_dup2(struct thread *td, struct dup2_args *uap)
{
- return (do_dup(td, DUP_FIXED, (int)uap->from, (int)uap->to,
- td->td_retval));
+ return (do_dup(td, DUP_FIXED, (int)uap->from, (int)uap->to));
}
/*
@@ -378,7 +376,7 @@ int
sys_dup(struct thread *td, struct dup_args *uap)
{
- return (do_dup(td, 0, (int)uap->fd, 0, td->td_retval));
+ return (do_dup(td, 0, (int)uap->fd, 0));
}
/*
@@ -487,24 +485,22 @@ kern_fcntl(struct thread *td, int fd, in
switch (cmd) {
case F_DUPFD:
tmp = arg;
- error = do_dup(td, DUP_FCNTL, fd, tmp, td->td_retval);
+ error = do_dup(td, DUP_FCNTL, fd, tmp);
break;
case F_DUPFD_CLOEXEC:
tmp = arg;
- error = do_dup(td, DUP_FCNTL | DUP_CLOEXEC, fd, tmp,
- td->td_retval);
+ error = do_dup(td, DUP_FCNTL | DUP_CLOEXEC, fd, tmp);
break;
case F_DUP2FD:
tmp = arg;
- error = do_dup(td, DUP_FIXED, fd, tmp, td->td_retval);
+ error = do_dup(td, DUP_FIXED, fd, tmp);
break;
case F_DUP2FD_CLOEXEC:
tmp = arg;
- error = do_dup(td, DUP_FIXED | DUP_CLOEXEC, fd, tmp,
- td->td_retval);
+ error = do_dup(td, DUP_FIXED | DUP_CLOEXEC, fd, tmp);
break;
case F_GETFD:
@@ -803,8 +799,7 @@ getmaxfd(struct proc *p)
* Common code for dup, dup2, fcntl(F_DUPFD) and fcntl(F_DUP2FD).
*/
static int
-do_dup(struct thread *td, int flags, int old, int new,
- register_t *retval)
+do_dup(struct thread *td, int flags, int old, int new)
{
struct filedesc *fdp;
struct filedescent *oldfde, *newfde;
@@ -836,7 +831,7 @@ do_dup(struct thread *td, int flags, int
}
oldfde = &fdp->fd_ofiles[old];
if (flags & DUP_FIXED && old == new) {
- *retval = new;
+ td->td_retval[0] = new;
if (flags & DUP_CLOEXEC)
fdp->fd_ofiles[new].fde_flags |= UF_EXCLOSE;
FILEDESC_XUNLOCK(fdp);
@@ -906,7 +901,7 @@ do_dup(struct thread *td, int flags, int
#ifdef CAPABILITIES
seq_write_end(&newfde->fde_seq);
#endif
- *retval = new;
+ td->td_retval[0] = new;
if (delfp != NULL) {
(void) closefp(fdp, new, delfp, td, 1);
@@ -2191,7 +2186,7 @@ int
fdcheckstd(struct thread *td)
{
struct filedesc *fdp;
- register_t retval, save;
+ register_t save;
int i, error, devnull;
fdp = td->td_proc->p_fd;
@@ -2211,7 +2206,9 @@ fdcheckstd(struct thread *td)
break;
KASSERT(devnull == i, ("oof, we didn't get our fd"));
} else {
- error = do_dup(td, DUP_FIXED, devnull, i, &retval);
+ save = td->td_retval[0];
+ error = do_dup(td, DUP_FIXED, devnull, i);
+ td->td_retval[0] = save;
if (error != 0)
break;
}
More information about the svn-src-head
mailing list