如何解决当我使用 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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。