Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_descrip.c
Show First 20 Lines • Show All 4,167 Lines • ▼ Show 20 Lines | TAILQ_FOREACH(pr, &allprison, pr_list) { | ||||
mtx_unlock(&pr->pr_mtx); | mtx_unlock(&pr->pr_mtx); | ||||
} | } | ||||
sx_sunlock(&allprison_lock); | sx_sunlock(&allprison_lock); | ||||
while (nrele--) | while (nrele--) | ||||
vrele(olddp); | vrele(olddp); | ||||
} | } | ||||
struct filedesc_to_leader * | struct filedesc_to_leader * | ||||
filedesc_to_leader_alloc(struct filedesc_to_leader *old, struct filedesc *fdp, struct proc *leader) | filedesc_to_leader_alloc(struct filedesc_to_leader *old, struct filedesc *fdp, | ||||
struct proc *leader) | |||||
{ | { | ||||
struct filedesc_to_leader *fdtol; | struct filedesc_to_leader *fdtol; | ||||
fdtol = malloc(sizeof(struct filedesc_to_leader), | fdtol = malloc(sizeof(struct filedesc_to_leader), | ||||
M_FILEDESC_TO_LEADER, M_WAITOK); | M_FILEDESC_TO_LEADER, M_WAITOK); | ||||
fdtol->fdl_refcount = 1; | fdtol->fdl_refcount = 1; | ||||
fdtol->fdl_holdcount = 0; | fdtol->fdl_holdcount = 0; | ||||
fdtol->fdl_wakeup = 0; | fdtol->fdl_wakeup = 0; | ||||
fdtol->fdl_leader = leader; | fdtol->fdl_leader = leader; | ||||
if (old != NULL) { | if (old != NULL) { | ||||
FILEDESC_XLOCK(fdp); | FILEDESC_XLOCK(fdp); | ||||
fdtol->fdl_next = old->fdl_next; | fdtol->fdl_next = old->fdl_next; | ||||
fdtol->fdl_prev = old; | fdtol->fdl_prev = old; | ||||
old->fdl_next = fdtol; | old->fdl_next = fdtol; | ||||
fdtol->fdl_next->fdl_prev = fdtol; | fdtol->fdl_next->fdl_prev = fdtol; | ||||
FILEDESC_XUNLOCK(fdp); | FILEDESC_XUNLOCK(fdp); | ||||
} else { | } else { | ||||
fdtol->fdl_next = fdtol; | fdtol->fdl_next = fdtol; | ||||
fdtol->fdl_prev = fdtol; | fdtol->fdl_prev = fdtol; | ||||
} | } | ||||
return (fdtol); | |||||
} | |||||
struct filedesc_to_leader * | |||||
filedesc_to_leader_share(struct filedesc_to_leader *fdtol, struct filedesc *fdp) | |||||
{ | |||||
FILEDESC_XLOCK(fdp); | |||||
fdtol->fdl_refcount++; | |||||
FILEDESC_XUNLOCK(fdp); | |||||
return (fdtol); | return (fdtol); | ||||
} | } | ||||
static int | static int | ||||
sysctl_kern_proc_nfds(SYSCTL_HANDLER_ARGS) | sysctl_kern_proc_nfds(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
NDSLOTTYPE *map; | NDSLOTTYPE *map; | ||||
struct filedesc *fdp; | struct filedesc *fdp; | ||||
▲ Show 20 Lines • Show All 1,073 Lines • Show Last 20 Lines |