{This file is automatically generated by "vop_generator"} unit vnode_if; interface {$mode objfpc}{$H+} {$CALLING SysV_ABI_CDecl} uses sys_event, vnode, vnamei, vfile, vuio, vmount, vfcntl, vsocketvar; type PPPtrUint =^PPtrUint; pp_bufobj =Pointer; daddr_t =PtrUint; p_daddr_t =PPtrUint; p_buf =Pointer; p_task =Pointer; p_cluster_save=Pointer; p_vm_page_t =Pointer; p_vop_islocked_args=^vop_islocked_args; vop_islocked_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; end; p_vop_lookup_args=^vop_lookup_args; vop_lookup_args=record a_gen:p_vnodeop_desc; a_dvp:p_vnode; a_vpp:pp_vnode; a_cnp:p_componentname; end; p_vop_create_args=^vop_create_args; vop_create_args=record a_gen:p_vnodeop_desc; a_dvp:p_vnode; a_vpp:pp_vnode; a_cnp:p_componentname; a_vap:p_vattr; end; p_vop_whiteout_args=^vop_whiteout_args; vop_whiteout_args=record a_gen :p_vnodeop_desc; a_dvp :p_vnode; a_cnp :p_componentname; a_flags:Integer; end; p_vop_mknod_args=^vop_mknod_args; vop_mknod_args=record a_gen:p_vnodeop_desc; a_dvp:p_vnode; a_vpp:pp_vnode; a_cnp:p_componentname; a_vap:p_vattr; end; p_vop_open_args=^vop_open_args; vop_open_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_mode:Integer; a_fp :p_file; end; p_vop_close_args=^vop_close_args; vop_close_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_fflag:Integer; end; p_vop_access_args=^vop_access_args; vop_access_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_accmode:accmode_t; end; p_vop_accessx_args=^vop_accessx_args; vop_accessx_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_accmode:accmode_t; end; p_vop_getattr_args=^vop_getattr_args; vop_getattr_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; a_vap:p_vattr; end; p_vop_setattr_args=^vop_setattr_args; vop_setattr_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; a_vap:p_vattr; end; p_vop_markatime_args=^vop_markatime_args; vop_markatime_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; end; p_vop_read_args=^vop_read_args; vop_read_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_uio :p_uio; a_ioflag:Integer; end; p_vop_write_args=^vop_write_args; vop_write_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_uio :p_uio; a_ioflag:Integer; end; p_vop_ioctl_args=^vop_ioctl_args; vop_ioctl_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_command:PtrUint; a_data :Pointer; a_fflag :Integer; end; p_vop_poll_args=^vop_poll_args; vop_poll_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_events:Integer; end; p_vop_kqfilter_args=^vop_kqfilter_args; vop_kqfilter_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; a_kn :p_knote; end; p_vop_revoke_args=^vop_revoke_args; vop_revoke_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_flags:Integer; end; p_vop_fsync_args=^vop_fsync_args; vop_fsync_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_waitfor:Integer; end; p_vop_remove_args=^vop_remove_args; vop_remove_args=record a_gen:p_vnodeop_desc; a_dvp:p_vnode; a_vp :p_vnode; a_cnp:p_componentname; end; p_vop_link_args=^vop_link_args; vop_link_args=record a_gen :p_vnodeop_desc; a_tdvp:p_vnode; a_vp :p_vnode; a_cnp :p_componentname; end; p_vop_rename_args=^vop_rename_args; vop_rename_args=record a_gen :p_vnodeop_desc; a_fdvp:p_vnode; a_fvp :p_vnode; a_fcnp:p_componentname; a_tdvp:p_vnode; a_tvp :p_vnode; a_tcnp:p_componentname; end; p_vop_mkdir_args=^vop_mkdir_args; vop_mkdir_args=record a_gen:p_vnodeop_desc; a_dvp:p_vnode; a_vpp:pp_vnode; a_cnp:p_componentname; a_vap:p_vattr; end; p_vop_rmdir_args=^vop_rmdir_args; vop_rmdir_args=record a_gen:p_vnodeop_desc; a_dvp:p_vnode; a_vp :p_vnode; a_cnp:p_componentname; end; p_vop_symlink_args=^vop_symlink_args; vop_symlink_args=record a_gen :p_vnodeop_desc; a_dvp :p_vnode; a_vpp :pp_vnode; a_cnp :p_componentname; a_vap :p_vattr; a_target:PChar; end; p_vop_readdir_args=^vop_readdir_args; vop_readdir_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_uio :p_uio; a_eofflag :PInteger; a_ncookies:PInteger; a_cookies :PPPtrUint; end; p_vop_readlink_args=^vop_readlink_args; vop_readlink_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; a_uio:p_uio; end; p_vop_inactive_args=^vop_inactive_args; vop_inactive_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; end; p_vop_reclaim_args=^vop_reclaim_args; vop_reclaim_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; end; p_vop_lock1_args=^vop_lock1_args; vop_lock1_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_flags:Integer; a_file :PChar; a_line :Integer; end; p_vop_unlock_args=^vop_unlock_args; vop_unlock_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_flags:Integer; end; p_vop_bmap_args=^vop_bmap_args; vop_bmap_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_bn :daddr_t; a_bop :pp_bufobj; a_bnp :p_daddr_t; a_runp:PInteger; a_runb:PInteger; end; p_vop_strategy_args=^vop_strategy_args; vop_strategy_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; a_bp :p_buf; end; p_vop_getwritemount_args=^vop_getwritemount_args; vop_getwritemount_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; a_mpp:pp_mount; end; p_vop_print_args=^vop_print_args; vop_print_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; end; p_vop_pathconf_args=^vop_pathconf_args; vop_pathconf_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_name :Integer; a_retval:PPtrUint; end; p_vop_advlock_args=^vop_advlock_args; vop_advlock_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_id :Pointer; a_op :Integer; a_fl :p_flock; a_flags:Integer; end; p_vop_advlockasync_args=^vop_advlockasync_args; vop_advlockasync_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_id :Pointer; a_op :Integer; a_fl :p_flock; a_flags :Integer; a_task :p_task; a_cookiep:PPointer; end; p_vop_advlockpurge_args=^vop_advlockpurge_args; vop_advlockpurge_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; end; p_vop_reallocblks_args=^vop_reallocblks_args; vop_reallocblks_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_buflist:p_cluster_save; end; p_vop_getpages_args=^vop_getpages_args; vop_getpages_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_m :p_vm_page_t; a_count :Integer; a_reqpage:Integer; a_offset :PtrUint; end; p_vop_putpages_args=^vop_putpages_args; vop_putpages_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_m :p_vm_page_t; a_count :Integer; a_sync :Integer; a_rtvals:PInteger; a_offset:PtrUint; end; p_vop_vptofh_args=^vop_vptofh_args; vop_vptofh_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; a_fhp:p_fid; end; p_vop_vptocnp_args=^vop_vptocnp_args; vop_vptocnp_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_vpp :pp_vnode; a_buf :PChar; a_buflen:PInteger; end; p_vop_allocate_args=^vop_allocate_args; vop_allocate_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_offset:PPtrUint; a_len :PPtrUint; end; p_vop_unp_bind_args=^vop_unp_bind_args; vop_unp_bind_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_socket:p_socket; end; p_vop_unp_connect_args=^vop_unp_connect_args; vop_unp_connect_args=record a_gen :p_vnodeop_desc; a_vp :p_vnode; a_socket:pp_socket; end; p_vop_unp_detach_args=^vop_unp_detach_args; vop_unp_detach_args=record a_gen:p_vnodeop_desc; a_vp :p_vnode; end; vop_islocked_t =function(ap:p_vop_islocked_args):Integer; vop_lookup_t =function(ap:p_vop_lookup_args):Integer; vop_create_t =function(ap:p_vop_create_args):Integer; vop_whiteout_t =function(ap:p_vop_whiteout_args):Integer; vop_mknod_t =function(ap:p_vop_mknod_args):Integer; vop_open_t =function(ap:p_vop_open_args):Integer; vop_close_t =function(ap:p_vop_close_args):Integer; vop_access_t =function(ap:p_vop_access_args):Integer; vop_accessx_t =function(ap:p_vop_accessx_args):Integer; vop_getattr_t =function(ap:p_vop_getattr_args):Integer; vop_setattr_t =function(ap:p_vop_setattr_args):Integer; vop_markatime_t =function(ap:p_vop_markatime_args):Integer; vop_read_t =function(ap:p_vop_read_args):Integer; vop_write_t =function(ap:p_vop_write_args):Integer; vop_ioctl_t =function(ap:p_vop_ioctl_args):Integer; vop_poll_t =function(ap:p_vop_poll_args):Integer; vop_kqfilter_t =function(ap:p_vop_kqfilter_args):Integer; vop_revoke_t =function(ap:p_vop_revoke_args):Integer; vop_fsync_t =function(ap:p_vop_fsync_args):Integer; vop_remove_t =function(ap:p_vop_remove_args):Integer; vop_link_t =function(ap:p_vop_link_args):Integer; vop_rename_t =function(ap:p_vop_rename_args):Integer; vop_mkdir_t =function(ap:p_vop_mkdir_args):Integer; vop_rmdir_t =function(ap:p_vop_rmdir_args):Integer; vop_symlink_t =function(ap:p_vop_symlink_args):Integer; vop_readdir_t =function(ap:p_vop_readdir_args):Integer; vop_readlink_t =function(ap:p_vop_readlink_args):Integer; vop_inactive_t =function(ap:p_vop_inactive_args):Integer; vop_reclaim_t =function(ap:p_vop_reclaim_args):Integer; vop_lock1_t =function(ap:p_vop_lock1_args):Integer; vop_unlock_t =function(ap:p_vop_unlock_args):Integer; vop_bmap_t =function(ap:p_vop_bmap_args):Integer; vop_strategy_t =function(ap:p_vop_strategy_args):Integer; vop_getwritemount_t=function(ap:p_vop_getwritemount_args):Integer; vop_print_t =function(ap:p_vop_print_args):Integer; vop_pathconf_t =function(ap:p_vop_pathconf_args):Integer; vop_advlock_t =function(ap:p_vop_advlock_args):Integer; vop_advlockasync_t =function(ap:p_vop_advlockasync_args):Integer; vop_advlockpurge_t =function(ap:p_vop_advlockpurge_args):Integer; vop_reallocblks_t =function(ap:p_vop_reallocblks_args):Integer; vop_getpages_t =function(ap:p_vop_getpages_args):Integer; vop_putpages_t =function(ap:p_vop_putpages_args):Integer; vop_vptofh_t =function(ap:p_vop_vptofh_args):Integer; vop_vptocnp_t =function(ap:p_vop_vptocnp_args):Integer; vop_allocate_t =function(ap:p_vop_allocate_args):Integer; vop_unp_bind_t =function(ap:p_vop_unp_bind_args):Integer; vop_unp_connect_t =function(ap:p_vop_unp_connect_args):Integer; vop_unp_detach_t =function(ap:p_vop_unp_detach_args):Integer; function VOP_ISLOCKED (vp:p_vnode):Integer; function VOP_LOOKUP (dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname):Integer; function VOP_CREATE (dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname;vap:p_vattr):Integer; function VOP_WHITEOUT (dvp:p_vnode;cnp:p_componentname;flags:Integer):Integer; function VOP_MKNOD (dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname;vap:p_vattr):Integer; function VOP_OPEN (vp:p_vnode;mode:Integer;fp:p_file):Integer; function VOP_CLOSE (vp:p_vnode;fflag:Integer):Integer; function VOP_ACCESS (vp:p_vnode;accmode:accmode_t):Integer; function VOP_ACCESSX (vp:p_vnode;accmode:accmode_t):Integer; function VOP_GETATTR (vp:p_vnode;vap:p_vattr):Integer; function VOP_SETATTR (vp:p_vnode;vap:p_vattr):Integer; function VOP_MARKATIME (vp:p_vnode):Integer; function VOP_READ (vp:p_vnode;uio:p_uio;ioflag:Integer):Integer; function VOP_WRITE (vp:p_vnode;uio:p_uio;ioflag:Integer):Integer; function VOP_IOCTL (vp:p_vnode;command:PtrUint;data:Pointer;fflag:Integer):Integer; function VOP_POLL (vp:p_vnode;events:Integer):Integer; function VOP_KQFILTER (vp:p_vnode;kn:p_knote):Integer; function VOP_REVOKE (vp:p_vnode;flags:Integer):Integer; function VOP_FSYNC (vp:p_vnode;waitfor:Integer):Integer; function VOP_REMOVE (dvp:p_vnode;vp:p_vnode;cnp:p_componentname):Integer; function VOP_LINK (tdvp:p_vnode;vp:p_vnode;cnp:p_componentname):Integer; function VOP_RENAME (fdvp:p_vnode;fvp:p_vnode;fcnp:p_componentname;tdvp:p_vnode;tvp:p_vnode;tcnp:p_componentname):Integer; function VOP_MKDIR (dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname;vap:p_vattr):Integer; function VOP_RMDIR (dvp:p_vnode;vp:p_vnode;cnp:p_componentname):Integer; function VOP_SYMLINK (dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname;vap:p_vattr;target:PChar):Integer; function VOP_READDIR (vp:p_vnode;uio:p_uio;eofflag:PInteger;ncookies:PInteger;cookies:PPPtrUint):Integer; function VOP_READLINK (vp:p_vnode;uio:p_uio):Integer; function VOP_INACTIVE (vp:p_vnode):Integer; function VOP_RECLAIM (vp:p_vnode):Integer; function VOP_LOCK (vp:p_vnode;flags:Integer;_file:PChar;line:Integer):Integer; function VOP_UNLOCK (vp:p_vnode;flags:Integer):Integer; function VOP_BMAP (vp:p_vnode;bn:daddr_t;bop:pp_bufobj;bnp:p_daddr_t;runp:PInteger;runb:PInteger):Integer; function VOP_STRATEGY (vp:p_vnode;bp:p_buf):Integer; function VOP_GETWRITEMOUNT(vp:p_vnode;mpp:pp_mount):Integer; function VOP_PRINT (vp:p_vnode):Integer; function VOP_PATHCONF (vp:p_vnode;name:Integer;retval:PPtrUint):Integer; function VOP_ADVLOCK (vp:p_vnode;id:Pointer;op:Integer;fl:p_flock;flags:Integer):Integer; function VOP_ADVLOCKASYNC (vp:p_vnode;id:Pointer;op:Integer;fl:p_flock;flags:Integer;task:p_task;cookiep:PPointer):Integer; function VOP_ADVLOCKPURGE (vp:p_vnode):Integer; function VOP_REALLOCBLKS (vp:p_vnode;buflist:p_cluster_save):Integer; function VOP_GETPAGES (vp:p_vnode;m:p_vm_page_t;count:Integer;reqpage:Integer;offset:PtrUint):Integer; function VOP_PUTPAGES (vp:p_vnode;m:p_vm_page_t;count:Integer;sync:Integer;rtvals:PInteger;offset:PtrUint):Integer; function VOP_VPTOFH (vp:p_vnode;fhp:p_fid):Integer; function VOP_VPTOCNP (vp:p_vnode;vpp:pp_vnode;buf:PChar;buflen:PInteger):Integer; function VOP_ALLOCATE (vp:p_vnode;offset:PPtrUint;len:PPtrUint):Integer; function VOP_UNP_BIND (vp:p_vnode;socket:p_socket):Integer; function VOP_UNP_CONNECT (vp:p_vnode;socket:pp_socket):Integer; function VOP_UNP_DETACH (vp:p_vnode):Integer; const vop_islocked_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_islocked_args(nil)^.a_vp)),Byte(-1)); vop_lookup_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_lookup_args(nil)^.a_dvp)),Byte(-1)); vop_create_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_create_args(nil)^.a_dvp)),Byte(-1)); vop_whiteout_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_whiteout_args(nil)^.a_dvp)),Byte(-1)); vop_mknod_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_mknod_args(nil)^.a_dvp)),Byte(-1)); vop_open_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_open_args(nil)^.a_vp)),Byte(-1)); vop_close_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_close_args(nil)^.a_vp)),Byte(-1)); vop_access_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_access_args(nil)^.a_vp)),Byte(-1)); vop_accessx_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_accessx_args(nil)^.a_vp)),Byte(-1)); vop_getattr_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_getattr_args(nil)^.a_vp)),Byte(-1)); vop_setattr_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_setattr_args(nil)^.a_vp)),Byte(-1)); vop_markatime_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_markatime_args(nil)^.a_vp)),Byte(-1)); vop_read_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_read_args(nil)^.a_vp)),Byte(-1)); vop_write_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_write_args(nil)^.a_vp)),Byte(-1)); vop_ioctl_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_ioctl_args(nil)^.a_vp)),Byte(-1)); vop_poll_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_poll_args(nil)^.a_vp)),Byte(-1)); vop_kqfilter_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_kqfilter_args(nil)^.a_vp)),Byte(-1)); vop_revoke_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_revoke_args(nil)^.a_vp)),Byte(-1)); vop_fsync_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_fsync_args(nil)^.a_vp)),Byte(-1)); vop_remove_vp_offsets :array[0..2] of Byte=(Byte(ptrint(@p_vop_remove_args(nil)^.a_dvp)),Byte(ptrint(@p_vop_remove_args(nil)^.a_vp)),Byte(-1)); vop_link_vp_offsets :array[0..2] of Byte=(Byte(ptrint(@p_vop_link_args(nil)^.a_tdvp)),Byte(ptrint(@p_vop_link_args(nil)^.a_vp)),Byte(-1)); vop_rename_vp_offsets :array[0..4] of Byte=(Byte(ptrint(@p_vop_rename_args(nil)^.a_fdvp)),Byte(ptrint(@p_vop_rename_args(nil)^.a_fvp)),Byte(ptrint(@p_vop_rename_args(nil)^.a_tdvp)),Byte(ptrint(@p_vop_rename_args(nil)^.a_tvp)),Byte(-1)); vop_mkdir_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_mkdir_args(nil)^.a_dvp)),Byte(-1)); vop_rmdir_vp_offsets :array[0..2] of Byte=(Byte(ptrint(@p_vop_rmdir_args(nil)^.a_dvp)),Byte(ptrint(@p_vop_rmdir_args(nil)^.a_vp)),Byte(-1)); vop_symlink_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_symlink_args(nil)^.a_dvp)),Byte(-1)); vop_readdir_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_readdir_args(nil)^.a_vp)),Byte(-1)); vop_readlink_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_readlink_args(nil)^.a_vp)),Byte(-1)); vop_inactive_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_inactive_args(nil)^.a_vp)),Byte(-1)); vop_reclaim_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_reclaim_args(nil)^.a_vp)),Byte(-1)); vop_lock1_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_lock1_args(nil)^.a_vp)),Byte(-1)); vop_unlock_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_unlock_args(nil)^.a_vp)),Byte(-1)); vop_bmap_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_bmap_args(nil)^.a_vp)),Byte(-1)); vop_strategy_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_strategy_args(nil)^.a_vp)),Byte(-1)); vop_getwritemount_vp_offsets:array[0..1] of Byte=(Byte(ptrint(@p_vop_getwritemount_args(nil)^.a_vp)),Byte(-1)); vop_print_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_print_args(nil)^.a_vp)),Byte(-1)); vop_pathconf_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_pathconf_args(nil)^.a_vp)),Byte(-1)); vop_advlock_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_advlock_args(nil)^.a_vp)),Byte(-1)); vop_advlockasync_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_advlockasync_args(nil)^.a_vp)),Byte(-1)); vop_advlockpurge_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_advlockpurge_args(nil)^.a_vp)),Byte(-1)); vop_reallocblks_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_reallocblks_args(nil)^.a_vp)),Byte(-1)); vop_getpages_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_getpages_args(nil)^.a_vp)),Byte(-1)); vop_putpages_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_putpages_args(nil)^.a_vp)),Byte(-1)); vop_vptofh_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_vptofh_args(nil)^.a_vp)),Byte(-1)); vop_vptocnp_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_vptocnp_args(nil)^.a_vp)),Byte(-1)); vop_allocate_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_allocate_args(nil)^.a_vp)),Byte(-1)); vop_unp_bind_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_unp_bind_args(nil)^.a_vp)),Byte(-1)); vop_unp_connect_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_unp_connect_args(nil)^.a_vp)),Byte(-1)); vop_unp_detach_vp_offsets :array[0..1] of Byte=(Byte(ptrint(@p_vop_unp_detach_args(nil)^.a_vp)),Byte(-1)); vop_default_desc:t_vnodeop_desc=( vdesc_name :'default'; vdesc_call :nil; vdesc_vp_offsets :nil; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_islocked_desc:t_vnodeop_desc=( vdesc_name :'vop_islocked'; vdesc_call :@p_vop_vector(nil)^.vop_islocked; vdesc_vp_offsets :@vop_islocked_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_lookup_desc:t_vnodeop_desc=( vdesc_name :'vop_lookup'; vdesc_call :@p_vop_vector(nil)^.vop_lookup; vdesc_vp_offsets :@vop_lookup_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :Integer(ptrint(@p_vop_lookup_args(nil)^.a_vpp)); ); vop_create_desc:t_vnodeop_desc=( vdesc_name :'vop_create'; vdesc_call :@p_vop_vector(nil)^.vop_create; vdesc_vp_offsets :@vop_create_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :Integer(ptrint(@p_vop_create_args(nil)^.a_vpp)); ); vop_whiteout_desc:t_vnodeop_desc=( vdesc_name :'vop_whiteout'; vdesc_call :@p_vop_vector(nil)^.vop_whiteout; vdesc_vp_offsets :@vop_whiteout_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_mknod_desc:t_vnodeop_desc=( vdesc_name :'vop_mknod'; vdesc_call :@p_vop_vector(nil)^.vop_mknod; vdesc_vp_offsets :@vop_mknod_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :Integer(ptrint(@p_vop_mknod_args(nil)^.a_vpp)); ); vop_open_desc:t_vnodeop_desc=( vdesc_name :'vop_open'; vdesc_call :@p_vop_vector(nil)^.vop_open; vdesc_vp_offsets :@vop_open_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_close_desc:t_vnodeop_desc=( vdesc_name :'vop_close'; vdesc_call :@p_vop_vector(nil)^.vop_close; vdesc_vp_offsets :@vop_close_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_access_desc:t_vnodeop_desc=( vdesc_name :'vop_access'; vdesc_call :@p_vop_vector(nil)^.vop_access; vdesc_vp_offsets :@vop_access_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_accessx_desc:t_vnodeop_desc=( vdesc_name :'vop_accessx'; vdesc_call :@p_vop_vector(nil)^.vop_accessx; vdesc_vp_offsets :@vop_accessx_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_getattr_desc:t_vnodeop_desc=( vdesc_name :'vop_getattr'; vdesc_call :@p_vop_vector(nil)^.vop_getattr; vdesc_vp_offsets :@vop_getattr_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_setattr_desc:t_vnodeop_desc=( vdesc_name :'vop_setattr'; vdesc_call :@p_vop_vector(nil)^.vop_setattr; vdesc_vp_offsets :@vop_setattr_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_markatime_desc:t_vnodeop_desc=( vdesc_name :'vop_markatime'; vdesc_call :@p_vop_vector(nil)^.vop_markatime; vdesc_vp_offsets :@vop_markatime_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_read_desc:t_vnodeop_desc=( vdesc_name :'vop_read'; vdesc_call :@p_vop_vector(nil)^.vop_read; vdesc_vp_offsets :@vop_read_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_write_desc:t_vnodeop_desc=( vdesc_name :'vop_write'; vdesc_call :@p_vop_vector(nil)^.vop_write; vdesc_vp_offsets :@vop_write_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_ioctl_desc:t_vnodeop_desc=( vdesc_name :'vop_ioctl'; vdesc_call :@p_vop_vector(nil)^.vop_ioctl; vdesc_vp_offsets :@vop_ioctl_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_poll_desc:t_vnodeop_desc=( vdesc_name :'vop_poll'; vdesc_call :@p_vop_vector(nil)^.vop_poll; vdesc_vp_offsets :@vop_poll_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_kqfilter_desc:t_vnodeop_desc=( vdesc_name :'vop_kqfilter'; vdesc_call :@p_vop_vector(nil)^.vop_kqfilter; vdesc_vp_offsets :@vop_kqfilter_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_revoke_desc:t_vnodeop_desc=( vdesc_name :'vop_revoke'; vdesc_call :@p_vop_vector(nil)^.vop_revoke; vdesc_vp_offsets :@vop_revoke_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_fsync_desc:t_vnodeop_desc=( vdesc_name :'vop_fsync'; vdesc_call :@p_vop_vector(nil)^.vop_fsync; vdesc_vp_offsets :@vop_fsync_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_remove_desc:t_vnodeop_desc=( vdesc_name :'vop_remove'; vdesc_call :@p_vop_vector(nil)^.vop_remove; vdesc_vp_offsets :@vop_remove_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_link_desc:t_vnodeop_desc=( vdesc_name :'vop_link'; vdesc_call :@p_vop_vector(nil)^.vop_link; vdesc_vp_offsets :@vop_link_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_rename_desc:t_vnodeop_desc=( vdesc_name :'vop_rename'; vdesc_call :@p_vop_vector(nil)^.vop_rename; vdesc_vp_offsets :@vop_rename_vp_offsets; vdesc_flags :VDESC_VP0_WILLRELE or VDESC_VP1_WILLRELE or VDESC_VP2_WILLRELE or VDESC_VP3_WILLRELE; vdesc_vpp_offset :-1; ); vop_mkdir_desc:t_vnodeop_desc=( vdesc_name :'vop_mkdir'; vdesc_call :@p_vop_vector(nil)^.vop_mkdir; vdesc_vp_offsets :@vop_mkdir_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :Integer(ptrint(@p_vop_mkdir_args(nil)^.a_vpp)); ); vop_rmdir_desc:t_vnodeop_desc=( vdesc_name :'vop_rmdir'; vdesc_call :@p_vop_vector(nil)^.vop_rmdir; vdesc_vp_offsets :@vop_rmdir_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_symlink_desc:t_vnodeop_desc=( vdesc_name :'vop_symlink'; vdesc_call :@p_vop_vector(nil)^.vop_symlink; vdesc_vp_offsets :@vop_symlink_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :Integer(ptrint(@p_vop_symlink_args(nil)^.a_vpp)); ); vop_readdir_desc:t_vnodeop_desc=( vdesc_name :'vop_readdir'; vdesc_call :@p_vop_vector(nil)^.vop_readdir; vdesc_vp_offsets :@vop_readdir_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_readlink_desc:t_vnodeop_desc=( vdesc_name :'vop_readlink'; vdesc_call :@p_vop_vector(nil)^.vop_readlink; vdesc_vp_offsets :@vop_readlink_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_inactive_desc:t_vnodeop_desc=( vdesc_name :'vop_inactive'; vdesc_call :@p_vop_vector(nil)^.vop_inactive; vdesc_vp_offsets :@vop_inactive_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_reclaim_desc:t_vnodeop_desc=( vdesc_name :'vop_reclaim'; vdesc_call :@p_vop_vector(nil)^.vop_reclaim; vdesc_vp_offsets :@vop_reclaim_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_lock1_desc:t_vnodeop_desc=( vdesc_name :'vop_lock1'; vdesc_call :@p_vop_vector(nil)^.vop_lock1; vdesc_vp_offsets :@vop_lock1_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_unlock_desc:t_vnodeop_desc=( vdesc_name :'vop_unlock'; vdesc_call :@p_vop_vector(nil)^.vop_unlock; vdesc_vp_offsets :@vop_unlock_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_bmap_desc:t_vnodeop_desc=( vdesc_name :'vop_bmap'; vdesc_call :@p_vop_vector(nil)^.vop_bmap; vdesc_vp_offsets :@vop_bmap_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_strategy_desc:t_vnodeop_desc=( vdesc_name :'vop_strategy'; vdesc_call :@p_vop_vector(nil)^.vop_strategy; vdesc_vp_offsets :@vop_strategy_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_getwritemount_desc:t_vnodeop_desc=( vdesc_name :'vop_getwritemount'; vdesc_call :@p_vop_vector(nil)^.vop_getwritemount; vdesc_vp_offsets :@vop_getwritemount_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_print_desc:t_vnodeop_desc=( vdesc_name :'vop_print'; vdesc_call :@p_vop_vector(nil)^.vop_print; vdesc_vp_offsets :@vop_print_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_pathconf_desc:t_vnodeop_desc=( vdesc_name :'vop_pathconf'; vdesc_call :@p_vop_vector(nil)^.vop_pathconf; vdesc_vp_offsets :@vop_pathconf_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_advlock_desc:t_vnodeop_desc=( vdesc_name :'vop_advlock'; vdesc_call :@p_vop_vector(nil)^.vop_advlock; vdesc_vp_offsets :@vop_advlock_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_advlockasync_desc:t_vnodeop_desc=( vdesc_name :'vop_advlockasync'; vdesc_call :@p_vop_vector(nil)^.vop_advlockasync; vdesc_vp_offsets :@vop_advlockasync_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_advlockpurge_desc:t_vnodeop_desc=( vdesc_name :'vop_advlockpurge'; vdesc_call :@p_vop_vector(nil)^.vop_advlockpurge; vdesc_vp_offsets :@vop_advlockpurge_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_reallocblks_desc:t_vnodeop_desc=( vdesc_name :'vop_reallocblks'; vdesc_call :@p_vop_vector(nil)^.vop_reallocblks; vdesc_vp_offsets :@vop_reallocblks_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_getpages_desc:t_vnodeop_desc=( vdesc_name :'vop_getpages'; vdesc_call :@p_vop_vector(nil)^.vop_getpages; vdesc_vp_offsets :@vop_getpages_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_putpages_desc:t_vnodeop_desc=( vdesc_name :'vop_putpages'; vdesc_call :@p_vop_vector(nil)^.vop_putpages; vdesc_vp_offsets :@vop_putpages_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_vptofh_desc:t_vnodeop_desc=( vdesc_name :'vop_vptofh'; vdesc_call :@p_vop_vector(nil)^.vop_vptofh; vdesc_vp_offsets :@vop_vptofh_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_vptocnp_desc:t_vnodeop_desc=( vdesc_name :'vop_vptocnp'; vdesc_call :@p_vop_vector(nil)^.vop_vptocnp; vdesc_vp_offsets :@vop_vptocnp_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :Integer(ptrint(@p_vop_vptocnp_args(nil)^.a_vpp)); ); vop_allocate_desc:t_vnodeop_desc=( vdesc_name :'vop_allocate'; vdesc_call :@p_vop_vector(nil)^.vop_allocate; vdesc_vp_offsets :@vop_allocate_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_unp_bind_desc:t_vnodeop_desc=( vdesc_name :'vop_unp_bind'; vdesc_call :@p_vop_vector(nil)^.vop_unp_bind; vdesc_vp_offsets :@vop_unp_bind_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_unp_connect_desc:t_vnodeop_desc=( vdesc_name :'vop_unp_connect'; vdesc_call :@p_vop_vector(nil)^.vop_unp_connect; vdesc_vp_offsets :@vop_unp_connect_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); vop_unp_detach_desc:t_vnodeop_desc=( vdesc_name :'vop_unp_detach'; vdesc_call :@p_vop_vector(nil)^.vop_unp_detach; vdesc_vp_offsets :@vop_unp_detach_vp_offsets; vdesc_flags :0; vdesc_vpp_offset :-1; ); implementation function get_vp_cb(vp:p_vnode;offset:Pointer):Pointer; inline; var v:p_vop_vector; p:Pointer; begin Result:=nil; if (vp=nil) then Exit; v:=vp^.v_op; while (v<>nil) do begin p:=PPointer(Pointer(v)+ptrint(offset))^; if (p<>nil) then begin Exit(p); end; p:=v^.vop_bypass; if (p<>nil) then begin Exit(p); end; v:=v^.vop_default; end; end; function VOP_ISLOCKED(vp:p_vnode):Integer; var c:Pointer; a:vop_islocked_args; s:Boolean; begin c:=get_vp_cb(vp,vop_islocked_desc.vdesc_call); Assert(c<>nil,'VOP_ISLOCKED'); a.a_gen:=@vop_islocked_desc; a.a_vp :=vp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_islocked_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_LOOKUP(dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname):Integer; var c:Pointer; a:vop_lookup_args; s:Boolean; begin c:=get_vp_cb(dvp,vop_lookup_desc.vdesc_call); Assert(c<>nil,'VOP_LOOKUP'); a.a_gen:=@vop_lookup_desc; a.a_dvp:=dvp; a.a_vpp:=vpp; a.a_cnp:=cnp; s:=VFS_PROLOGUE(dvp^.v_mount); Result:=vop_lookup_t(c)(@a); VFS_EPILOGUE(s); end; procedure vop_create_post(ap:p_vop_create_args;rc:Integer); external; function VOP_CREATE(dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname;vap:p_vattr):Integer; var c:Pointer; a:vop_create_args; s:Boolean; begin c:=get_vp_cb(dvp,vop_create_desc.vdesc_call); Assert(c<>nil,'VOP_CREATE'); a.a_gen:=@vop_create_desc; a.a_dvp:=dvp; a.a_vpp:=vpp; a.a_cnp:=cnp; a.a_vap:=vap; s:=VFS_PROLOGUE(dvp^.v_mount); Result:=vop_create_t(c)(@a); VFS_EPILOGUE(s); vop_create_post(@a,Result); end; function VOP_WHITEOUT(dvp:p_vnode;cnp:p_componentname;flags:Integer):Integer; var c:Pointer; a:vop_whiteout_args; s:Boolean; begin c:=get_vp_cb(dvp,vop_whiteout_desc.vdesc_call); Assert(c<>nil,'VOP_WHITEOUT'); a.a_gen :=@vop_whiteout_desc; a.a_dvp :=dvp; a.a_cnp :=cnp; a.a_flags:=flags; s:=VFS_PROLOGUE(dvp^.v_mount); Result:=vop_whiteout_t(c)(@a); VFS_EPILOGUE(s); end; procedure vop_mknod_post(ap:p_vop_mknod_args;rc:Integer); external; function VOP_MKNOD(dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname;vap:p_vattr):Integer; var c:Pointer; a:vop_mknod_args; s:Boolean; begin c:=get_vp_cb(dvp,vop_mknod_desc.vdesc_call); Assert(c<>nil,'VOP_MKNOD'); a.a_gen:=@vop_mknod_desc; a.a_dvp:=dvp; a.a_vpp:=vpp; a.a_cnp:=cnp; a.a_vap:=vap; s:=VFS_PROLOGUE(dvp^.v_mount); Result:=vop_mknod_t(c)(@a); VFS_EPILOGUE(s); vop_mknod_post(@a,Result); end; function VOP_OPEN(vp:p_vnode;mode:Integer;fp:p_file):Integer; var c:Pointer; a:vop_open_args; s:Boolean; begin c:=get_vp_cb(vp,vop_open_desc.vdesc_call); Assert(c<>nil,'VOP_OPEN'); a.a_gen :=@vop_open_desc; a.a_vp :=vp; a.a_mode:=mode; a.a_fp :=fp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_open_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_CLOSE(vp:p_vnode;fflag:Integer):Integer; var c:Pointer; a:vop_close_args; s:Boolean; begin c:=get_vp_cb(vp,vop_close_desc.vdesc_call); Assert(c<>nil,'VOP_CLOSE'); a.a_gen :=@vop_close_desc; a.a_vp :=vp; a.a_fflag:=fflag; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_close_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_ACCESS(vp:p_vnode;accmode:accmode_t):Integer; var c:Pointer; a:vop_access_args; s:Boolean; begin c:=get_vp_cb(vp,vop_access_desc.vdesc_call); Assert(c<>nil,'VOP_ACCESS'); a.a_gen :=@vop_access_desc; a.a_vp :=vp; a.a_accmode:=accmode; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_access_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_ACCESSX(vp:p_vnode;accmode:accmode_t):Integer; var c:Pointer; a:vop_accessx_args; s:Boolean; begin c:=get_vp_cb(vp,vop_accessx_desc.vdesc_call); Assert(c<>nil,'VOP_ACCESSX'); a.a_gen :=@vop_accessx_desc; a.a_vp :=vp; a.a_accmode:=accmode; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_accessx_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_GETATTR(vp:p_vnode;vap:p_vattr):Integer; var c:Pointer; a:vop_getattr_args; s:Boolean; begin c:=get_vp_cb(vp,vop_getattr_desc.vdesc_call); Assert(c<>nil,'VOP_GETATTR'); a.a_gen:=@vop_getattr_desc; a.a_vp :=vp; a.a_vap:=vap; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_getattr_t(c)(@a); VFS_EPILOGUE(s); end; procedure vop_setattr_post(ap:p_vop_setattr_args;rc:Integer); external; function VOP_SETATTR(vp:p_vnode;vap:p_vattr):Integer; var c:Pointer; a:vop_setattr_args; s:Boolean; begin c:=get_vp_cb(vp,vop_setattr_desc.vdesc_call); Assert(c<>nil,'VOP_SETATTR'); a.a_gen:=@vop_setattr_desc; a.a_vp :=vp; a.a_vap:=vap; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_setattr_t(c)(@a); VFS_EPILOGUE(s); vop_setattr_post(@a,Result); end; function VOP_MARKATIME(vp:p_vnode):Integer; var c:Pointer; a:vop_markatime_args; s:Boolean; begin c:=get_vp_cb(vp,vop_markatime_desc.vdesc_call); Assert(c<>nil,'VOP_MARKATIME'); a.a_gen:=@vop_markatime_desc; a.a_vp :=vp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_markatime_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_READ(vp:p_vnode;uio:p_uio;ioflag:Integer):Integer; var c:Pointer; a:vop_read_args; s:Boolean; begin c:=get_vp_cb(vp,vop_read_desc.vdesc_call); Assert(c<>nil,'VOP_READ'); a.a_gen :=@vop_read_desc; a.a_vp :=vp; a.a_uio :=uio; a.a_ioflag:=ioflag; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_read_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_WRITE_PRE(ap:p_vop_write_args;var osize,ooffset:Int64):Integer; external; procedure VOP_WRITE_POST(ap:p_vop_write_args;ret:Integer;var osize,ooffset:Int64); external; function VOP_WRITE(vp:p_vnode;uio:p_uio;ioflag:Integer):Integer; var osize,ooffset:Int64; c:Pointer; a:vop_write_args; s:Boolean; begin c:=get_vp_cb(vp,vop_write_desc.vdesc_call); Assert(c<>nil,'VOP_WRITE'); a.a_gen :=@vop_write_desc; a.a_vp :=vp; a.a_uio :=uio; a.a_ioflag:=ioflag; osize :=0; ooffset:=0; VOP_WRITE_PRE(@a,osize,ooffset); s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_write_t(c)(@a); VFS_EPILOGUE(s); VOP_WRITE_POST(@a,Result,osize,ooffset); end; function VOP_IOCTL(vp:p_vnode;command:PtrUint;data:Pointer;fflag:Integer):Integer; var c:Pointer; a:vop_ioctl_args; s:Boolean; begin c:=get_vp_cb(vp,vop_ioctl_desc.vdesc_call); Assert(c<>nil,'VOP_IOCTL'); a.a_gen :=@vop_ioctl_desc; a.a_vp :=vp; a.a_command:=command; a.a_data :=data; a.a_fflag :=fflag; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_ioctl_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_POLL(vp:p_vnode;events:Integer):Integer; var c:Pointer; a:vop_poll_args; s:Boolean; begin c:=get_vp_cb(vp,vop_poll_desc.vdesc_call); Assert(c<>nil,'VOP_POLL'); a.a_gen :=@vop_poll_desc; a.a_vp :=vp; a.a_events:=events; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_poll_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_KQFILTER(vp:p_vnode;kn:p_knote):Integer; var c:Pointer; a:vop_kqfilter_args; s:Boolean; begin c:=get_vp_cb(vp,vop_kqfilter_desc.vdesc_call); Assert(c<>nil,'VOP_KQFILTER'); a.a_gen:=@vop_kqfilter_desc; a.a_vp :=vp; a.a_kn :=kn; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_kqfilter_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_REVOKE(vp:p_vnode;flags:Integer):Integer; var c:Pointer; a:vop_revoke_args; s:Boolean; begin c:=get_vp_cb(vp,vop_revoke_desc.vdesc_call); Assert(c<>nil,'VOP_REVOKE'); a.a_gen :=@vop_revoke_desc; a.a_vp :=vp; a.a_flags:=flags; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_revoke_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_FSYNC(vp:p_vnode;waitfor:Integer):Integer; var c:Pointer; a:vop_fsync_args; s:Boolean; begin c:=get_vp_cb(vp,vop_fsync_desc.vdesc_call); Assert(c<>nil,'VOP_FSYNC'); a.a_gen :=@vop_fsync_desc; a.a_vp :=vp; a.a_waitfor:=waitfor; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_fsync_t(c)(@a); VFS_EPILOGUE(s); end; procedure vop_remove_post(ap:p_vop_remove_args;rc:Integer); external; function VOP_REMOVE(dvp:p_vnode;vp:p_vnode;cnp:p_componentname):Integer; var c:Pointer; a:vop_remove_args; s:Boolean; begin c:=get_vp_cb(dvp,vop_remove_desc.vdesc_call); Assert(c<>nil,'VOP_REMOVE'); a.a_gen:=@vop_remove_desc; a.a_dvp:=dvp; a.a_vp :=vp; a.a_cnp:=cnp; s:=VFS_PROLOGUE(dvp^.v_mount); Result:=vop_remove_t(c)(@a); VFS_EPILOGUE(s); vop_remove_post(@a,Result); end; procedure vop_link_post(ap:p_vop_link_args;rc:Integer); external; function VOP_LINK(tdvp:p_vnode;vp:p_vnode;cnp:p_componentname):Integer; var c:Pointer; a:vop_link_args; s:Boolean; begin c:=get_vp_cb(tdvp,vop_link_desc.vdesc_call); Assert(c<>nil,'VOP_LINK'); a.a_gen :=@vop_link_desc; a.a_tdvp:=tdvp; a.a_vp :=vp; a.a_cnp :=cnp; s:=VFS_PROLOGUE(tdvp^.v_mount); Result:=vop_link_t(c)(@a); VFS_EPILOGUE(s); vop_link_post(@a,Result); end; procedure vop_rename_pre (ap:p_vop_rename_args); external; procedure vop_rename_post(ap:p_vop_rename_args;rc:Integer); external; function VOP_RENAME(fdvp:p_vnode;fvp:p_vnode;fcnp:p_componentname;tdvp:p_vnode;tvp:p_vnode;tcnp:p_componentname):Integer; var c:Pointer; a:vop_rename_args; s:Boolean; begin c:=get_vp_cb(fdvp,vop_rename_desc.vdesc_call); Assert(c<>nil,'VOP_RENAME'); a.a_gen :=@vop_rename_desc; a.a_fdvp:=fdvp; a.a_fvp :=fvp; a.a_fcnp:=fcnp; a.a_tdvp:=tdvp; a.a_tvp :=tvp; a.a_tcnp:=tcnp; vop_rename_pre(@a); s:=VFS_PROLOGUE(fdvp^.v_mount); Result:=vop_rename_t(c)(@a); VFS_EPILOGUE(s); vop_rename_post(@a,Result); end; procedure vop_mkdir_post(ap:p_vop_mkdir_args;rc:Integer); external; function VOP_MKDIR(dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname;vap:p_vattr):Integer; var c:Pointer; a:vop_mkdir_args; s:Boolean; begin c:=get_vp_cb(dvp,vop_mkdir_desc.vdesc_call); Assert(c<>nil,'VOP_MKDIR'); a.a_gen:=@vop_mkdir_desc; a.a_dvp:=dvp; a.a_vpp:=vpp; a.a_cnp:=cnp; a.a_vap:=vap; s:=VFS_PROLOGUE(dvp^.v_mount); Result:=vop_mkdir_t(c)(@a); VFS_EPILOGUE(s); vop_mkdir_post(@a,Result); end; procedure vop_rmdir_post(ap:p_vop_rmdir_args;rc:Integer); external; function VOP_RMDIR(dvp:p_vnode;vp:p_vnode;cnp:p_componentname):Integer; var c:Pointer; a:vop_rmdir_args; s:Boolean; begin c:=get_vp_cb(dvp,vop_rmdir_desc.vdesc_call); Assert(c<>nil,'VOP_RMDIR'); a.a_gen:=@vop_rmdir_desc; a.a_dvp:=dvp; a.a_vp :=vp; a.a_cnp:=cnp; s:=VFS_PROLOGUE(dvp^.v_mount); Result:=vop_rmdir_t(c)(@a); VFS_EPILOGUE(s); vop_rmdir_post(@a,Result); end; procedure vop_symlink_post(ap:p_vop_symlink_args;rc:Integer); external; function VOP_SYMLINK(dvp:p_vnode;vpp:pp_vnode;cnp:p_componentname;vap:p_vattr;target:PChar):Integer; var c:Pointer; a:vop_symlink_args; s:Boolean; begin c:=get_vp_cb(dvp,vop_symlink_desc.vdesc_call); Assert(c<>nil,'VOP_SYMLINK'); a.a_gen :=@vop_symlink_desc; a.a_dvp :=dvp; a.a_vpp :=vpp; a.a_cnp :=cnp; a.a_vap :=vap; a.a_target:=target; s:=VFS_PROLOGUE(dvp^.v_mount); Result:=vop_symlink_t(c)(@a); VFS_EPILOGUE(s); vop_symlink_post(@a,Result); end; function VOP_READDIR(vp:p_vnode;uio:p_uio;eofflag:PInteger;ncookies:PInteger;cookies:PPPtrUint):Integer; var c:Pointer; a:vop_readdir_args; s:Boolean; begin c:=get_vp_cb(vp,vop_readdir_desc.vdesc_call); Assert(c<>nil,'VOP_READDIR'); a.a_gen :=@vop_readdir_desc; a.a_vp :=vp; a.a_uio :=uio; a.a_eofflag :=eofflag; a.a_ncookies:=ncookies; a.a_cookies :=cookies; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_readdir_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_READLINK(vp:p_vnode;uio:p_uio):Integer; var c:Pointer; a:vop_readlink_args; s:Boolean; begin c:=get_vp_cb(vp,vop_readlink_desc.vdesc_call); Assert(c<>nil,'VOP_READLINK'); a.a_gen:=@vop_readlink_desc; a.a_vp :=vp; a.a_uio:=uio; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_readlink_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_INACTIVE(vp:p_vnode):Integer; var c:Pointer; a:vop_inactive_args; s:Boolean; begin c:=get_vp_cb(vp,vop_inactive_desc.vdesc_call); Assert(c<>nil,'VOP_INACTIVE'); a.a_gen:=@vop_inactive_desc; a.a_vp :=vp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_inactive_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_RECLAIM(vp:p_vnode):Integer; var c:Pointer; a:vop_reclaim_args; s:Boolean; begin c:=get_vp_cb(vp,vop_reclaim_desc.vdesc_call); Assert(c<>nil,'VOP_RECLAIM'); a.a_gen:=@vop_reclaim_desc; a.a_vp :=vp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_reclaim_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_LOCK(vp:p_vnode;flags:Integer;_file:PChar;line:Integer):Integer; var c:Pointer; a:vop_lock1_args; s:Boolean; begin c:=get_vp_cb(vp,vop_lock1_desc.vdesc_call); Assert(c<>nil,'VOP_LOCK'); a.a_gen :=@vop_lock1_desc; a.a_vp :=vp; a.a_flags:=flags; a.a_file :=_file; a.a_line :=line; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_lock1_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_UNLOCK(vp:p_vnode;flags:Integer):Integer; var c:Pointer; a:vop_unlock_args; s:Boolean; begin c:=get_vp_cb(vp,vop_unlock_desc.vdesc_call); Assert(c<>nil,'VOP_UNLOCK'); a.a_gen :=@vop_unlock_desc; a.a_vp :=vp; a.a_flags:=flags; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_unlock_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_BMAP(vp:p_vnode;bn:daddr_t;bop:pp_bufobj;bnp:p_daddr_t;runp:PInteger;runb:PInteger):Integer; var c:Pointer; a:vop_bmap_args; s:Boolean; begin c:=get_vp_cb(vp,vop_bmap_desc.vdesc_call); Assert(c<>nil,'VOP_BMAP'); a.a_gen :=@vop_bmap_desc; a.a_vp :=vp; a.a_bn :=bn; a.a_bop :=bop; a.a_bnp :=bnp; a.a_runp:=runp; a.a_runb:=runb; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_bmap_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_STRATEGY(vp:p_vnode;bp:p_buf):Integer; var c:Pointer; a:vop_strategy_args; s:Boolean; begin c:=get_vp_cb(vp,vop_strategy_desc.vdesc_call); Assert(c<>nil,'VOP_STRATEGY'); a.a_gen:=@vop_strategy_desc; a.a_vp :=vp; a.a_bp :=bp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_strategy_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_GETWRITEMOUNT(vp:p_vnode;mpp:pp_mount):Integer; var c:Pointer; a:vop_getwritemount_args; s:Boolean; begin c:=get_vp_cb(vp,vop_getwritemount_desc.vdesc_call); Assert(c<>nil,'VOP_GETWRITEMOUNT'); a.a_gen:=@vop_getwritemount_desc; a.a_vp :=vp; a.a_mpp:=mpp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_getwritemount_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_PRINT(vp:p_vnode):Integer; var c:Pointer; a:vop_print_args; s:Boolean; begin c:=get_vp_cb(vp,vop_print_desc.vdesc_call); Assert(c<>nil,'VOP_PRINT'); a.a_gen:=@vop_print_desc; a.a_vp :=vp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_print_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_PATHCONF(vp:p_vnode;name:Integer;retval:PPtrUint):Integer; var c:Pointer; a:vop_pathconf_args; s:Boolean; begin c:=get_vp_cb(vp,vop_pathconf_desc.vdesc_call); Assert(c<>nil,'VOP_PATHCONF'); a.a_gen :=@vop_pathconf_desc; a.a_vp :=vp; a.a_name :=name; a.a_retval:=retval; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_pathconf_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_ADVLOCK(vp:p_vnode;id:Pointer;op:Integer;fl:p_flock;flags:Integer):Integer; var c:Pointer; a:vop_advlock_args; s:Boolean; begin c:=get_vp_cb(vp,vop_advlock_desc.vdesc_call); Assert(c<>nil,'VOP_ADVLOCK'); a.a_gen :=@vop_advlock_desc; a.a_vp :=vp; a.a_id :=id; a.a_op :=op; a.a_fl :=fl; a.a_flags:=flags; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_advlock_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_ADVLOCKASYNC(vp:p_vnode;id:Pointer;op:Integer;fl:p_flock;flags:Integer;task:p_task;cookiep:PPointer):Integer; var c:Pointer; a:vop_advlockasync_args; s:Boolean; begin c:=get_vp_cb(vp,vop_advlockasync_desc.vdesc_call); Assert(c<>nil,'VOP_ADVLOCKASYNC'); a.a_gen :=@vop_advlockasync_desc; a.a_vp :=vp; a.a_id :=id; a.a_op :=op; a.a_fl :=fl; a.a_flags :=flags; a.a_task :=task; a.a_cookiep:=cookiep; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_advlockasync_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_ADVLOCKPURGE(vp:p_vnode):Integer; var c:Pointer; a:vop_advlockpurge_args; s:Boolean; begin c:=get_vp_cb(vp,vop_advlockpurge_desc.vdesc_call); Assert(c<>nil,'VOP_ADVLOCKPURGE'); a.a_gen:=@vop_advlockpurge_desc; a.a_vp :=vp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_advlockpurge_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_REALLOCBLKS(vp:p_vnode;buflist:p_cluster_save):Integer; var c:Pointer; a:vop_reallocblks_args; s:Boolean; begin c:=get_vp_cb(vp,vop_reallocblks_desc.vdesc_call); Assert(c<>nil,'VOP_REALLOCBLKS'); a.a_gen :=@vop_reallocblks_desc; a.a_vp :=vp; a.a_buflist:=buflist; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_reallocblks_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_GETPAGES(vp:p_vnode;m:p_vm_page_t;count:Integer;reqpage:Integer;offset:PtrUint):Integer; var c:Pointer; a:vop_getpages_args; s:Boolean; begin c:=get_vp_cb(vp,vop_getpages_desc.vdesc_call); Assert(c<>nil,'VOP_GETPAGES'); a.a_gen :=@vop_getpages_desc; a.a_vp :=vp; a.a_m :=m; a.a_count :=count; a.a_reqpage:=reqpage; a.a_offset :=offset; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_getpages_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_PUTPAGES(vp:p_vnode;m:p_vm_page_t;count:Integer;sync:Integer;rtvals:PInteger;offset:PtrUint):Integer; var c:Pointer; a:vop_putpages_args; s:Boolean; begin c:=get_vp_cb(vp,vop_putpages_desc.vdesc_call); Assert(c<>nil,'VOP_PUTPAGES'); a.a_gen :=@vop_putpages_desc; a.a_vp :=vp; a.a_m :=m; a.a_count :=count; a.a_sync :=sync; a.a_rtvals:=rtvals; a.a_offset:=offset; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_putpages_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_VPTOFH(vp:p_vnode;fhp:p_fid):Integer; var c:Pointer; a:vop_vptofh_args; s:Boolean; begin c:=get_vp_cb(vp,vop_vptofh_desc.vdesc_call); Assert(c<>nil,'VOP_VPTOFH'); a.a_gen:=@vop_vptofh_desc; a.a_vp :=vp; a.a_fhp:=fhp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_vptofh_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_VPTOCNP(vp:p_vnode;vpp:pp_vnode;buf:PChar;buflen:PInteger):Integer; var c:Pointer; a:vop_vptocnp_args; s:Boolean; begin c:=get_vp_cb(vp,vop_vptocnp_desc.vdesc_call); Assert(c<>nil,'VOP_VPTOCNP'); a.a_gen :=@vop_vptocnp_desc; a.a_vp :=vp; a.a_vpp :=vpp; a.a_buf :=buf; a.a_buflen:=buflen; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_vptocnp_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_ALLOCATE(vp:p_vnode;offset:PPtrUint;len:PPtrUint):Integer; var c:Pointer; a:vop_allocate_args; s:Boolean; begin c:=get_vp_cb(vp,vop_allocate_desc.vdesc_call); Assert(c<>nil,'VOP_ALLOCATE'); a.a_gen :=@vop_allocate_desc; a.a_vp :=vp; a.a_offset:=offset; a.a_len :=len; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_allocate_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_UNP_BIND(vp:p_vnode;socket:p_socket):Integer; var c:Pointer; a:vop_unp_bind_args; s:Boolean; begin c:=get_vp_cb(vp,vop_unp_bind_desc.vdesc_call); Assert(c<>nil,'VOP_UNP_BIND'); a.a_gen :=@vop_unp_bind_desc; a.a_vp :=vp; a.a_socket:=socket; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_unp_bind_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_UNP_CONNECT(vp:p_vnode;socket:pp_socket):Integer; var c:Pointer; a:vop_unp_connect_args; s:Boolean; begin c:=get_vp_cb(vp,vop_unp_connect_desc.vdesc_call); Assert(c<>nil,'VOP_UNP_CONNECT'); a.a_gen :=@vop_unp_connect_desc; a.a_vp :=vp; a.a_socket:=socket; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_unp_connect_t(c)(@a); VFS_EPILOGUE(s); end; function VOP_UNP_DETACH(vp:p_vnode):Integer; var c:Pointer; a:vop_unp_detach_args; s:Boolean; begin c:=get_vp_cb(vp,vop_unp_detach_desc.vdesc_call); Assert(c<>nil,'VOP_UNP_DETACH'); a.a_gen:=@vop_unp_detach_desc; a.a_vp :=vp; s:=VFS_PROLOGUE(vp^.v_mount); Result:=vop_unp_detach_t(c)(@a); VFS_EPILOGUE(s); end; end.