IRQ 스레드 생성 실습
·
디버깅을 통해 배우는 리눅스 커널의 구조
이번에는 IRQ 스레드를 직접 생성해보고 ftrace를 이용해서 동작을 확인해본다. 새로 인터럽트를 만들지 않고 기존의 인터럽트를 이용할 것이다. 기존의 인터럽트에 스레드만 추가한다. 그러므로 먼저 적당한 인터럽트를 찾는다. root@raspberrypi:/home/ejun0/user_procs# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 26: 0 0 0 0 GICv2 29 Level arch_timer 27: 157678 140878 179115 172456 GICv2 30 Level arch_timer 30: 0 0 0 0 GICv2 107 Level fe004000.txp 31: 106802 0 0 0 GICv2 65 Level fe00b880.mailbox 34: ..
스터디 계획(2주차)
·
디버깅을 통해 배우는 리눅스 커널의 구조
부터 까지
리눅스 커널 스터디 결산 (1주차)
·
디버깅을 통해 배우는 리눅스 커널의 구조
https://2jun0.tistory.com/33 bcm2711 라즈베리파이에서 bcm2835 라이브러리 사용 책을 보다가 이해할 수 없는 부분이 생겼다. 분명 내 라즈베리파이의 AP는 bcm2711인데 드라이버 라이브러리는 bcm2835버전을 사용하는 것이다. (AP는 Application Processor로 CPU라고 보면 된다) 알고보니 b 2jun0.tistory.com https://2jun0.tistory.com/34 인터럽트 디스크립터와 인터럽트 디버깅 인터럽트 디스크립터란? - 인터럽트에 대한 객체를 관리하는 자료구조. linux/include/linux/irqdesc.h에서 볼 수 있다. struct irq_desc { ... unsigned int __percpu *kstat_irqs..
IRQ 스레드 (threaded IRQ)
·
디버깅을 통해 배우는 리눅스 커널의 구조
IRQ 스레드 인터럽트 실행 중에 I/O 같이 시간이 오래걸리는 서비스를 위한 것인데, 빠르게 처리할 수 있는 서비스만 irq에 남겨두고 나머지 오래걸리는 서비스는 IRQ 스레드를 사용하기도 한다. IRQ 스레드는 request_threaded_irq을 통해 생성된다. int request_threaded_irq(unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long irqflags, const char *devname, void *dev_id) 파라미터가 request_irq와 비슷하다. 특별한게 있다면 thread_fn인데, 이건 IRQ스레드 처리 함수의 주소를 저장하는 포인터다. 스레드의 이름은 "irq/[irq..
인터럽트 디스크립터와 인터럽트 디버깅
·
디버깅을 통해 배우는 리눅스 커널의 구조
인터럽트 디스크립터란? - 인터럽트에 대한 객체를 관리하는 자료구조. linux/include/linux/irqdesc.h에서 볼 수 있다. struct irq_desc { ... unsigned int __percpu*kstat_irqs; ... struct irqaction*action;/* IRQ action list */ ... } kstat_irqs: 인터럽트가 발생한 횟수 저장 action: 인터럽트의 주요 정보 저장 irqaction은 linux/include/linux/interrupt.h에서 볼 수 있다. struct irqaction { irq_handler_thandler; void*dev_id; ... irq_handler_tthread_fn; ... unsigned intirq; ..
bcm2711 라즈베리파이에서 bcm2835 라이브러리 사용
·
디버깅을 통해 배우는 리눅스 커널의 구조
책을 보다가 이해할 수 없는 부분이 생겼다. 분명 내 라즈베리파이의 AP는 bcm2711인데 드라이버 라이브러리는 bcm2835버전을 사용하는 것이다. (AP는 Application Processor로 CPU라고 보면 된다) 알고보니 bcm2835의 최신 라이브러리는 다른 AP에서도 사용할 수 있다고 한다. - 참고 - https://m.blog.naver.com/zeta0807/220995421324 라즈베리파이3/bcm2835 library 사용 현재 v1.52까지 나와있고, 최신 버전들은 Rasberry Pi3까지 지원합니다. 구 버전은 당연히 Pi B/B+만 ... blog.naver.com
스터디 계획(1주차)
·
디버깅을 통해 배우는 리눅스 커널의 구조
위 책을 읽으면서 다른 분들의 생각도 궁금하기도 하고 나 혼자 하다간 결국 때려 치울것 같아서 스터디를 하기로 했다. 1주차는 5챕터인 "인터럽트"를 끝낼 것이다. 부터 까지
_do_fork의 행방
·
디버깅을 통해 배우는 리눅스 커널의 구조
이번에도 저번과 같이 ftrace에 대한 오류가 나왔다. 아래와 같은 오류다. root@raspberrypi:/home/ejun0/user_procs# ./clone_process_debug.sh tracing_off events disabled set_ftrace_filter init function tracer enabled ./clone_process_debug.sh: 28 줄: echo: 쓰기 오류: 부적절한 인수 event enabled set_ftrace_filter enabled function stack trace enabled tracing_on clone_process_debug.sh의 28번째 줄은 아래와 같다. echo _do_fork copy_process* >> /sys/kern..
2jun0
'디버깅을 통해 배우는 리눅스 커널의 구조' 카테고리의 글 목록 (2 Page)