IDE Linuxide COPYRIGHTS 20022006 OKTOMATO CO LTD ALL

  • Slides: 7
Download presentation
IDE 관련 함수 추적 Linux-ide COPYRIGHTS 2002~2006. OKTOMATO. CO, LTD. ALL RIGHTS RESERVED. 1

IDE 관련 함수 추적 Linux-ide COPYRIGHTS 2002~2006. OKTOMATO. CO, LTD. ALL RIGHTS RESERVED. 1

함수 추적 환경 • 커널 버젼 • I/O 스케줄러 • 추적 도구 2. 6.

함수 추적 환경 • 커널 버젼 • I/O 스케줄러 • 추적 도구 2. 6. 15. 5 no-op kgdb, gdb Source Insight http: //lxr. linux. no COPYRIGHTS 2002~2006. OKTOMATO. CO, LTD. ALL RIGHTS RESERVED. 2

응용 프로그램 User Area 시스템 호출 VFS Kernel Area 파일 시스템 버퍼 캐시 Redirector

응용 프로그램 User Area 시스템 호출 VFS Kernel Area 파일 시스템 버퍼 캐시 Redirector 문자 디바이스 드라이버 Device Area 키보드, 마우스… Flash 블록 디바이스 드라이버 Hard disk블록 디바이스 드라이버 Flash memory 하드디스크 COPYRIGHTS 2002~2006. OKTOMATO. CO, LTD. ALL RIGHTS RESERVED. 3

__make_request() 전 fs/read_write. c sys_read() vfs_read() do_sync_read() mm/filemap. c do_generic_mapping_read() __generic_file_aio_read() Generic_file_aio_read() mm/readahead. c

__make_request() 전 fs/read_write. c sys_read() vfs_read() do_sync_read() mm/filemap. c do_generic_mapping_read() __generic_file_aio_read() Generic_file_aio_read() mm/readahead. c page_cache_readahead() fs/ext 3/inode. c fs/mpage. c blockable_page_cache_readahead() ext 3_readpages() mpage_readpages() __do_page_cache_readahead() read_pages() mpage_bio_submit() block/ll_rw_blk. c __make_reques(q, bio) generic_make_request(bio) COPYRIGHTS 2002~2006. OKTOMATO. CO, LTD. ALL RIGHTS RESERVED. submit_bio(rw, bio) 4

IDE 요청 진입부 submit(bio) 요청(bio) generic_make_request merge_ok 이면 1 __make_request(q, bio) MERGE elv_merge(q, rq,

IDE 요청 진입부 submit(bio) 요청(bio) generic_make_request merge_ok 이면 1 __make_request(q, bio) MERGE elv_merge(q, rq, bio) 2 out: elv_queue_emptyq) empty이면 get_rq: COPYRIGHTS 2002~2006. OKTOMATO. CO, LTD. ALL RIGHTS RESERVED. 5

MERGE block/elevator. c elv_merge() elv_try_merge(rq, bio) elv_rq_merge_ok(rq, bio) merge_ok 이면 attempt_back/front_merge(q, rq) out: attempt_merge()

MERGE block/elevator. c elv_merge() elv_try_merge(rq, bio) elv_rq_merge_ok(rq, bio) merge_ok 이면 attempt_back/front_merge(q, rq) out: attempt_merge() block/ll_rw_blk. c COPYRIGHTS 2002~2006. OKTOMATO. CO, LTD. ALL RIGHTS RESERVED. 6

Out: __generic_unplug_device(q) 버퍼 영역 q->request_fn(q) do_ide_request(q) ide_do_request start_request() device driver 영역 drv->do_request(drive, rq, block)

Out: __generic_unplug_device(q) 버퍼 영역 q->request_fn(q) do_ide_request(q) ide_do_request start_request() device driver 영역 drv->do_request(drive, rq, block) Ide_do_rw_disk() __ide_do_rw_disk() 컨트롤러 버퍼에 쓰기 ide_intr() handle_irq_event() __do_irq() IRQ 14 ISR COPYRIGHTS 2002~2006. OKTOMATO. CO, LTD. ALL RIGHTS RESERVED. 7