Linux的apanic机制和与更新的ram_console / persistent_ram机制的区别

时间:2013-08-08 05:53:21

标签: android linux-kernel kernel linux-device-driver device-driver

在内核恐慌(OOPS)的情况下,我正在研究Linux上的不同日志记录机制。到目前为止,我在网上搜索,我已经能够得到以下信息:

  • apanic是完成工作的旧机制。
  • ram_console / persistent_ram是一种新机制。

有人可以在这方面了解以下内容吗?

  • 旧的apanic机制是什么,从高层次来看这是怎么回事 ?
  • 为什么弃用apanic机制,支持ram_console / persistent_ram机制?
  • 新的ram_console / persistent_ram mechinsm带来了什么优势。
  • ram_console / persistent_ram以什么方式在功能上与旧的apanic方法不同?

我只是在寻找指针和高级答案,从某种意义上说,我可以采取进一步研究机制的方向。我很感激这方面的任何相关信息。

由于

1 个答案:

答案 0 :(得分:5)

在下面找到您的一系列问题的答案。

旧的apanic机制是什么,从高层来看这是如何工作的?

这是Android用于消息记录的机制。它将日志消息写入NAND的mtd分区中的某个特定偏移量。内核模块将名为“apanic”的文件导出到“debugfs”。可以使用以下命令将debugfs挂载到某个目录中。 “mount -t debugfs none / sys / kernel / debug”,它要求在linux内核上启用debugfs配置。 有关这方面的更多信息,请参阅下面链接中的源代码。

https://android.googlesource.com/kernel/msm.git/+/android-msm-2.6.35/drivers/misc/apanic.c

为什么弃用apanic机制,支持ram_console / persistent_ram机制?

这个apanic驱动程序不是linux内核的一部分。它特定于android。它在最新版本的androids中已弃用。当内核opps发生时,原因可能是写入nand分区可能不是一个好主意。由于nand_write很慢并且写周期有限。这只是我的看法。但我不确定实际原因。

新ram_console / persistent_ram mechinsm带来哪些优势?

它也是android用于记录控制台消息的日志记录机制。这里记录消息进入RAM区域。在persistent_ram的情况下,日志消息进入RAM的持久存储区域(将被保留)。此驱动程序模块在proc目录中创建名为“last_kmsg”的文件。如果内核跳过并停止引导,则可以在下次引导时读取此消息。有关更多信息,请查看以下链接中给出的源代码。

https://android.googlesource.com/kernel/common.git/+/android-3.4/drivers/staging/android/ram_console.c

ram_console / persistent_ram以什么方式在功能上与旧的apanic方法不同?

前者以ram为基础,后者以mtd为基础。

在最新的实验性android源码中,我找不到两者的来源。不知道原因。

https://android.googlesource.com/kernel/common.git/+/experimental/android-3.10-rc5/drivers/staging/android/

希望我澄清你的疑问。

此致

Yuvaraj.A