亚洲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)中都有

  1. static unsigned minix_last_byte(struct inode *inode, unsigned long page_nr){
  2.          unsigned last_byte = inode->i_size;

  3.         last_byte -= page_nr << PAGE_CACHE_SHIFT;
  4.          if (last_byte > PAGE_CACHE_SIZE)
  5.                  last_byte = PAGE_CACHE_SIZE;
  6.          return last_byte;
  7. }
復(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