Android日志系统驱动程序Logger源代码分析

Android日志系统驱动程序Logger源代码分析

ID:41062449

大小:53.95 KB

页数:20页

时间:2019-08-15

Android日志系统驱动程序Logger源代码分析_第1页
Android日志系统驱动程序Logger源代码分析_第2页
Android日志系统驱动程序Logger源代码分析_第3页
Android日志系统驱动程序Logger源代码分析_第4页
Android日志系统驱动程序Logger源代码分析_第5页
资源描述:

《Android日志系统驱动程序Logger源代码分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、我们知道,在Android系统中,提供了一个轻量级的日志系统,这个日志系统是以驱动程序的形式实现在内核空间的,而在用户空间分别提供了Java接口和C/C++接口来使用这个日志系统,取决于你编写的是Android应用程序还是系统组件。在前面的文章浅谈Android系统开发中LOG的使用中,已经简要地介绍了在Android应用程序开发中Log的使用方法,在这一篇文章中,我们将更进一步地分析Logger驱动程序的源代码,使得我们对Android日志系统有一个深刻的认识。     既然Android日志系统是以驱动程序的

2、形式实现在内核空间的,我们就需要获取Android内核源代码来分析了,请参照前面在Ubuntu上下载、编译和安装Android最新源代码和在Ubuntu上下载、编译和安装Android最新内核源代码(LinuxKernel)两篇文章,下载好Android源代码工程。Logger驱动程序主要由两个文件构成,分别是:    kernel/common/drivers/staging/android/logger.h    kernel/common/drivers/staging/android/logger.c  

3、  接下来,我们将分别介绍Logger驱动程序的相关数据结构,然后对Logger驱动程序源代码进行情景分析,分别日志系统初始化情景、日志读取情景和日志写入情景。    一. Logger驱动程序的相关数据结构。    我们首先来看logger.h头文件的内容:viewplain1.#ifndef _LINUX_LOGGER_H  2.#define _LINUX_LOGGER_H  3.  4.#include   5.#include   6.  7.

4、struct logger_entry {  8.    __u16       len;    /* length of the payload */  9.    __u16       __pad;  /* no matter what, we get 2 bytes of padding */  10.    __s32       pid;    /* generating process's pid */  11.    __s32       tid;    /* generating proces

5、s's tid */  12.    __s32       sec;    /* seconds since Epoch */  13.    __s32       nsec;   /* nanoseconds */  14.    char        msg[0]; /* the entry's payload */  1.};  2.  3.#define LOGGER_LOG_RADIO    "log_radio" /* radio-related messages */  4.#define L

6、OGGER_LOG_EVENTS   "log_events"    /* system/hardware events */  5.#define LOGGER_LOG_MAIN     "log_main"  /* everything else */  6.  7.#define LOGGER_ENTRY_MAX_LEN        (4*1024)  8.#define LOGGER_ENTRY_MAX_PAYLOAD      9.    (LOGGER_ENTRY_MAX_LEN - sizeof

7、(struct logger_entry))  10.  11.#define __LOGGERIO  0xAE  12.  13.#define LOGGER_GET_LOG_BUF_SIZE     _IO(__LOGGERIO, 1) /* size of log */  14.#define LOGGER_GET_LOG_LEN      _IO(__LOGGERIO, 2) /* used log len */  15.#define LOGGER_GET_NEXT_ENTRY_LEN   _IO(__

8、LOGGERIO, 3) /* next entry len */  16.#define LOGGER_FLUSH_LOG        _IO(__LOGGERIO, 4) /* flush log */  17.  18.#endif /* _LINUX_LOGGER_H */       structlogger_entry是一个用于描述一条Log记录的结构体。l

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。