程序
1,基於linux 2.6.26的分析
2.分析linux read函數的實現過程,其入口函數是fs/read _ write.c的sys_read。
3.在哪個文件中->;f _ op-& gt;Read定義為do_sync_read函數。
4.sys _ read->位於fs/read _ write . c;VFS _ read-& gt;同步讀取
filp-& gt;f _ op-& gt;aio_read的定義從file_operation的定義可以看出是generic_file_aio_read。sys _ read-& gt;VFS _ read-& gt;do _ sync _ read-& gt;Generic_file_aio_read,位於mm/filemap.c
6.如果在目標文件中定義了O_DIRECT標誌,則直接跳過緩沖層,使用generic_file_direct_IO函數將讀取請求直接傳遞給塊設備驅動層;如果沒有定義,do _ generic _ file _ read (filp,ppos,&;desc,file _ read _ actor);第三個參數read_descriptor_t保存與讀取相關的各種信息,第四個參數file_read_actor用於將數據傳輸到內核緩沖層後復制到用戶層。