当我使用 adb 显示 /sys/kernel/debug/tracing/available_filter_functions 时没有这样的设备

问题描述

伙计们。

我正在尝试研究 Nexus 6P(旧的 Android 智能手机)上的虚拟内存管理

因为AOSP中的默认内核没有开启CONFIG_FUNCITON_TRACER,我也无法使用function tracer来研究内存管理相关的函数。

所以我下载了 android 内核源代码,打开 config_function_tracer 和它依赖的其他配置,重建内核。然后我将重建的内核镜像文件放入aosp,重建启动镜像,并将构建的输出镜像刷入手机。

手机可以正常开机,一切正常,但是我不能正常'cat /sys/kernel/debug/tracing/available_filter_functions',提示“没有这样的设备”。

我检查了 selinux 标签,然后通过命令“setenforce permissive”关闭了 selinux,它无济于事。

谁能帮我解决这个问题?

C:\Users\dvdface>adb shell
angler:/ # cd /sys/kernel/debug/tracing/
angler:/sys/kernel/debug/tracing # ls
README                     dyn_ftrace_total_info per_cpu            set_ftrace_pid     tracing_cpumask
available_events           enabled_functions     printk_formats     set_graph_function tracing_on
available_filter_functions events                saved_cmdlines     trace              tracing_thresh
available_tracers          free_buffer           saved_tgids        trace_clock
buffer_size_kb             instances             set_event          trace_marker
buffer_total_size_kb       max_graph_depth       set_ftrace_filter  trace_options
current_tracer             options               set_ftrace_notrace trace_pipe
angler:/sys/kernel/debug/tracing # cat available_filter_functions
cat: available_filter_functions: No such device

解决方法

我知道我为什么会收到那个错误。

使用 CONFIG_FUNCTION_TRACER 构建内核时,需要关闭CONFIG_STRICT_MEMORY_RWX

在本文档中 (https://source.android.google.cn/devices/tech/debug/ftrace)

使用动态 ftrace 一章中,它说将其关闭。

我关掉后,一切正常。

config STRICT_MEMORY_RWX
    bool "restrict kernel memory permissions as much as possible"
    help
      If this is set,kernel text will be made RX,kernel data and stack
      RW,rodata R (otherwise all of the kernel 1-to-1 mapping is
      made RWX).
      The tradeoff is that several sections are padded to
      2M boundaries (because their permissions are different and
      splitting the 2M pages into 4K ones causes TLB performance
      problems),wasting memory.

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...