Kw struct read
Retired DISLab
(버전 사이의 차이)
(새 문서: <uml> @startuml (*)-->SYSCALL_DEFINE3() -->===a=== ===a===-->fdget_pos() ===a===-->vfs_write() -->if"file->f_op->read" -->[ext4 file system일 경우] f_op->write() -->do_sync_write()...) |
|||
(한 사용자의 중간의 편집 2개 숨겨짐) | |||
3번째 줄: | 3번째 줄: | ||
(*)-->SYSCALL_DEFINE3() | (*)-->SYSCALL_DEFINE3() | ||
-->===a=== | -->===a=== | ||
− | ===a===--> | + | ===a===-->fdget() |
− | ===a===--> | + | ===a===-->vfs_read() |
-->if"file->f_op->read" | -->if"file->f_op->read" | ||
− | -->[ | + | -->[f_op->read is defined] f_op->read() |
− | + | ||
else | else | ||
− | --> | + | -->do_sync_read() |
− | --> | + | -->generic_file_aio_read() |
− | + | ||
-->if"f_flags&O_DIRECT" | -->if"f_flags&O_DIRECT" | ||
− | --> | + | -->filemap_write_and_wait_range() |
− | + | ||
else | else | ||
− | --> | + | -->do_generic_file_read() |
− | --> | + | -->if"find_get_page()" |
+ | -->[true]PageUptodate | ||
+ | -->file_read_actor | ||
+ | else | ||
+ | -->[false]page_cache_alloc_cold() | ||
+ | -->add_to_page_cache_lru() | ||
+ | -->ext4_readpage() | ||
+ | -->do_mpage_readpage() | ||
+ | -->mpage_bio_submit() | ||
@enduml | @enduml | ||
</uml> | </uml> |
2014년 5월 14일 (수) 19:05 현재 판