-int spec_lookup(),
- spec_open(),
- spec_read(),
- spec_write(),
- spec_strategy(),
- spec_bmap(),
- spec_ioctl(),
- spec_select(),
- spec_lock(),
- spec_unlock(),
- spec_close(),
- spec_print(),
- spec_advlock(),
- spec_ebadf(),
- spec_badop();
-
-int nullop();
-
-struct vnodeops spec_vnodeops = {
- spec_lookup, /* lookup */
- spec_badop, /* create */
- spec_badop, /* mknod */
- spec_open, /* open */
- spec_close, /* close */
- spec_ebadf, /* access */
- spec_ebadf, /* getattr */
- spec_ebadf, /* setattr */
- spec_read, /* read */
- spec_write, /* write */
- spec_ioctl, /* ioctl */
- spec_select, /* select */
- spec_badop, /* mmap */
- nullop, /* fsync */
- spec_badop, /* seek */
- spec_badop, /* remove */
- spec_badop, /* link */
- spec_badop, /* rename */
- spec_badop, /* mkdir */
- spec_badop, /* rmdir */
- spec_badop, /* symlink */
- spec_badop, /* readdir */
- spec_badop, /* readlink */
- spec_badop, /* abortop */
- nullop, /* inactive */
- nullop, /* reclaim */
- spec_lock, /* lock */
- spec_unlock, /* unlock */
- spec_bmap, /* bmap */
- spec_strategy, /* strategy */
- spec_print, /* print */
- nullop, /* islocked */
- spec_advlock, /* advlock */
+int (**spec_vnodeop_p)();
+struct vnodeopv_entry_desc spec_vnodeop_entries[] = {
+ { &vop_default_desc, vn_default_error },
+ { &vop_lookup_desc, spec_lookup }, /* lookup */
+ { &vop_create_desc, spec_create }, /* create */
+ { &vop_mknod_desc, spec_mknod }, /* mknod */
+ { &vop_open_desc, spec_open }, /* open */
+ { &vop_close_desc, spec_close }, /* close */
+ { &vop_access_desc, spec_access }, /* access */
+ { &vop_getattr_desc, spec_getattr }, /* getattr */
+ { &vop_setattr_desc, spec_setattr }, /* setattr */
+ { &vop_read_desc, spec_read }, /* read */
+ { &vop_write_desc, spec_write }, /* write */
+ { &vop_ioctl_desc, spec_ioctl }, /* ioctl */
+ { &vop_select_desc, spec_select }, /* select */
+ { &vop_mmap_desc, spec_mmap }, /* mmap */
+ { &vop_fsync_desc, spec_fsync }, /* fsync */
+ { &vop_seek_desc, spec_seek }, /* seek */
+ { &vop_remove_desc, spec_remove }, /* remove */
+ { &vop_link_desc, spec_link }, /* link */
+ { &vop_rename_desc, spec_rename }, /* rename */
+ { &vop_mkdir_desc, spec_mkdir }, /* mkdir */
+ { &vop_rmdir_desc, spec_rmdir }, /* rmdir */
+ { &vop_symlink_desc, spec_symlink }, /* symlink */
+ { &vop_readdir_desc, spec_readdir }, /* readdir */
+ { &vop_readlink_desc, spec_readlink }, /* readlink */
+ { &vop_abortop_desc, spec_abortop }, /* abortop */
+ { &vop_inactive_desc, spec_inactive }, /* inactive */
+ { &vop_reclaim_desc, spec_reclaim }, /* reclaim */
+ { &vop_lock_desc, spec_lock }, /* lock */
+ { &vop_unlock_desc, spec_unlock }, /* unlock */
+ { &vop_bmap_desc, spec_bmap }, /* bmap */
+ { &vop_strategy_desc, spec_strategy }, /* strategy */
+ { &vop_print_desc, spec_print }, /* print */
+ { &vop_islocked_desc, spec_islocked }, /* islocked */
+ { &vop_pathconf_desc, spec_pathconf }, /* pathconf */
+ { &vop_advlock_desc, spec_advlock }, /* advlock */
+ { &vop_blkatoff_desc, spec_blkatoff }, /* blkatoff */
+ { &vop_valloc_desc, spec_valloc }, /* valloc */
+ { &vop_vfree_desc, spec_vfree }, /* vfree */
+ { &vop_truncate_desc, spec_truncate }, /* truncate */
+ { &vop_update_desc, spec_update }, /* update */
+ { &vop_bwrite_desc, spec_bwrite }, /* bwrite */
+ { (struct vnodeop_desc*)NULL, (int(*)())NULL }