电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

第十五章_Android内核驱动——杂项VIP免费

第十五章_Android内核驱动——杂项_第1页
1/8
第十五章_Android内核驱动——杂项_第2页
2/8
第十五章_Android内核驱动——杂项_第3页
3/8
第十五章 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 等待队列上,判断当前日志 buffer 是否为空,如果空则调度别的进程运行,自己挂起(如果指定了非阻塞模式,则直接返回-EAGAIN),重复上述过程直 buffer 中有日志可读,此时,读出一条日志,拷贝到用户空间,返回。  logger_aio_write 写操作支持同步、异步以及 scatter 方式的写操作。写操作几乎总是成功的,当 buffer 满的时候,新写入的日志会覆盖最初的日志。总之,buffer 是环形的,如果没有及时被读出,数据会丢失。  logger_ioctl 支持以下命令:  LOGGER_GET_LOG_BUF_SIZE:得到 logger device 环形缓冲区的大小  LOGGER_GET_LOG_LEN :得到当前日志 buffer 中未被读出的日志长度LOGGER_GET_NEXT_ENTRY_LEN:得到下一条日志长度(即紧接着上次读出的日志后面一条)  LOGGER_FLUSH_LOG:清空日志  logger_poll 查询当前进程是否可以对logger device 操作。POLLOUT 总是成立的,即进程总是可以写入日志。但只有以FMODE_READ 模式打开 lo...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

第十五章_Android内核驱动——杂项

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部