require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_MISCFS_SPECFS_SPECDEV_H_)) {
    eval 'sub _MISCFS_SPECFS_SPECDEV_H_ () {1;}' unless defined(&_MISCFS_SPECFS_SPECDEV_H_);
    require 'sys/mutex.ph';
    require 'sys/vnode.ph';
    eval 'sub v_specnext () { ($v_specnode->{sn_next});}' unless defined(&v_specnext);
    eval 'sub v_rdev () { ($v_specnode->{sn_rdev});}' unless defined(&v_rdev);
    eval 'sub v_speclockf () { ($v_specnode->{sn_dev}->{sd_lockf});}' unless defined(&v_speclockf);
    eval 'sub spec_seek () { &genfs_nullop;}' unless defined(&spec_seek);
    eval 'sub GENFS_SPECOP_ENTRIES () {{  &vop_parsepath_desc,  &genfs_badop }, {  &vop_lookup_desc,  &spec_lookup }, {  &vop_create_desc,  &genfs_badop }, {  &vop_whiteout_desc,  &genfs_badop }, {  &vop_mknod_desc,  &genfs_badop }, {  &vop_open_desc,  &spec_open }, {  &vop_fallocate_desc,  &genfs_eopnotsupp }, {  &vop_fdiscard_desc,  &spec_fdiscard }, {  &vop_ioctl_desc,  &spec_ioctl }, {  &vop_poll_desc,  &spec_poll }, {  &vop_kqfilter_desc,  &spec_kqfilter }, {  &vop_revoke_desc,  &genfs_revoke }, {  &vop_mmap_desc,  &spec_mmap }, {  &vop_seek_desc,  &spec_seek }, {  &vop_remove_desc,  &genfs_badop }, {  &vop_link_desc,  &genfs_badop }, {  &vop_rename_desc,  &genfs_badop }, {  &vop_mkdir_desc,  &genfs_badop }, {  &vop_rmdir_desc,  &genfs_badop }, {  &vop_symlink_desc,  &genfs_badop }, {  &vop_readdir_desc,  &genfs_badop }, {  &vop_readlink_desc,  &genfs_badop }, {  &vop_abortop_desc,  &genfs_badop }, {  &vop_bmap_desc,  &spec_bmap }, {  &vop_strategy_desc,  &spec_strategy }, {  &vop_pathconf_desc,  &spec_pathconf }, {  &vop_advlock_desc,  &spec_advlock }, {  &vop_getpages_desc,  &genfs_getpages }, {  &vop_putpages_desc,  &genfs_putpages };}' unless defined(&GENFS_SPECOP_ENTRIES);
}
1;
