summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_descrip.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_descrip.c')
-rw-r--r--sys/kern/kern_descrip.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 8f8f636..d629ab3 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -549,10 +549,10 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg)
break;
}
/* Check for race with close */
- FILEDESC_LOCK(fdp);
+ FILEDESC_LOCK_FAST(fdp);
if ((unsigned) fd >= fdp->fd_nfiles ||
fp != fdp->fd_ofiles[fd]) {
- FILEDESC_UNLOCK(fdp);
+ FILEDESC_UNLOCK_FAST(fdp);
flp->l_whence = SEEK_SET;
flp->l_start = 0;
flp->l_len = 0;
@@ -560,7 +560,7 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg)
(void) VOP_ADVLOCK(vp, (caddr_t)p->p_leader,
F_UNLCK, flp, F_POSIX);
} else
- FILEDESC_UNLOCK(fdp);
+ FILEDESC_UNLOCK_FAST(fdp);
fdrop(fp, td);
break;
@@ -736,14 +736,14 @@ do_dup(td, type, old, new, retval)
(void) closef(delfp, td);
mtx_unlock(&Giant);
if (holdleaders) {
- FILEDESC_LOCK(fdp);
+ FILEDESC_LOCK_FAST(fdp);
fdp->fd_holdleaderscount--;
if (fdp->fd_holdleaderscount == 0 &&
fdp->fd_holdleaderswakeup != 0) {
fdp->fd_holdleaderswakeup = 0;
wakeup(&fdp->fd_holdleaderscount);
}
- FILEDESC_UNLOCK(fdp);
+ FILEDESC_UNLOCK_FAST(fdp);
}
} else {
FILEDESC_UNLOCK(fdp);
@@ -1033,14 +1033,14 @@ close(td, uap)
error = closef(fp, td);
mtx_unlock(&Giant);
if (holdleaders) {
- FILEDESC_LOCK(fdp);
+ FILEDESC_LOCK_FAST(fdp);
fdp->fd_holdleaderscount--;
if (fdp->fd_holdleaderscount == 0 &&
fdp->fd_holdleaderswakeup != 0) {
fdp->fd_holdleaderswakeup = 0;
wakeup(&fdp->fd_holdleaderscount);
}
- FILEDESC_UNLOCK(fdp);
+ FILEDESC_UNLOCK_FAST(fdp);
}
return (error);
}
@@ -1472,9 +1472,9 @@ struct filedesc *
fdshare(fdp)
struct filedesc *fdp;
{
- FILEDESC_LOCK(fdp);
+ FILEDESC_LOCK_FAST(fdp);
fdp->fd_refcnt++;
- FILEDESC_UNLOCK(fdp);
+ FILEDESC_UNLOCK_FAST(fdp);
return (fdp);
}
@@ -1495,13 +1495,13 @@ fdcopy(fdp)
return (NULL);
newfdp = fdinit(fdp);
- FILEDESC_LOCK(fdp);
+ FILEDESC_LOCK_FAST(fdp);
while (fdp->fd_lastfile >= newfdp->fd_nfiles) {
- FILEDESC_UNLOCK(fdp);
+ FILEDESC_UNLOCK_FAST(fdp);
FILEDESC_LOCK(newfdp);
fdgrowtable(newfdp, fdp->fd_lastfile + 1);
FILEDESC_UNLOCK(newfdp);
- FILEDESC_LOCK(fdp);
+ FILEDESC_LOCK_FAST(fdp);
}
/* copy everything except kqueue descriptors */
newfdp->fd_freefile = -1;
@@ -1517,17 +1517,17 @@ fdcopy(fdp)
newfdp->fd_freefile = i;
}
}
- FILEDESC_UNLOCK(fdp);
+ FILEDESC_UNLOCK_FAST(fdp);
FILEDESC_LOCK(newfdp);
for (i = 0; i <= newfdp->fd_lastfile; ++i)
if (newfdp->fd_ofiles[i] != NULL)
fdused(newfdp, i);
FILEDESC_UNLOCK(newfdp);
- FILEDESC_LOCK(fdp);
+ FILEDESC_LOCK_FAST(fdp);
if (newfdp->fd_freefile == -1)
newfdp->fd_freefile = i;
newfdp->fd_cmask = fdp->fd_cmask;
- FILEDESC_UNLOCK(fdp);
+ FILEDESC_UNLOCK_FAST(fdp);
return (newfdp);
}
OpenPOWER on IntegriCloud