Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

76261
1501
219118


태그 : 커널 요약보기전체보기목록닫기

1 2 3 4 5 6 7 8 9 10 다음

[리눅스커널][시스템콜] strace로 시스템콜 디버깅하기

리눅스에서는 시스템콜 디버깅을 위한 strace라는 훌륭한 툴을 제공합니다.유저 프로그램이 실행할 때 어떤 시스템콜을 실행했는지 확인할 수 있습니다. strace 이란 툴은 리눅스에서 제공하는 강력한 시스템 트레이싱 기능입니다. 물론 라즈베리파이에서도 기본으로 설치되어 있어 바로 사용할 수 있습니다.strace는 다음 기능을 제공합니다.1. glibc(...

[리눅스커널][시스템콜] ftrace로 시스템 콜 인자 디버깅하기

ftrace는 시스템 콜 디버깅을 위한 이벤트를 제공합니다.sys_enter, sys_exit 이라는 ftrace 이벤트를 쓰면 시스템 콜 동작을 확인할 수 있습니다.위 이벤트를 키면 다음과 같은 시스템 콜 디버깅 정보를 출력합니다.1> 시스템 콜 번호2> 시스템 콜이 실행와 종료 시각3> 시스템 콜 핸들러 함수로 전달된 인자sys_en...

[리눅스커널] 시스템 콜/디버깅: ftrace 시스템 콜 이벤트 소개하기

시스템 콜 관련 코드를 분석하다 보면 다음과 같은 의문이 생길 수 있습니다.  평소 시스템 콜은 얼마나 자주 발생할까? 시스템 콜 번호는 어떻게 확인할 수 있을까?ftrace 메시지를 보면 이런 궁금증을 해소할 수 있습니다. ftrace에서는 시스템 콜 동작을 트레이싱하는 다음과 같은 이벤트를 제공합니다. sys_enter sys_exi...

[리눅스커널][시스템콜] 전처리 코드에서 시스템콜 핸들러 확인하기

이렇게 시스템 콜 핸들러 함수는 커널에서 제공하는 매크로 함수로 구현이 됐습니다. 이번에는 전처리 코드에서 시스템 콜 핸들러 구현부를 찾는 방법을 소개합니다. 먼저 커널 소스에서 sys_read() 시스템 콜 핸들러 함수를 찾는 방법을 알아볼까요?  다음 명령어를 입력해봅시다. root@raspberrypi:/home/pi/r...

[리눅스커널] 워크큐(workqueue): Trace32로 워크큐 자료 구조 디버깅하기

이번 시간에는 임베디드 디버깅 프로그램인 Trace32를 써서 워크큐 자료구조를 점검합니다. 리눅스 커널 시스템에서 커널 크래시가 나면 생성되는 vmcore를 올려 확인한 내용입니다.참고로, vmcore는 라즈베리파이가 아니라 다른 ARM64비트 아키텍처를 적용한 시스템에서 받았습니다.먼저 시스템 워크큐 전역 변수를 확인합니다.var.view %type...

[리눅스커널] 워크큐: 딜레이 워크는 누가 언제 큐잉할까?

이전 소절에서는 schedule_delayed_work() 함수를 호출하면 딜레이 워크 동적 타이머를 등록하는 과정을 살펴봤습니다. 이어서 지정한 지연 시각 후에 실행하는 딜레이 워크 동적 타이머 핸들러인 delayed_work_timer_fn() 함수를 분석합니다. 다음 그림을 보면서 딜레이 워크를 큐잉하는 과정을 소개합니다.  그림...

[리눅스커널][스케줄링] 선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개

선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개리눅스 커널에서 선점 스케줄링을 동작을 잠시 지연할 수 있는 함수를 지원합니다. preempt_disable(): 선점 지연 활성화preempt_enable():  선점 지연 비활성화preempt_disable() 함수 이름은 "선점"을 의미하는...

[리눅스커널] 워크큐(workqueue): 딜레이 워크 실행의 시작점은 어디일까?

먼저 딜레이 워크 전체 흐름도를 보면서 딜레이 워크 실행 흐름을 확인해보겠습니다.  그림 7.21 딜레이 워크 실행 흐름도 중 2단계 동작이번 소절에서는 위 그림에서 ② 부분 단계 처리 과정 살펴보겠습니다.   ② 단계 핵심 동작은 다음과 같습니다.     지연할 시간을 지정해...

[리눅스커널][인터럽트후반부] IRQ 스레드 전체 실행 흐름 정리하기

6.4.3 IRQ 스레드 전체 실행 흐름 정리하기여기까지 배운 내용을 다이어그램으로 정리하겠습니다.                  [그림 6.7] "irq/92-mmc1" IRQ Thread 실행 흐름도눈끔 화살표는 함수 실행 흐름 방향입니다. 위 그림에서 실행 순...

[리눅스커널] 워크큐: 딜레이 워크(delayed_work)란 무엇인가

딜레이 워크 소개워크큐는 대표적인 커널 후반부 처리 기법으로 후반부 처리 코드를 워크 핸들러에서 실행합니다. 동기적으로 처리 할 필요가 없는 코드를 워크 핸들러에 위치시켜 비동기적으로 커널 쓰레드 레벨에서 처리하는 겁니다. 이런 구조로 드라이버를 설계하면 다양한 디바이스 드라이버 시나리오에 맞게 코드를 구성할 수 있습니다. 워크에서 유연성을 추가한 기법...
1 2 3 4 5 6 7 8 9 10 다음