Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

493
557
422263


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

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

[리눅스커널] 워크큐(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() 함수 이름은 "선점"을 의미하는...

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

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

[리눅스커널] 인터럽트 후반부 처리 기법 종류 및 소개

이번 장에서는 리눅스 커널이 Bottom Half을 처리하는 대표적인 기법인 IRQ 스레드와 Soft IRQ 기법과 태스크릿을 다룹니다. 워크큐는 워크큐를 다루는 장에서 살펴볼 예정입니다. 세 가지 기법 인터럽트 후반부 처리하는 방식이 조금씩 다릅니다. 하지만 인터럽트 핸들러에서 해야 할 일을 2 단계로 나눈다는 점은 같습니다. 4가지 기법의 ...

[리눅스커널] 인터럽트 후반부 처리: Top Half/Bottom Half 란 무엇일까?

앞서 살펴본 바와 같이 인터럽트 컨택스트에서 인터럽트 핸들링을 빠른 시간에 마무리해야 합니다. 또한 시간이 오래 걸리는 함수를 호출하면 시스템은 커널 패닉으로 시스템이 오동작 할 수 있습니다.여기서 한 가지 걱정이 생깁니다.     인터럽트가 발생한 후 인터럽트 핸들러에서 처리할 일이 많을 때는 어떻게 해야 할까?이럴 때 해...

[리눅스커널] 워크큐: 워커 쓰레드 핸들 worker_thread() 함수 분석

[리눅스커널] 워크큐: 워커 스레드란

워커 스레드는 워크를 실행하는 커널 스레드입니다. 이번 절에서는 워커 스레드가 무엇이고 이를 어떤 방식으로 생성하고 실행하는지 살펴보겠습니다.

[리눅스커널] 워크큐: 워커 쓰레드는 누가 언제 생성하나?

워커와 워커 쓰레드의 개념부터 정리하고 워커 쓰레드 생성에 대해 알아봅시다. 워커 쓰레드는 커널 쓰레드의 한 종류로 워크를 실행하는 쓰레드입니다. 쓰레드 핸들 함수는 worker_thread() 입니다.처음 커널 쓰레드를 분석할 때 먼저 쓰레드 핸들 함수를 분석해야 합니다. 쓰레드를 어떤 과정으로 실행 및 제어하는지 알 수 있기 때문입니다.워커...

[리눅스커널] 워크큐: queue_work_on() 함수 분석

schedule_work() 함수를 호출하면 어떻게 워크를 워크큐에 큐잉하는지 이제부터 살펴보겠습니다. schedule_work() 함수를 호출하면 queue_work_on() 함수를 호출하니 먼저 schedule_work() 함수를 보겠습니다.[/include/linux/workqueue.h]1 static inline bool schedule_wor...
1 2 3 4 5 6 7 8 9 10 다음