리눅스

포스트: 554|조회수: 0|TERM
Items

Posts

554 posts

[리눅스커널][SoftIRQ] Soft IRQ 서비스란

Guillermo Austin Kim|2019년 2월 23일

Soft IRQ를 설명하면서 낯선 용어를 설명했는데, 이제부터 그 의미를 하나하나씩 살펴 보겠습니다. Soft IRQ 서비스란 용어를 소개합니다. Soft IRQ 서비스를 빨리 이해하려면 코드를 먼저 봐야 합니다. Soft IRQ 서비스는 아래 enum으로 정의한 코드와 같습니다.[include/linux/interrupt.h]enum{ HI_SOFTIRQ=0, TIMER_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ, BLOCK_SOFTIRQ, IRQ_POLL_SOFTIRQ, TASKLET_SOFTIRQ, SCHED_SOFTIRQ, HRTIMER_SOFTIRQ, RCU_SOFTIRQ, NR_SOFTIRQS}; const char * const softirq_to_name[

[리눅스커널][시스템콜] strace로 시스템콜 디버깅하기

Guillermo Austin Kim|2019년 2월 21일

리눅스에서는 시스템콜 디버깅을 위한 strace라는 훌륭한 툴을 제공합니다. 유저 프로그램이 실행할 때 어떤 시스템콜을 실행했는지 확인할 수 있습니다. strace 이란 툴은 리눅스에서 제공하는 강력한 시스템 트레이싱 기능입니다. 물론 라즈베리파이에서도 기본으로 설치되어 있어 바로 사용할 수 있습니다. strace는 다음 기능을 제공합니다.1. glibc(GNU C) 라이브러리에서 시스템 콜을 호출하는 함수 이름 출력2. 시스템콜 실행 후 반환값 이 기능을 쓰기 위해 우선 다음 코드를 시스템 프로그램으로 입력해 봅시다.1 #include 2 #include 3 #include 4 #include

[리눅스커널][시스템콜] ftrace로 시스템 콜 인자 디버깅하기

Guillermo Austin Kim|2019년 2월 21일

ftrace는 시스템 콜 디버깅을 위한 이벤트를 제공합니다.sys_enter, sys_exit 이라는 ftrace 이벤트를 쓰면 시스템 콜 동작을 확인할 수 있습니다. 위 이벤트를 키면 다음과 같은 시스템 콜 디버깅 정보를 출력합니다.1> 시스템 콜 번호2> 시스템 콜이 실행와 종료 시각3> 시스템 콜 핸들러 함수로 전달된 인자 sys_enter와 sys_exit ftrace 이벤트는 어떻게 설정할 수 있을까요? 다음 명령어로 sys_enter와 sys_exit 이벤트를 키는 enable 파일을 1로 써주면 됩니다.echo 1 > /sys/kernel/debug/tracing/events/raw_syscalls/sys_enter/enableecho 1 > /sys/kernel

[리눅스커널][시스템콜] ftrace로 시스템 콜 실행 확인하기

Guillermo Austin Kim|2019년 2월 21일

시스템 콜 관련 코드를 분석하다 보면 다음과 같은 의문이 생기지 않나요? 평소 시스템 콜은 얼마나 자주 발생할까?시스템 콜 번호는 어떻게 확인할 수 있을까? 이 의문에 대한 답은 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