Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

493
557
422263


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

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

[리눅스커널][인터럽트] 인터럽트 발생은 언제 지연해야 할까?

디바이스 드라이버를 개발하다 보면 특정 상황에서 인터럽트가 발생하면 안 되는 조건이 있습니다.1. SoC에서 정의한 하드웨어 블록에 정확한 시퀀스를 줘야 할 경우2. 시스템이 유휴 상태에 진입하기 직전의 ‘시스템의 상태 정보’ 값을 저장하는 동작3. 각 디바이스 드라이버가 서스펜드 모드로 진입할 때 디바이스 드라이버에 데이터 시트에서 명시한 대로 정확한...

[리눅스커널][인터럽트] 인터럽트 디스크립터: 인터럽트 발생 횟수 확인하기

대부분 디바이스 드라이버는 인터럽트 핸들러로 하드웨어 디바이스와 통신합니다. 예를 들면 터치 디바이스에서 사용자가 터치를 입력하면 터치 디바이스에서 올려주는 인터럽트로 터치 입력이 발생했다고 알려줍니다. 디바이스 드라이버에서 인터럽트 핸들러를 등록한 후 해당 디바이스가 제대로 인터럽트를 발생시키는지 어떻게 알 수 있을까요? 이럴 때는 인터럽트 ...

[리눅스커널][인터럽트] 인터럽트 디스크립터(struct irq_desc)에 대해서

인터럽트 디스크립터란프로세스마다 프로세스를 관리하는 태스크 디스크립터(struct task_struct)가 있습니다. 페이지도 페이지를 관리하는 페이지 디스크립터(struct page)가 있죠. 마찬가지로 리눅스 커널에서 발생하는 인터럽트 종류만큼 인터럽트 디스크립터가 있습니다. 만약 인터럽트 개수가 34개면 이를 관리하는 34개의 인터럽트 디스크립터가...

[리눅스커널][인터럽트] 인터럽트 핸들러 등록하기 - request_irq()

5.4.1 인터럽트 핸들러 등록 시 기본 파라미터해당 인터럽트가 발생하면 해당 인터럽트 핸들러 함수가 호출돼야 합니다. 이를 위해 디바이스 드라이버 코드에서 request_irq 함수을 써서 인터럽트 핸들러를 등록해야 합니다. 그럼request_irq 함수를 실제 어떻게 사용하는지 라즈베리안 리눅스 커널 코드를 잠깐 살펴보겠습니다. [drive...

[리눅스커널][인터럽트] 인터럽트 핸들러 호출 코드 알아보기

이번에는 인터럽트 벡터에서 인터럽트 핸들러까지 이어지는 실행 흐름을 알아보겠습니다.  * 아래 강의 동영상에서 관련 내용을 확인할 수 있습니다. "이 포스팅이 유익하다고 생각되시면 댓글로 응원해주시면 감사하겠습니다.  "혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!"...

[리눅스커널][인터럽트] 인터럽트 컨택스트: in_interrupt() 함수 코드분석

5.2.3 in_interrupt() 함수란리눅스 커널이 실행할 때 수많은 함수가 각자 서로를 호출합니다. 어떤 함수는 프로세스 컨택스트에서 실행(커널 쓰레드)되는데 대부분 함수는 인터럽트 컨택스트, 즉 인터럽트 처리하는 도중 호출될 수 있습니다. 만약 현재 실행하는 코드가 인터럽트를 처리 중이면 더 빨리 처리해야겠죠? 인터럽트 서비스 루틴은 ...

[리눅스커널][인터럽트] 인터럽트 컨택스트란 - in_interrupt()

[리눅스커널][시그널] 커널에서 시그널을 전달하는 진입점은 어디일까?

시그널 생성 과정에서 스케줄러에게 시그널을 받을 프로세스 실행 요청을 했습니다.리눅스 커널은 언제 시그널을 타겟 프로세스에게 전달할까요?출발점은 두 가지 실행 흐름입니다.1> 시스템 콜 핸들러 실행 마무리 후 ret_fast_syscall 레이블2> 인터럽트 핸들링 후 __irq_usr 레이블이 동작은 리눅스 커널보다 ARM 프로세스가 많은 ...

[리눅스커널][디버깅] dump_stack() 함수

printk 외에도 커널에서는 커널 로그를 통해 커널 동작을 보여주는 기능을 제공합니다. 즉, 커널에서 지원하는 dump_stack() 함수를 호출하면 콜스택을 커널 로그로 볼 수 있습니다.dump_stack() 함수의 사용법은 간단합니다. 커널 로그로 콜스택을 보고 싶은 코드에 dump_stack() 함수를 추가하기만 하면 됩니다. dump_...

[리눅스커널] 커널 디버깅: printk

C 프로그래밍을 공부할 때 가장 먼저 만나는 함수가 main과 printf입니다. printf("Hello World \n");윈도우 콘솔 프로그램이나 리눅스 시스템 프로그램에서 printf 함수를 호출하면 콘솔로 문자열을 출력하듯이 printk() 함수를 호출하면 커널 로그를 볼 수 있습니다. 이미 커널의 수많은 내부 함수에서도 printk를 이용해 ...
1 2 3 4 5 6 7 8 9 10 다음