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..
CKEditor 5에서 Plugin을 설치할때 주의점
·
프로그래밍
CKEditor에서 Plugin을 설치해도 반영이 안될 때가 있다. typeerror: cannot read property 'getattribute' of null 와 같은 오류나 CKEditorError: ckeditor-duplicated-modules: Some CKEditor 5 modules are duplicated 와 같은 오류가 나온다. 이런 오류가 발생하는 이유는 CKEditor5에서는 Plugin을 설치한 후, 프로젝트 빌드와 상관없이 따로 빌드 과정을 거쳐야 해서 그렇다. (npm run build로 빌드가 되지 않는다.) 아무튼 해결하고 싶다면 2가지의 방법이 있다. 본인은 블로그를 개발하면서 결국 1번째 방법을 쓰게 되었고 한글 문서가 많이 없길래 작은 도움이 되고자 글을 쓰게 ..
2jun0
2jun0의 블로그