Guillermo Austin Kim

Sources

Posts

998 posts

[리눅스] printk 아규먼트 포멧

Guillermo Austin Kim|2018년 6월 25일

printk에 %로 어떤 형식을 지정할 지 헷갈릴 때가 많습니다.이럴 때는 다음 형식을 참고하면 됩니다.If variable is of Type, use printk format specifier:------------------------------------------------------------ int %d or %x unsigned int %u or %x long %ld or %lx unsigned long %lu or %lx long long %lld or %llx unsigned long long %llu or %llx size_t %zu or %zx ssize_t %zd or %zx s32 %d or %x u32 %u or %x s64 %lld or

[라즈베리파이] ksoftirqd 쓰레드란

[라즈베리파이] ksoftirqd 쓰레드란

Guillermo Austin Kim|2018년 6월 24일

# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3. IRQ Thread는 언제 생성할까?[1] 4. IRQ Thread는 언제 생성할까?[2] 5. ksoftirqd 쓰레드란 ksoftirqd이란 per-cpu 타입 프로세스입니다. 즉 CPU 개수만큼 생성해서 정해진 CPU 내에서만 실행합니다. ksoftirqd 프로세스는 커널 쓰레드로 Soft IRQ 서비스를 쓰레드 레벨에서 처리합니다. 리눅스 커널을 탑재한 어떤 시스템에서도 볼 수 있는 친근한 프로세스입니다. 먼저 ksoftirqd 쓰레드를 같이 확인하겠습니다. 다음 사이트를 방문하면 다른 리눅스 시스템에서 ksoftirqd 쓰레드를 확인할 수 있습니다.[출처:

[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[2] #CS

Guillermo Austin Kim|2018년 6월 21일

# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3.IRQ Thread는 언제 생성할까?[1] 4. IRQ Thread는 언제 생성할까?[2] 여기까지 request_threaded_irq 함수를 호출하면 결국 kthread_create 함수가 호출되어 IRQ Thread를 생성하는 코드를 짚어 봤습니다. 이제 분석한 대로 라즈베리파이에서 동작하는지 알아봐야겠죠. 이를 알아 보기 위한 코드를 소개할게요.diff --git a/kernel/kthread.c b/kernel/kthread.cindex 1c19edf82..0bc8a0037 100644--- a/kernel/kthread.c+++ b/kernel/kthread.

[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[1] #CS

[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[1] #CS

Guillermo Austin Kim|2018년 6월 19일

# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3.IRQ Thread는 언제 생성할까?[1] IRQ Thread를 생성하기 위해서는 request_threaded_irq 을 호출하면 IRQ Thread가 생성된다고 설명해 드렸습니다. 사실 request_threaded_irq을 호출할 때 IRQ Thread가 생성되는 것은 아니고 다음 흐름에서 __kthread_create_on_node 함수가 실행할 때 생성됩니다. 우리는 커널 쓰레드를 생성할 때 kthread_create 함수를 호출한다고 배웠죠. IRQ Thread도 이 kthread_create 함수를 호출해서 생성합니다. 이로 I

[리눅스][커널] 커널 크래시 분석은 왜 중요할까?

Guillermo Austin Kim|2018년 6월 18일

커널 크래시란커널 크래시 분석은 왜 중요할까? 커널 크래시 분석을 잘하는 게 왜 중요할까요? 너무 당연한 질문인가요? 사실 세상에 너무 당연한 질문은 없습니다. 어쩌면 너무 당연한 질문에 답하려고 고민하다가 많은 걸 깨닫는 경우가 많은 것 같습니다. 여러분이 리눅스 드라이버를 개발하거나 새로운 리눅스 커널 버전을 포팅했다고 가정하겠습니다. 그런데 안타깝게도 부팅 도중 아래와 같은 로그를 출력하는 커널 크래시가 100% 발생하고 있습니다. 어떻게 분석해야 할지 몰라 하루 꼬박 밤을 새웠습니다. 참 이럴 때 난감하죠. [ 0.986578] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)[ 0.986589] CPU: