#ifndef _SYS_VNODE_IF_H_
#define _SYS_VNODE_IF_H_
#include <sys/appleapiopts.h>
#include <sys/cdefs.h>
#include <sys/kernel_types.h>
#include <sys/buf.h>
#ifdef BSD_KERNEL_PRIVATE
#include <sys/vm.h>
#endif
#include <mach/memory_object_types.h>
#ifdef KERNEL
extern struct vnodeop_desc vnop_default_desc;
extern struct vnodeop_desc vnop_lookup_desc;
extern struct vnodeop_desc vnop_create_desc;
extern struct vnodeop_desc vnop_whiteout_desc;
extern struct vnodeop_desc vnop_mknod_desc;
extern struct vnodeop_desc vnop_open_desc;
extern struct vnodeop_desc vnop_close_desc;
extern struct vnodeop_desc vnop_access_desc;
extern struct vnodeop_desc vnop_getattr_desc;
extern struct vnodeop_desc vnop_setattr_desc;
extern struct vnodeop_desc vnop_getattrlist_desc;
extern struct vnodeop_desc vnop_setattrlist_desc;
extern struct vnodeop_desc vnop_read_desc;
extern struct vnodeop_desc vnop_write_desc;
extern struct vnodeop_desc vnop_ioctl_desc;
extern struct vnodeop_desc vnop_select_desc;
extern struct vnodeop_desc vnop_exchange_desc;
extern struct vnodeop_desc vnop_revoke_desc;
extern struct vnodeop_desc vnop_mmap_desc;
extern struct vnodeop_desc vnop_mnomap_desc;
extern struct vnodeop_desc vnop_fsync_desc;
extern struct vnodeop_desc vnop_remove_desc;
extern struct vnodeop_desc vnop_link_desc;
extern struct vnodeop_desc vnop_rename_desc;
extern struct vnodeop_desc vnop_mkdir_desc;
extern struct vnodeop_desc vnop_rmdir_desc;
extern struct vnodeop_desc vnop_symlink_desc;
extern struct vnodeop_desc vnop_readdir_desc;
extern struct vnodeop_desc vnop_readdirattr_desc;
extern struct vnodeop_desc vnop_readlink_desc;
extern struct vnodeop_desc vnop_inactive_desc;
extern struct vnodeop_desc vnop_reclaim_desc;
extern struct vnodeop_desc vnop_print_desc;
extern struct vnodeop_desc vnop_pathconf_desc;
extern struct vnodeop_desc vnop_advlock_desc;
extern struct vnodeop_desc vnop_truncate_desc;
extern struct vnodeop_desc vnop_allocate_desc;
extern struct vnodeop_desc vnop_pagein_desc;
extern struct vnodeop_desc vnop_pageout_desc;
extern struct vnodeop_desc vnop_devblocksize_desc;
extern struct vnodeop_desc vnop_searchfs_desc;
extern struct vnodeop_desc vnop_copyfile_desc;
extern struct vnodeop_desc vnop_blktooff_desc;
extern struct vnodeop_desc vnop_offtoblk_desc;
extern struct vnodeop_desc vnop_blockmap_desc;
extern struct vnodeop_desc vnop_strategy_desc;
extern struct vnodeop_desc vnop_bwrite_desc;
__BEGIN_DECLS
struct vnop_lookup_args {
struct vnodeop_desc *a_desc;
vnode_t a_dvp;
vnode_t *a_vpp;
struct componentname *a_cnp;
vfs_context_t a_context;
};
extern errno_t VNOP_LOOKUP(vnode_t, vnode_t *, struct componentname *, vfs_context_t);
struct vnop_create_args {
struct vnodeop_desc *a_desc;
vnode_t a_dvp;
vnode_t *a_vpp;
struct componentname *a_cnp;
struct vnode_attr *a_vap;
vfs_context_t a_context;
};
extern errno_t VNOP_CREATE(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t);
struct vnop_whiteout_args {
struct vnodeop_desc *a_desc;
vnode_t a_dvp;
struct componentname *a_cnp;
int a_flags;
vfs_context_t a_context;
};
extern errno_t VNOP_WHITEOUT(vnode_t, struct componentname *, int, vfs_context_t);
struct vnop_mknod_args {
struct vnodeop_desc *a_desc;
vnode_t a_dvp;
vnode_t *a_vpp;
struct componentname *a_cnp;
struct vnode_attr *a_vap;
vfs_context_t a_context;
};
extern errno_t VNOP_MKNOD(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t);
struct vnop_open_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
int a_mode;
vfs_context_t a_context;
};
extern errno_t VNOP_OPEN(vnode_t, int, vfs_context_t);
struct vnop_close_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
int a_fflag;
vfs_context_t a_context;
};
extern errno_t VNOP_CLOSE(vnode_t, int, vfs_context_t);
struct vnop_access_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
int a_action;
vfs_context_t a_context;
};
extern errno_t VNOP_ACCESS(vnode_t, int, vfs_context_t);
struct vnop_getattr_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct vnode_attr *a_vap;
vfs_context_t a_context;
};
extern errno_t VNOP_GETATTR(vnode_t, struct vnode_attr *, vfs_context_t);
struct vnop_setattr_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct vnode_attr *a_vap;
vfs_context_t a_context;
};
extern errno_t VNOP_SETATTR(vnode_t, struct vnode_attr *, vfs_context_t);
struct vnop_getattrlist_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct attrlist *a_alist;
struct uio *a_uio;
int a_options;
vfs_context_t a_context;
};
extern errno_t VNOP_GETATTRLIST(vnode_t, struct attrlist *, struct uio *, int, vfs_context_t);
struct vnop_setattrlist_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct attrlist *a_alist;
struct uio *a_uio;
int a_options;
vfs_context_t a_context;
};
extern errno_t VNOP_SETATTRLIST(vnode_t, struct attrlist *, struct uio *, int, vfs_context_t);
struct vnop_read_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct uio *a_uio;
int a_ioflag;
vfs_context_t a_context;
};
extern errno_t VNOP_READ(vnode_t, struct uio *, int, vfs_context_t);
struct vnop_write_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct uio *a_uio;
int a_ioflag;
vfs_context_t a_context;
};
extern errno_t VNOP_WRITE(vnode_t, struct uio *, int, vfs_context_t);
struct vnop_ioctl_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
u_long a_command;
caddr_t a_data;
int a_fflag;
vfs_context_t a_context;
};
extern errno_t VNOP_IOCTL(vnode_t, u_long, caddr_t, int, vfs_context_t);
struct vnop_select_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
int a_which;
int a_fflags;
void *a_wql;
vfs_context_t a_context;
};
extern errno_t VNOP_SELECT(vnode_t, int, int, void *, vfs_context_t);
struct vnop_exchange_args {
struct vnodeop_desc *a_desc;
vnode_t a_fvp;
vnode_t a_tvp;
int a_options;
vfs_context_t a_context;
};
extern errno_t VNOP_EXCHANGE(vnode_t, vnode_t, int, vfs_context_t);
struct vnop_revoke_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
int a_flags;
vfs_context_t a_context;
};
extern errno_t VNOP_REVOKE(vnode_t, int, vfs_context_t);
struct vnop_mmap_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
int a_fflags;
vfs_context_t a_context;
};
extern errno_t VNOP_MMAP(vnode_t, int, vfs_context_t);
struct vnop_mnomap_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
vfs_context_t a_context;
};
extern errno_t VNOP_MNOMAP(vnode_t, vfs_context_t);
struct vnop_fsync_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
int a_waitfor;
vfs_context_t a_context;
};
extern errno_t VNOP_FSYNC(vnode_t, int, vfs_context_t);
struct vnop_remove_args {
struct vnodeop_desc *a_desc;
vnode_t a_dvp;
vnode_t a_vp;
struct componentname *a_cnp;
int a_flags;
vfs_context_t a_context;
};
extern errno_t VNOP_REMOVE(vnode_t, vnode_t, struct componentname *, int, vfs_context_t);
struct vnop_link_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
vnode_t a_tdvp;
struct componentname *a_cnp;
vfs_context_t a_context;
};
extern errno_t VNOP_LINK(vnode_t, vnode_t, struct componentname *, vfs_context_t);
struct vnop_rename_args {
struct vnodeop_desc *a_desc;
vnode_t a_fdvp;
vnode_t a_fvp;
struct componentname *a_fcnp;
vnode_t a_tdvp;
vnode_t a_tvp;
struct componentname *a_tcnp;
vfs_context_t a_context;
};
extern errno_t VNOP_RENAME(vnode_t, vnode_t, struct componentname *, vnode_t, vnode_t, struct componentname *, vfs_context_t);
struct vnop_mkdir_args {
struct vnodeop_desc *a_desc;
vnode_t a_dvp;
vnode_t *a_vpp;
struct componentname *a_cnp;
struct vnode_attr *a_vap;
vfs_context_t a_context;
};
extern errno_t VNOP_MKDIR(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, vfs_context_t);
struct vnop_rmdir_args {
struct vnodeop_desc *a_desc;
vnode_t a_dvp;
vnode_t a_vp;
struct componentname *a_cnp;
vfs_context_t a_context;
};
extern errno_t VNOP_RMDIR(vnode_t, vnode_t, struct componentname *, vfs_context_t);
struct vnop_symlink_args {
struct vnodeop_desc *a_desc;
vnode_t a_dvp;
vnode_t *a_vpp;
struct componentname *a_cnp;
struct vnode_attr *a_vap;
char *a_target;
vfs_context_t a_context;
};
extern errno_t VNOP_SYMLINK(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, char *, vfs_context_t);
struct vnop_readdir_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct uio *a_uio;
int a_flags;
int *a_eofflag;
int *a_numdirent;
vfs_context_t a_context;
};
extern errno_t VNOP_READDIR(vnode_t, struct uio *, int, int *, int *, vfs_context_t);
struct vnop_readdirattr_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct attrlist *a_alist;
struct uio *a_uio;
u_long a_maxcount;
u_long a_options;
u_long *a_newstate;
int *a_eofflag;
u_long *a_actualcount;
vfs_context_t a_context;
};
extern errno_t VNOP_READDIRATTR(vnode_t, struct attrlist *, struct uio *, u_long, u_long, u_long *, int *, u_long *, vfs_context_t);
struct vnop_readlink_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
struct uio *a_uio;
vfs_context_t a_context;
};
extern errno_t VNOP_READLINK(vnode_t, struct uio *, vfs_context_t);
struct vnop_inactive_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
vfs_context_t a_context;
};
extern errno_t VNOP_INACTIVE(vnode_t, vfs_context_t);
struct vnop_reclaim_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
vfs_context_t a_context;
};
extern errno_t VNOP_RECLAIM(vnode_t, vfs_context_t);
struct vnop_pathconf_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
int a_name;
register_t *a_retval;
vfs_context_t a_context;
};
extern errno_t VNOP_PATHCONF(vnode_t, int, register_t *, vfs_context_t);
struct vnop_advlock_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
caddr_t a_id;
int a_op;
struct flock *a_fl;
int a_flags;
vfs_context_t a_context;
};
extern errno_t VNOP_ADVLOCK(vnode_t, caddr_t, int, struct flock *, int, vfs_context_t);
struct vnop_allocate_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
off_t a_length;
u_int32_t a_flags;
off_t *a_bytesallocated;
off_t a_offset;
vfs_context_t a_context;
};
extern errno_t VNOP_ALLOCATE(vnode_t, off_t, u_int32_t, off_t *, off_t, vfs_context_t);
struct vnop_pagein_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
upl_t a_pl;
vm_offset_t a_pl_offset;
off_t a_f_offset;
size_t a_size;
int a_flags;
vfs_context_t a_context;
};
extern errno_t VNOP_PAGEIN(vnode_t, upl_t, vm_offset_t, off_t, size_t, int, vfs_context_t);
struct vnop_pageout_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
upl_t a_pl;
vm_offset_t a_pl_offset;
off_t a_f_offset;
size_t a_size;
int a_flags;
vfs_context_t a_context;
};
extern errno_t VNOP_PAGEOUT(vnode_t, upl_t, vm_offset_t, off_t, size_t, int, vfs_context_t);
#ifdef BSD_KERNEL_PRIVATE
struct vnop_devblocksize_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
register_t *a_retval;
};
#endif
struct vnop_searchfs_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
void *a_searchparams1;
void *a_searchparams2;
struct attrlist *a_searchattrs;
u_long a_maxmatches;
struct timeval *a_timelimit;
struct attrlist *a_returnattrs;
u_long *a_nummatches;
u_long a_scriptcode;
u_long a_options;
struct uio *a_uio;
struct searchstate *a_searchstate;
vfs_context_t a_context;
};
extern errno_t VNOP_SEARCHFS(vnode_t, void *, void *, struct attrlist *, u_long, struct timeval *, struct attrlist *, u_long *, u_long, u_long, struct uio *, struct searchstate *, vfs_context_t);
struct vnop_copyfile_args {
struct vnodeop_desc *a_desc;
vnode_t a_fvp;
vnode_t a_tdvp;
vnode_t a_tvp;
struct componentname *a_tcnp;
int a_mode;
int a_flags;
vfs_context_t a_context;
};
extern errno_t VNOP_COPYFILE(vnode_t, vnode_t, vnode_t, struct componentname *, int, int, vfs_context_t);
struct vnop_getxattr_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
char * a_name;
uio_t a_uio;
size_t *a_size;
int a_options;
vfs_context_t a_context;
};
extern struct vnodeop_desc vnop_getxattr_desc;
extern errno_t VNOP_GETXATTR(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t);
struct vnop_setxattr_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
char * a_name;
uio_t a_uio;
int a_options;
vfs_context_t a_context;
};
extern struct vnodeop_desc vnop_setxattr_desc;
extern errno_t VNOP_SETXATTR(vnode_t, const char *, uio_t, int, vfs_context_t);
struct vnop_removexattr_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
char * a_name;
int a_options;
vfs_context_t a_context;
};
extern struct vnodeop_desc vnop_removexattr_desc;
extern errno_t VNOP_REMOVEXATTR(vnode_t, const char *, int, vfs_context_t);
struct vnop_listxattr_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
uio_t a_uio;
size_t *a_size;
int a_options;
vfs_context_t a_context;
};
extern struct vnodeop_desc vnop_listxattr_desc;
extern errno_t VNOP_LISTXATTR(vnode_t, uio_t, size_t *, int, vfs_context_t);
struct vnop_blktooff_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
daddr64_t a_lblkno;
off_t *a_offset;
};
extern errno_t VNOP_BLKTOOFF(vnode_t, daddr64_t, off_t *);
struct vnop_offtoblk_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
off_t a_offset;
daddr64_t *a_lblkno;
};
extern errno_t VNOP_OFFTOBLK(vnode_t, off_t, daddr64_t *);
struct vnop_blockmap_args {
struct vnodeop_desc *a_desc;
vnode_t a_vp;
off_t a_foffset;
size_t a_size;
daddr64_t *a_bpn;
size_t *a_run;
void *a_poff;
int a_flags;
vfs_context_t a_context;
};
extern errno_t VNOP_BLOCKMAP(vnode_t, off_t, size_t, daddr64_t *, size_t *, void *,
int, vfs_context_t);
struct vnop_strategy_args {
struct vnodeop_desc *a_desc;
struct buf *a_bp;
};
extern errno_t VNOP_STRATEGY(struct buf *bp);
struct vnop_bwrite_args {
struct vnodeop_desc *a_desc;
buf_t a_bp;
};
extern errno_t VNOP_BWRITE(buf_t);
struct vnop_kqfilt_add_args {
struct vnodeop_desc *a_desc;
struct vnode *a_vp;
struct knote *a_kn;
vfs_context_t a_context;
};
extern struct vnodeop_desc vnop_kqfilt_add_desc;
extern errno_t VNOP_KQFILT_ADD(vnode_t , struct knote *, vfs_context_t);
struct vnop_kqfilt_remove_args {
struct vnodeop_desc *a_desc;
struct vnode *a_vp;
uintptr_t a_ident;
vfs_context_t a_context;
};
extern struct vnodeop_desc vnop_kqfilt_remove_desc;
errno_t VNOP_KQFILT_REMOVE(vnode_t , uintptr_t , vfs_context_t);
__END_DECLS
#endif
#endif