version 1.115, 2005/12/11 12:24:51 |
version 1.122, 2006/06/23 14:59:40 |
Line 255 const struct vnodeopv_entry_desc kernfs_ |
|
Line 255 const struct vnodeopv_entry_desc kernfs_ |
|
const struct vnodeopv_desc kernfs_vnodeop_opv_desc = |
const struct vnodeopv_desc kernfs_vnodeop_opv_desc = |
{ &kernfs_vnodeop_p, kernfs_vnodeop_entries }; |
{ &kernfs_vnodeop_p, kernfs_vnodeop_entries }; |
|
|
static __inline int |
static inline int |
kernfs_fileop_compare(struct kernfs_fileop *a, struct kernfs_fileop *b) |
kernfs_fileop_compare(struct kernfs_fileop *a, struct kernfs_fileop *b) |
{ |
{ |
if (a->kf_type < b->kf_type) |
if (a->kf_type < b->kf_type) |
|
|
struct vop_open_args /* { |
struct vop_open_args /* { |
struct vnode *a_vp; |
struct vnode *a_vp; |
int a_mode; |
int a_mode; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
struct lwp *a_l; |
} */ *ap = v; |
} */ *ap = v; |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
|
|
struct vop_close_args /* { |
struct vop_close_args /* { |
struct vnode *a_vp; |
struct vnode *a_vp; |
int a_fflag; |
int a_fflag; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
struct lwp *a_l; |
} */ *ap = v; |
} */ *ap = v; |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
Line 762 kernfs_access(v) |
|
Line 762 kernfs_access(v) |
|
struct vop_access_args /* { |
struct vop_access_args /* { |
struct vnode *a_vp; |
struct vnode *a_vp; |
int a_mode; |
int a_mode; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
struct lwp *a_l; |
} */ *ap = v; |
} */ *ap = v; |
struct vattr va; |
struct vattr va; |
Line 782 kernfs_default_fileop_getattr(v) |
|
Line 782 kernfs_default_fileop_getattr(v) |
|
struct vop_getattr_args /* { |
struct vop_getattr_args /* { |
struct vnode *a_vp; |
struct vnode *a_vp; |
struct vattr *a_vap; |
struct vattr *a_vap; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
struct lwp *a_l; |
} */ *ap = v; |
} */ *ap = v; |
struct vattr *vap = ap->a_vap; |
struct vattr *vap = ap->a_vap; |
Line 800 kernfs_getattr(v) |
|
Line 800 kernfs_getattr(v) |
|
struct vop_getattr_args /* { |
struct vop_getattr_args /* { |
struct vnode *a_vp; |
struct vnode *a_vp; |
struct vattr *a_vap; |
struct vattr *a_vap; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
struct lwp *a_l; |
} */ *ap = v; |
} */ *ap = v; |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
Line 819 kernfs_getattr(v) |
|
Line 819 kernfs_getattr(v) |
|
vap->va_flags = 0; |
vap->va_flags = 0; |
vap->va_size = 0; |
vap->va_size = 0; |
vap->va_blocksize = DEV_BSIZE; |
vap->va_blocksize = DEV_BSIZE; |
/* |
/* Make all times be current TOD, except for the "boottime" node. */ |
* Make all times be current TOD, except for the "boottime" node. |
|
* Avoid microtime(9), it's slow. |
|
* We don't guard the read from time(9) with splclock(9) since we |
|
* don't actually need to be THAT sure the access is atomic. |
|
*/ |
|
if (kfs->kfs_kt && kfs->kfs_kt->kt_namlen == 8 && |
if (kfs->kfs_kt && kfs->kfs_kt->kt_namlen == 8 && |
!memcmp(kfs->kfs_kt->kt_name, "boottime", 8)) { |
!memcmp(kfs->kfs_kt->kt_name, "boottime", 8)) { |
TIMEVAL_TO_TIMESPEC(&boottime, &vap->va_ctime); |
TIMEVAL_TO_TIMESPEC(&boottime, &vap->va_ctime); |
} else { |
} else { |
TIMEVAL_TO_TIMESPEC(&time, &vap->va_ctime); |
getnanotime(&vap->va_ctime); |
} |
} |
vap->va_atime = vap->va_mtime = vap->va_ctime; |
vap->va_atime = vap->va_mtime = vap->va_ctime; |
vap->va_gen = 0; |
vap->va_gen = 0; |
|
|
struct vnode *a_vp; |
struct vnode *a_vp; |
struct uio *a_uio; |
struct uio *a_uio; |
int a_ioflag; |
int a_ioflag; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
} */ *ap = v; |
} */ *ap = v; |
struct uio *uio = ap->a_uio; |
struct uio *uio = ap->a_uio; |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
Line 948 kernfs_default_xwrite(v) |
|
Line 943 kernfs_default_xwrite(v) |
|
struct vnode *a_vp; |
struct vnode *a_vp; |
struct uio *a_uio; |
struct uio *a_uio; |
int a_ioflag; |
int a_ioflag; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
} */ *ap = v; |
} */ *ap = v; |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
struct uio *uio = ap->a_uio; |
struct uio *uio = ap->a_uio; |
|
|
struct vnode *a_vp; |
struct vnode *a_vp; |
struct uio *a_uio; |
struct uio *a_uio; |
int a_ioflag; |
int a_ioflag; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
} */ *ap = v; |
} */ *ap = v; |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
|
|
|
|
u_long a_command; |
u_long a_command; |
void *a_data; |
void *a_data; |
int a_fflag; |
int a_fflag; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
struct lwp *a_l; |
struct lwp *a_l; |
} */ *ap = v; |
} */ *ap = v; |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
struct kernfs_node *kfs = VTOKERN(ap->a_vp); |
Line 1017 kernfs_setdirentfileno_kt(struct dirent |
|
Line 1012 kernfs_setdirentfileno_kt(struct dirent |
|
return error; |
return error; |
if (kt->kt_tag == KFSdevice) { |
if (kt->kt_tag == KFSdevice) { |
struct vattr va; |
struct vattr va; |
if ((error = VOP_GETATTR(vp, &va, ap->a_cred, |
|
ap->a_uio->uio_segflg == UIO_USERSPACE ? |
error = VOP_GETATTR(vp, &va, ap->a_cred, curlwp); |
ap->a_uio->uio_lwp : &lwp0)) != 0) |
if (error != 0) { |
return (error); |
return error; |
|
} |
d->d_fileno = va.va_fileid; |
d->d_fileno = va.va_fileid; |
} else { |
} else { |
kfs = VTOKERN(vp); |
kfs = VTOKERN(vp); |
Line 1064 kernfs_readdir(v) |
|
Line 1060 kernfs_readdir(v) |
|
struct vop_readdir_args /* { |
struct vop_readdir_args /* { |
struct vnode *a_vp; |
struct vnode *a_vp; |
struct uio *a_uio; |
struct uio *a_uio; |
struct ucred *a_cred; |
kauth_cred_t a_cred; |
int *a_eofflag; |
int *a_eofflag; |
off_t **a_cookies; |
off_t **a_cookies; |
int a_*ncookies; |
int a_*ncookies; |
Line 1121 kernfs_readdir(v) |
|
Line 1117 kernfs_readdir(v) |
|
break; |
break; |
} else { |
} else { |
dkt = SIMPLEQ_NEXT(dkt, dkt_queue); |
dkt = SIMPLEQ_NEXT(dkt, dkt_queue); |
if (dkt == NULL) |
|
break; |
|
} |
} |
|
if (dkt == NULL) |
|
break; |
kt = &dkt->dkt_kt; |
kt = &dkt->dkt_kt; |
} |
} |
if (kt->kt_tag == KFSdevice) { |
if (kt->kt_tag == KFSdevice) { |