LINUX

포스트: 477|조회수: 0|TERM
Items

Posts

477 posts

vmalloc - debugging(1)

Guillermo Austin Kim|2017년 12월 6일

자, 이제 vmap_area_list 변수 T32로 올려서 좀 들여다 볼까요? (static struct list_head) [D:0xC124E630] vmap_area_list = ( (struct list_head *) [D:0xC124E630] next = 0xDE8026D8, (struct list_head *) [D:0xC124E634] prev = 0xDD85F258) 링크드 리스트이니 좀 T32의 비주얼 속성을 좀 써볼께요.(출처: 참 항목이 많네요.do _fake_list_sym.cmm 0xC124E630 0x0 (0)| [C:0xC124E630] ( | [C:0xC124E630] next = 0xDE8026D8, | [C:0xC124

vmalloc - overview(1)

Guillermo Austin Kim|2017년 12월 6일

vmalloc에 대해서 리뷰를 해보려고 합니다.vmalloc이라. 이 놈도 리눅스 커널 책에서 엄청나게 많이 소개가 되고 있죠. 너무나도 좋은 글들이 있지만 vmlloc을 쓸 때를 허접하게 요약하면 아래와 같아요.1> 물리적으로 연속적이지 않은 메모리를 할당하고 싶을 때.2> 큰 사이즈의 가상 메모리 공간을 확보하고 싶을 때. 흠냐. 이게 뭔 소리지? 사실 전 머리 속에 개념이 잘 안 들어오더라구요.자, 코드 좀 살펴볼께요. 우선 vmalloc을 관리하는 핵심 변수를 소개하자면 vmap_area_list 이 분들 소개 안 할 수 없네요.LIST_HEAD(vmap_area_list); vmap을 관리하는 링크드 리스트가 vmap_area_list인데요, __insert_vmap_area 함수

[Linux][Kernel] ftrace: stack tracer

Guillermo Austin Kim|2017년 12월 6일

리눅스 커널에서 제공하는 여러 profile tool 중에 ftrace가 있어요. 매우 강력해요. 잠깐 기억하는게, 저번 리눅스 커널 세미나에 갔었을 때 리눅스 커널 고수들이 ftrace로 벌이는 향연을 보고 참 라이브 공연에 있는 듯한 착각을 받았어요. ftrace 기능 중 stack tracer 기능을 잠깐 소개하고자 해요. 리눅스 커널 고수들 ftrace 로그를 밥 먹듯이 본다고 하네요. 저도 밥 먹듯이 보고는 있지만, 영 실력이 느는 것 같지 않아 짜증이 나지만요. 우선 stack tracer 기능을 좀 소개하려고 해요. 기능도 참 강력해요. 아래와 같이 커널 Config를 설정합니다.--- a/arch/arm/configs/pompeii_com_defconfig+++ b/arch/arm/conf

Spinlock(스핀락) - 소개

Guillermo Austin Kim|2017년 12월 5일

스핀락. 리눅스 커널 책에서 언제나 볼 수 있는 개념이죠.싱크로나이제이션, 동기화, 어쩌구. 실제 Spinlock 구현부를 좀 살펴볼께요. 아래 코드를 전처리해서 코드를 보면,[kernel/fs/jbd2/commit.c]void jbd2_journal_commit_transaction(journal_t *journal) {//snip spin_lock(&commit_transaction->t_handle_lock); 아래 순서로 함수 콜이 수행되는 걸 알 수 있죠. 실제 스핀락 구현부는 arch_spin_lock() 함수라고 할 수 있어요. 우리 눈에 보이는 spin_lock()의 실체는 arch_spin_lock()군요.spin_lock() -> _raw_spin_lock()