亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
【求助】關(guān)于內(nèi)核基于分頁機(jī)制讀取文件時讀取最后一頁的問題
[打印本頁]
作者:
kenokanza
時間:
2009-06-07 08:37
標(biāo)題:
【求助】關(guān)于內(nèi)核基于分頁機(jī)制讀取文件時讀取最后一頁的問題
1
假設(shè)一個文件是5000字節(jié),前4096字節(jié)用一個頁讀取后,剩下的4字節(jié)用第二頁讀取,但剩下的第二頁中那4092字節(jié)填充什么呢?
2
另外,內(nèi)核通過哪個成員變量來確定最后一頁里有效數(shù)據(jù)(那4kb)的偏移量?
是用宏bio_offset么,但它里面的參數(shù)是bio,不是page啊
3
在讀取文件時,每個page的數(shù)據(jù)來自哪個路徑下的哪個文件,是如果判斷的呢?
文件名是否是 結(jié)構(gòu)體file指向的 file->f_dentry->d_name.name?
4
在mpage_end_io_read函數(shù)中,struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1;
bvec是先指向最后一個bio_vec,然后再--bvec,不明白這樣做是為什么?
多謝指教~~
[
本帖最后由 kenokanza 于 2009-6-7 23:54 編輯
]
作者:
goter
時間:
2009-06-07 08:59
1,其他4092用null來填充
2,偏移可以用一段程序來得出
ext2,ext3,minix文件系統(tǒng)中都有
static unsigned minix_last_byte(struct inode *inode, unsigned long page_nr){
unsigned last_byte = inode->i_size;
last_byte -= page_nr << PAGE_CACHE_SHIFT;
if (last_byte > PAGE_CACHE_SIZE)
last_byte = PAGE_CACHE_SIZE;
return last_byte;
}
復(fù)制代碼
作者:
accessory
時間:
2009-06-07 22:50
“假設(shè)一個文件是5000kb,前4096kb用一個頁讀取后,剩下的4kb用第二頁讀取,但剩下的第二頁中那4092kb填充什么呢?”
這一句里的所有K都應(yīng)該去掉才對。
作者:
kenokanza
時間:
2009-06-07 23:45
標(biāo)題:
回復(fù) #3 accessory 的帖子
是是,馬虎了,不好意思
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2