1

伙计们。

我正在尝试研究 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
4

1 回答 1

0

我知道为什么会出现这个错误。

使用 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.
于 2021-03-27T13:10:23.133 回答