Open flow

(버전 사이의 차이)
이동: 둘러보기, 찾기
1번째 줄: 1번째 줄:
<uml>
 
 
@startuml
 
@startuml
 
(*)-->SYSCALL_DEFINE3(OPEN)
 
(*)-->SYSCALL_DEFINE3(OPEN)
-->do_sys_open()
+
-->do_sys_open
-->===a===
+
do_sys_open-->getname(filename)
===a===-->getname(filename)
+
 
-->getname_flags
 
-->getname_flags
===a===-->get_unused_flags()
+
do_sys_open-->get_unused_flags()
 
-->__alloc_fd
 
-->__alloc_fd
 
-->find_next_zero_bit
 
-->find_next_zero_bit
===a===-->do_filp_open
+
do_sys_open-->do_filp_open
 
-->path_openat
 
-->path_openat
-->===b===
+
path_openat-->get_empty_filp
===b===-->get_empty_filp
+
path_openat-->[flag & O_TMPFILE]do_tmpfile
===b===-->[flag & O_TMPFILE]do_tmpfile
+
 
-->path_lookupat
 
-->path_lookupat
-->===c===
+
path_lookupat-->path_init
===c=== -->path_init
+
path_lookupat-->link_path_walk
===c=== -->link_path_walk
+
path_openat -->path_init
===b===-->path_init
+
path_openat -->link_path_walk
===b===-->link_path_walk
+
 
-->walk_component
 
-->walk_component
-->===d===
+
walk_component-->lookup_fast(nameidata,path,inode)
===d===-->lookup_fast(nameidata,path,inode)
+
walk_component->lookup_slow(nameidata,path)
===d===-->lookup_slow(nameidata,path)
+
path_openat-->do_last
===b===-->do_last
+
do_sys_open-->fd_install(fd,f)
===a===-->fd_install(fd,f)
+
 
-->__fd_install
 
-->__fd_install
 
@enduml
 
@enduml
</uml>
 

2014년 5월 15일 (목) 21:46 판

@startuml (*)-->SYSCALL_DEFINE3(OPEN) -->do_sys_open do_sys_open-->getname(filename) -->getname_flags do_sys_open-->get_unused_flags() -->__alloc_fd -->find_next_zero_bit do_sys_open-->do_filp_open -->path_openat path_openat-->get_empty_filp path_openat-->[flag & O_TMPFILE]do_tmpfile -->path_lookupat path_lookupat-->path_init path_lookupat-->link_path_walk path_openat -->path_init path_openat -->link_path_walk -->walk_component walk_component-->lookup_fast(nameidata,path,inode) walk_component->lookup_slow(nameidata,path) path_openat-->do_last do_sys_open-->fd_install(fd,f) -->__fd_install @enduml

개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기