리눅스 커널 스터디 결산 (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..
인터럽트 후반부 처리 기법 소개
·
카테고리 없음
인터럽트는 빠르게 처리해야 하기 때문에 인터럽트 컨텍스트에서 많은 일을 해야할 때, 인터럽트 후반부 기법을 사용한다. Top Half: 인터럽트 핸들러가 하는 일 Bottom Half: 남은 인터럽트 처리를 프로세스가 처리함. 인터럽트 후반부 처리 기법의 종류 - IRQ 스레드 - Soft 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..
line 19: echo: write error: Invalid argument
·
디버깅을 통해 배우는 리눅스 커널의 구조
objdump -d vmlinux | grep rpi_get_interrupt_info"디버깅을 통해 배우는 리눅스 커널의 구조와 원리"를 보며 실습하던 중, 책에서 하라는 대로 했지만 알수없는 오류가 생겼다. 바로 오늘의 제목인 line 19: echo: write error: Invalid argument이 되겠다. 이 오류는 다음과 같은 쉘 명령어 파일을 실행하다 본 것이다. #!/bin/bash echo 0 > /sys/kernel/debug/tracing/tracing_on sleep 1 echo "tracing_off" echo 0 > /sys/kernel/debug/tracing/events/enable sleep 1 echo "events disabled" echo secondary_sta..
2jun0
2jun0의 블로그