日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

2 FreeBSD 核心( 二 )



2.2.2對(duì)v-node的操作
虛擬文件系統(tǒng)就是通過(guò)對(duì)i-node的抽象化之后的v-node的文件/目錄進(jìn)行io處理 。
為了這個(gè)目的,作為對(duì)v-node的適用處理,有
。從v-node到文件名的查找,返回v-node
。打開(kāi)/關(guān)閉v-node
。檢查是否可能訪問(wèn)v-node
。得到-v-node的屬性
。設(shè)定v-node的屬性
。對(duì)v-node的輸入/輸出
。擴(kuò)展v-node的硬連接和符號(hào)連接
。對(duì)v-node進(jìn)行目錄的作成和刪除
。。。。
由這里開(kāi)始,一共定義了41個(gè) 。
v-node由struct vnode(@sys/vnode.h)里定義,作為類(lèi)別在enum vtype
里面表示出來(lái),一共是9種類(lèi) 。它包含著在各個(gè)文件系統(tǒng)上對(duì)各個(gè)的文件/目錄(包
括特殊)文件進(jìn)行統(tǒng)一識(shí)別的信息 。為了實(shí)現(xiàn)這樣,v-node一連串的操作就是在各
模塊里通過(guò)宏VNODEOP_SET()和核心通訊 。這些操作名和實(shí)現(xiàn)的routine只需要必要
的幾個(gè)對(duì)應(yīng) 。在核心初始化里,vfs_opv_init()(@kern/vfs_init.c)就使從數(shù)據(jù)得
到的號(hào)碼一一對(duì)應(yīng),收集了routine的地址的同一size的配列再進(jìn)行組合 。各個(gè)
v-node就一個(gè)一個(gè)指向這些配列 。對(duì)v-node的操作在vnode_if.h里定義:
它以
VOP_操作名(v-node,...)
的統(tǒng)一形式記述 。

下面是對(duì)v-node的操作的定義source:
------------------------------------------------------------------------
各個(gè)v-node操作(vnodeopv) source
------------------------------------------------------------------------
cd9660_fifoop_opv_desc isofs/cd9660/cd9660_vnops.c
cd9660_specop_opv_desc isofs/cd9660/cd9660_vnops.c
cd9660_vnodeop_opv_desc isofs/cd9660/cd9660_vnops.c
dead_vnodop_opv_desc miscfs/deadfs/dead_devfs_vnops.c
devfs_vnodeop_desc miscfs/devfs/devfs_vnops.c
ext2fs_fifoop_opv_desc gnu/ext2fs/ext2fs_vnops.c
ext2fs_specop_opv_desc gnu/ext2fs/ext2fs_vnops.c
ext2fs_vnodeop_opv_desc gnu/ext2fs/ext2fs_vnops.c
fdesc_vnodeop_opv_desc miscfs/fdesc/fdesc_vnops.c
ffs_fifoop_opv_desc ufs/ffs/ffs_vnops.c
ffs_specop_opv_desc ufs/ffs/ffs_vnops.c
ffs_vnodeop_opv_desc ufs/ffs/ffs_vnops.c
fifo_nfsv2nodeop_opv_desc nfs/nfs_vnops.c
fifo_vnodeop_opv_desc miscfs/fifofs/fifo_vnops.c
kernfs_vnodeop_opv_desc miscfs/kernfs/kernfs_vnops.c
lfs_fifoop_opv_desc ufs/lfs/lfs_vnops.c
lfs_specop_opv_desc ufs/lfs/lfs_vnops.c
lfs_vnodeop_opv_desc ufs/lfs/lfs_vnops.c
mfs_vnodeop_opv_desc ufs/mfs/mfs_vnops.c
msdosfs_vnodeop_opv_desc msdosfs/msdosfs_vnops.c
nfsv2_vnodeop_opv_desc nfs/nfs_vnops.c
null_vnodeop_opv_desc miscfs/nullfs/null_vnops.c
portal_vnodeop_opv_desc miscfs/portal/portal_vnops.c
procfs_vnodeop_opv_desc miscfs/procfs/procfs_vnops.c
spec_nfsv2nodeop_opv_desc nfs/nfs_vnops.c
spec_vnodeop_opv_desc miscfs/specfs/spec_vnops.c
umap_vnodeop_opv_desc miscfs/umapfs/umap_vnops.c
union_vnodeop_opv_desc miscfs/union/union_vnops.c
------------------------------------------------------------------------
這個(gè)基礎(chǔ)上,spec_vnodeop_opv_spec里描述的操作群就是device driver
interface的東西??!

( 本小節(jié)完,待本島主有空再繼續(xù) )



FreeBSD核心探討.6.驅(qū)動(dòng)程序篇

2.3 mount根目錄之前的處理概要
mount根目錄的時(shí)候,main()(@kern/init_main.c)的初始化的過(guò)程從xxx_vfs_mountroot()
(@kern/init_mail.c)被調(diào)用開(kāi)始 。如果處理過(guò)程正常,就對(duì)rootvp設(shè)定包含了root的
v-node 。
。main()的初始化過(guò)程中,configure()(@autoconf.c)被調(diào)用 。在這個(gè),io設(shè)備
初始化完了后,就轉(zhuǎn)移到如下兩個(gè)變量的地址:一個(gè)是mountroot,是處理mount的routine,
另一個(gè)是mountrootvfsops,是處理虛擬文件系統(tǒng)的routine 。在本機(jī)磁盤(pán)中,就進(jìn)入變量
rootdev所指定的disk號(hào)中 。這里就是,假定本機(jī)磁盤(pán)
mountroot vfs_mountroot
mountrootvfsop &ufs_vfsops
rootdev boot disk number

。xxx_vfs_mountroot()(@kern/init_main.c)

推薦閱讀