Read(User - ext4)
(버전 사이의 차이)
1번째 줄: | 1번째 줄: | ||
<uml> | <uml> | ||
− | (*) --> "read" | + | (*) --> "read()" |
− | "read" --> "SYSCALL_DEFINE3" | + | "read()" --> "SYSCALL_DEFINE3()" |
− | "SYSCALL_DEFINE3" --> "vfs_read" | + | "SYSCALL_DEFINE3()" --> "vfs_read()" |
− | "vfs_read" --> "do_sync_read" | + | "vfs_read()" --> "do_sync_read()" |
− | "do_sync_read" -->"generic_file_aio_read( | + | "do_sync_read()" -->"generic_file_aio_read" |
+ | |||
+ | "generic_file_aio_read" -->"generic_segment_checks" | ||
+ | "generic_segment_checks" --> if "error" then | ||
+ | -->[error] (*) | ||
+ | endif | ||
+ | |||
+ | "generic_segment_checks" --> if "filp->f_flag 검사" then | ||
+ | --> [직접전송] "i_size_read" | ||
+ | --> filemap_write_and_wait_range | ||
+ | --> generic_file_direct_IO | ||
+ | else | ||
+ | --> [직접전송 X] "do_generic_file_read" | ||
+ | endif | ||
+ | |||
+ | "filemap_write_and_wait_range" -> "filemap_fdatawrite_range" | ||
+ | "filemap_fdatawrite_range" -> "do_writepages" | ||
+ | "do_writepages" -> "generic_writepage" | ||
+ | "generic_writepage" ->"write_cache_pages" | ||
+ | "write_cache_pages" -> "writepage" | ||
+ | |||
</uml> | </uml> |
2014년 5월 16일 (금) 05:17 판