set_filter_function
2024. 1. 23. 22:56ㆍ리눅스/쉬운 리눅스
728x90
반응형
에러 문구
echo: write error: Invalid argumen
/sys/kernel/debug/tracing/set_ftrace_filter: no such device
이건 sudo cat /sys/kernel/debug/tracing/available_filter_functions 가능한 함수와 일치해야지 오류가 생기지 않는다
난 라즈베리파이 OS 가상머신으로 x86_64 아키텍처로 하고있어 아무래도 강의(책)과 함수명이 달라 오류가 난것 같다.
# 이용 가능한 함수 확인
cat /sys/kernel/debug/tracing/available_filter_functions | more
함수 확인 후 존재 하는 함수만 입력해야지 오류가 안뜬다.
# set_ftrace_filter에 적용
/sys/kernel/debug/tracing/set_ftrace_filter
set_ftrace.sh
#!/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 function > /sys/kernel/debug/tracing/current_tracer
sleep 1
echo "set_ftrace enabled"
#echo rpi_get_interrupt_info > /sys/kernel/debug/tracing/set_ftrace_filter
#sleep 1
#echo "set_ftrace_filter enabled"
echo "cpu_startup_entry" | sudo tee /sys/kernel/debug/tracing/set_ftrace_filter
sleep 1
echo "schedule ttwu_do_wakeup.constprop.0" >> /sys/kernel/debug/tracing/set_ftrace_filter
sleep 1
echo 1 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable
echo "sched_switch enabled"
echo 1 > /sys/kernel/debug/tracing/events/irq/irq_handler_entry/enable
echo 1 > /sys/kernel/debug/tracing/events/irq/irq_handler_exit/enable
echo "event enabled"
echo 1 > /sys/kernel/debug/tracing/options/func_stack_trace
echo "functionstack trace enabled"
echo 1 > /sys/kernel/debug/tracing/options/sym-offset
echo "sym-offset enabled"
echo 1 > /sys/kernel/debug/tracing/tracing_on
echo "tracing_on"
get_ftrace.sh
#!/bin/bash
echo 0 > /sys/kernel/debug/tracing/tracing_on
echo "frace off"
sleep 3
cp /sys/kernel/debug/tracing/trace .
mv trace ./ftraceLogs/$1.c
sh 실행시 파일명 입력하면 "$1"에 이름이 입력됨
./get_ftracd.sh [파일명]
최종 결과

- irqs-off/BH-disabled:
- 현재 CPU에서 IRQs(인터럽트)가 비활성화되어 있거나 Bottom Half(BH)가 비활성화된 상태를 나타냅니다. 이는 일부 코드가 임계 영역에 들어가 있거나 인터럽트가 비활성화되어 있어 중요한 상태일 수 있습니다.
- need-resched:
- 현재 태스크가 스케줄링이 필요한 상태에 있다는 것을 나타냅니다. 스케줄러에 의해 다음으로 실행될 태스크를 선택하는 필요성을 나타냅니다.
- hardirq/softirq/preempt-depth:
- 현재 하드웨어 인터럽트(hardirq), 소프트웨어 인터럽트(softirq), 또는 프리엠션(preempt)이 얼마나 깊게 중첩되어 있는지를 나타냅니다. 중첩이 많을수록 커널의 응답성에 영향을 미칠 수 있습니다.
- migrate-disable delay:
- CPU의 마이그레이션(migrate)이 비활성화되어 있는 상태를 나타냅니다. CPU 마이그레이션은 태스크가 다른 CPU로 옮겨질 때 발생합니다.
line 19: echo: write error: Invalid argument
objdump -d vmlinux | grep rpi_get_interrupt_info"디버깅을 통해 배우는 리눅스 커널의 구조와 원리"를 보며 실습하던 중, 책에서 하라는 대로 했지만 알수없는 오류가 생겼다. 바로 오늘의 제목인 line 19: echo
2jun0.tistory.com
반응형