Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

75261
1501
219117


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

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

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

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

[리눅스커널][인터럽트] 인터럽트 핸들러 등록 시 플래그 설정

이 내용을 다루기 전에 인터럽트 신호에 대해서 조금 살펴보겠습니다.인터럽트 속성 플래그를 소개하기 전 이 내용을 다루기 전에 인터럽트 신호에 대해 살펴보겠습니다.가끔 인터럽트가 제대로 안 올라온다거나 디바이스 드라이버를 처음 올려서 기본 동작을 확인할 때 오실로스코프 장비로 인터럽트 파형을 측정합니다. 가끔 하드웨어 개발자와 분쟁이 생깁니다. 인터럽트을...

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

이전 절에서 인터럽트가 발생하면 실행되는 인터럽트 벡터의 어셈블리 코드를 분석했습니다. 그런데 커널은 인터럽트 벡터부터 커널 내부 함수를 호출해 인터럽트 핸들러 함수를 처리합니다. 즉, 프로세스가 실행되는 도중 인터럽트가 발생하면 인터럽트 벡터인 __irq_svc 레이블로 브랜치하고 handle_irq_event_percpu() 함수까지 실행됩니다.&n...

[리눅스커널][인터럽트]인터럽트 벡터에서 스택 푸쉬 확인하기

프로세스가 실행되는 도중 인터럽트가 발생하면 인터럽트 벡터로 프로그램 카운터를 브랜치합니다. 인터럽트 벡터가 가장 먼저 하는 일은 무엇일까요? 바로 실행 중인 프로세스의 레지스터 세트를 스택 공간에 저장(푸시)하는 것입니다. 그렇다면 인터럽트 벡터에서 이런 동작을 수행하는 이유는 무엇일까요? 프로세스의 실행 정보를 백업하기 위해서입니다. 이번 ...

[리눅스커널][인터럽트] 인터럽트 벡터 분석하기

인터럽트가 발생했을 때 이를 처리하는 방식은 CPU 아키텍처에 의존적입니다. 라즈베리 파이는 ARMv7 CPU를 탑재했으니 이 기준으로 인터럽트 처리 방식을 살펴봅시다.인터럽트가 발생하면 다음과 같이 커널 모드와 유저 모드별로 지정한 주소로 브랜치합니다. __irq_svc: 커널 모드 __irq_usr: 유저 모드이처럼 인터럽트가 발생하면 각 모드별...

[리눅스커널][인터럽트] 인터럽트 컨택스트에서 스케줄링을 하면?

인터럽트 컨텍스트에서는 사용할 수 있는 함수가 제한돼 있습니다. 만약 인터럽트 컨텍스트에서 스케줄링을 지원하는 커널 함수를 호출하면 커널 패닉이 발생하거나 WARN() 함수를 호출해 에러 로그를 출력합니다.이번 절에서는 커널에서 인터럽트 컨텍스트 구간에서 스케줄링을 지원하는 함수 호출을 어떤 방식으로 제한하는지 살펴보겠습니다.인터럽트 컨텍스트에서 스케줄...

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

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

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

[리눅스커널] 인터럽트(Interrupt)란?

5.1.1 인터럽트란인터럽트란 단어가 여러분들은 생소하신가요? 낯설게 들리는 분도 있고 귀에 익은 분도 있을 겁니다. 평소 인터럽트를 뭐라고 하죠? 일상생활에서 인터럽트는 보통 갑자기 생긴 일이나 하던 일을 멈춘다는 의미입니다. 예를 들면 책을 읽다가 전화가 와서 읽던 책을 덮어 놓고 전화를 받는 상황입니다. 임베디드 시스템 관점으로 인터럽트는...

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

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