第十五章 Android 内核驱动——杂项 15
1 日志系统 基本原理 Android 的 logger 是一种轻量级的日志系统
在内核中实现为一种 misc 设备驱动,它与用户态的logcat工具配合实现了方便的调试工具,开发应用程序的时候可以利用logger查看日志,进行跟踪调试
logger的实现 logger 的 源代码 在 drivers/staging/android/logger
c 中 ,它用三 个结构 体 logger_log , logger_reader 和 logger_entry来维护 logger 设备的信息
其中 logger_log 代表一个 log 设备,logger_reader 代表一个读日志的 reader,logger_entry代表 writer 写入的一条日志
logger 在模块初始化时注册三个 misc 设备:log_main, log_events 和 log_radio
其中 log_main记录主要的日志信息,log_events 记录与事件有关的信息,log_radio 记录与通信有关的信息,实现了以下的 file operation: logger_open 标准的 open 接口,如果以读模式打开,则分配一个 logger_reader,初始化其成员变量,并把这个logger_reader保存在file->private_data中
如果是write模式打开,则直接把对应logger设备的 logger_log 保存在 file->private_data
此后在读或者写的时候就可以通过 file-> private_data 找到对应的 logger_reader 或 logger_log
logger_read 首先当前进程(读 log 的进程)加到 logger_log->wq 等待队列上,