커널
Posts
228 posts[리눅스커널][시스템콜] ftrace로 시스템 콜 실행 확인하기
시스템 콜 관련 코드를 분석하다 보면 다음과 같은 의문이 생기지 않나요? 평소 시스템 콜은 얼마나 자주 발생할까?시스템 콜 번호는 어떻게 확인할 수 있을까? 이 의문에 대한 답은 ftrace 로그에서 찾을 수 있습니다. 시스템 콜을 ftrace 로 디버깅을 할 수 있기 때문입니다. 이를 위해 ftrace를 다음과 같이 설정합니다.1 "echo 1 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable"2 "echo 1 > /sys/kernel/debug/tracing/events/raw_syscalls/enable"3 "echo 1 > /sys/kernel/debug/tracing/events/irq/irq_handler_entry/e
[리눅스커널][시스템콜] 전처리 코드에서 시스템콜 핸들러 확인하기
전처리 코드에서 시스템 콜 핸들러 확인하기이번에는 전처리 코드에서 실제 시스템 콜 핸들러 구현부를 찾아보겠습니다. sys_read() 시스템 콜 핸들러를 찾으려면 다음 명령어을 입력하면 됩니다.root@raspberrypi:/home/pi/RPi_kernel_src/linux #egrep -nr SYSCALL_DEFINE * | grep read...fs/read_write.c:566:SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) 시스템 콜 핸들러는 SYSCALL_DEFINE으로 시작하는 매크로로 선언됐으니 이 매크로로 검색하고 grep 명령어로 지정한 이름이 포함된 결과를 출력하면 되는 것입니다. 이전 절에서 시
[리눅스커널] 워크큐(workqueue): Trace32로 워크큐 자료 구조 디버깅하기
이번 시간에는 임베디드 디버깅 프로그램인 Trace32를 써서 워크큐 자료구조를 점검합니다. 리눅스 커널 시스템에서 커널 크래시가 나면 생성되는 vmcore를 올려 확인한 내용입니다. 참고로, vmcore는 라즈베리파이가 아니라 다른 ARM64비트 아키텍처를 적용한 시스템에서 받았습니다. 먼저 시스템 워크큐 전역 변수를 확인합니다.var.view %type %string system_wq1 (static struct workqueue_struct *) system_wq = 0xFFFFFFC632C15080 -> (2 (struct list_head) pwqs = ((struct list_head *) next = 0xFFFFFFC63A3B2870 3 (struct list_head)
[리눅스커널] 워크큐: 딜레이 워크는 누가 언제 호출할까?
이전 소절에서는 schedule_delayed_work() 함수를 호출하면 동적 타이머를 실행해서 지정한 지연 시각 후에 동적 타이머 핸들러인 delayed_work_timer_fn() 함수가 실행되도록 한다고 했습니다. 이번 소절에서는 delayed_work_timer_fn() 함수가 어떻게 호출되는지 살펴봅니다. delayed_work_timer_fn() 함수는 언제 실행할까요? 동적 타이머 만료 시각에 도달하면 Soft IRQ 컨택스트에서 delayed_work_timer_fn() 함수를 호출합니다. Soft IRQ 전체 구조와 흐름은 8장(커널 타이머)에서 상세히 다룹니다. Soft IRQ 개념이 익숙하지 않은 분은 8장을 먼저 읽고 오시면 됩니다. 먼저 delayed_work_ti
![[일상] Eave 65와 목새 택타일 | 토프레 무접점 느낌 | 타건 영상 있음](https://img.zoomtrend.com/2026/06/07/1780838085-SE-77297eb3-90bf-43a7-9629-75fd8530e370.jpg)



