version 1.53.2.5, 2001/04/21 17:46:35 |
version 1.54, 2000/03/16 18:08:24 |
Line 132 int fdesc_pathconf __P((void *)); |
|
Line 132 int fdesc_pathconf __P((void *)); |
|
static int fdesc_attr __P((int, struct vattr *, struct ucred *, struct proc *)); |
static int fdesc_attr __P((int, struct vattr *, struct ucred *, struct proc *)); |
|
|
int (**fdesc_vnodeop_p) __P((void *)); |
int (**fdesc_vnodeop_p) __P((void *)); |
const struct vnodeopv_entry_desc fdesc_vnodeop_entries[] = { |
struct vnodeopv_entry_desc fdesc_vnodeop_entries[] = { |
{ &vop_default_desc, vn_default_error }, |
{ &vop_default_desc, vn_default_error }, |
{ &vop_lookup_desc, fdesc_lookup }, /* lookup */ |
{ &vop_lookup_desc, fdesc_lookup }, /* lookup */ |
{ &vop_create_desc, fdesc_create }, /* create */ |
{ &vop_create_desc, fdesc_create }, /* create */ |
Line 179 const struct vnodeopv_entry_desc fdesc_v |
|
Line 179 const struct vnodeopv_entry_desc fdesc_v |
|
{ (struct vnodeop_desc*)NULL, (int(*) __P((void *)))NULL } |
{ (struct vnodeop_desc*)NULL, (int(*) __P((void *)))NULL } |
}; |
}; |
|
|
const struct vnodeopv_desc fdesc_vnodeop_opv_desc = |
struct vnodeopv_desc fdesc_vnodeop_opv_desc = |
{ &fdesc_vnodeop_p, fdesc_vnodeop_entries }; |
{ &fdesc_vnodeop_p, fdesc_vnodeop_entries }; |
|
|
/* |
/* |
|
|
if (cdevsw[cttymajor].d_open == cttyopen) |
if (cdevsw[cttymajor].d_open == cttyopen) |
break; |
break; |
devctty = makedev(cttymajor, 0); |
devctty = makedev(cttymajor, 0); |
fdhashtbl = hashinit(NFDCACHE, HASH_LIST, M_CACHE, M_NOWAIT, &fdhash); |
fdhashtbl = hashinit(NFDCACHE, M_CACHE, M_NOWAIT, &fdhash); |
} |
} |
|
|
/* |
/* |
|
|
*/ |
*/ |
if (fdcache_lock & FDL_LOCKED) { |
if (fdcache_lock & FDL_LOCKED) { |
fdcache_lock |= FDL_WANT; |
fdcache_lock |= FDL_WANT; |
(void) tsleep(&fdcache_lock, PINOD, "fdcache", 0); |
sleep((caddr_t) &fdcache_lock, PINOD); |
goto loop; |
goto loop; |
} |
} |
fdcache_lock |= FDL_LOCKED; |
fdcache_lock |= FDL_LOCKED; |
Line 488 fdesc_attr(fd, vap, cred, p) |
|
Line 488 fdesc_attr(fd, vap, cred, p) |
|
break; |
break; |
|
|
case DTYPE_SOCKET: |
case DTYPE_SOCKET: |
FILE_USE(fp); |
error = soo_stat((struct socket *)fp->f_data, &stb); |
error = (*fp->f_ops->fo_stat)(fp, &stb, p); |
|
FILE_UNUSE(fp, p); |
|
if (error == 0) { |
if (error == 0) { |
vattr_null(vap); |
vattr_null(vap); |
vap->va_type = VSOCK; |
vap->va_type = VSOCK; |
Line 640 fdesc_setattr(v) |
|
Line 638 fdesc_setattr(v) |
|
*/ |
*/ |
switch (fp->f_type) { |
switch (fp->f_type) { |
case DTYPE_VNODE: |
case DTYPE_VNODE: |
|
error = VOP_SETATTR((struct vnode *) fp->f_data, ap->a_vap, ap->a_cred, ap->a_p); |
|
break; |
|
|
case DTYPE_SOCKET: |
case DTYPE_SOCKET: |
error = 0; |
error = 0; |
break; |
break; |
Line 724 fdesc_readdir(v) |
|
Line 725 fdesc_readdir(v) |
|
|
|
if (ap->a_ncookies) { |
if (ap->a_ncookies) { |
ncookies = min(ncookies, (nfdesc_targets - i)); |
ncookies = min(ncookies, (nfdesc_targets - i)); |
cookies = malloc(ncookies * sizeof(off_t), |
MALLOC(cookies, off_t *, ncookies * sizeof(off_t), |
M_TEMP, M_WAITOK); |
M_TEMP, M_WAITOK); |
*ap->a_cookies = cookies; |
*ap->a_cookies = cookies; |
*ap->a_ncookies = ncookies; |
*ap->a_ncookies = ncookies; |
Line 761 fdesc_readdir(v) |
|
Line 762 fdesc_readdir(v) |
|
} else { |
} else { |
if (ap->a_ncookies) { |
if (ap->a_ncookies) { |
ncookies = min(ncookies, (fdp->fd_nfiles + 2)); |
ncookies = min(ncookies, (fdp->fd_nfiles + 2)); |
cookies = malloc(ncookies * sizeof(off_t), |
MALLOC(cookies, off_t *, ncookies * sizeof(off_t), M_TEMP, M_WAITOK); |
M_TEMP, M_WAITOK); |
|
*ap->a_cookies = cookies; |
*ap->a_cookies = cookies; |
*ap->a_ncookies = ncookies; |
*ap->a_ncookies = ncookies; |
} |
} |
Line 795 fdesc_readdir(v) |
|
Line 795 fdesc_readdir(v) |
|
} |
} |
|
|
if (ap->a_ncookies && error) { |
if (ap->a_ncookies && error) { |
free(*ap->a_cookies, M_TEMP); |
FREE(*ap->a_cookies, M_TEMP); |
*ap->a_ncookies = 0; |
*ap->a_ncookies = 0; |
*ap->a_cookies = NULL; |
*ap->a_cookies = NULL; |
} |
} |