logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Android 日志系统6——logd 读日志过程分析

本文分析了Android logd服务中LogReader的初始化过程。LogReader在main函数中被创建,负责监听/dev/socket/logdr套接字。其初始化过程包括:获取日志套接字描述符、初始化SocketListener父类、设置监听参数。随后启动监听线程,通过poll机制等待客户端连接或命令管道事件。当有新连接时,会触发后续处理流程将日志缓冲区内容写入客户端。整个初始化过程完成

文章图片
#android
Android 日志系统5——logd 写日志过程分析二

文章摘要: 本文分析了Android日志系统logd中日志写入的详细过程。首先,SocketListener通过onDataAvailable()方法接收应用程序发送的日志数据,包括设置线程名称、获取客户端身份凭证、处理特殊值等步骤。然后,日志数据被写入LogBuffer,该过程包含四个关键步骤:数据校验、使用状态机去重、实际写入操作以及必要时删除旧日志以控制总量。文章详细展示了日志从应用程序通过

文章图片
#android
Android 日志系统4——logd 写日志过程分析一

本文摘要: 文章分析了Android logd服务中LogBuffer的初始化过程。LogBuffer是日志系统的核心缓冲区,负责存储和管理所有日志条目。初始化过程包括:1) 创建LastLogTimes列表;2) 初始化读写锁;3) 为每种日志类型(MAIN/RADIO/EVENTS等)初始化lastLoggedElements和droppedElements指针;4) 设置各日志类型的缓冲区大

文章图片
#android
Android 日志系统2——logd 守护进程

文章摘要:本文分析了Android系统中logd守护进程的初始化过程。logd通过system/core/logd/logd.rc定义了两个服务,初始化了三个socket连接和两个内核日志文件接口。在system/core/logd/main.cpp中,程序首先处理reinit参数,然后获取/proc/kmsg和/dev/kmsg文件描述符,用于与内核日志系统通信。最后初始化多个信号量并创建线程,

文章图片
#android
Android 日志系统1——整体框架

Android日志系统框架概述 Android日志系统包含多种日志类型:main(应用层日志)、radio(无线通信日志)、events(系统诊断日志)、system(系统应用日志)和crash(崩溃日志)。应用层通过Java的android.util.Log或Native的__android_log_print写入日志,内核层使用printk函数记录日志到/proc/kmsg。系统启动时logd

文章图片
#android
Unix Domain Socket —— TCP 篇

本文介绍了Unix Domain Socket在Android Framework Native层的应用及其TCP相关API。Unix Domain Socket是一种高效的进程间通信(IPC)机制,相比网络socket省去了协议栈开销。文章详细讲解了TCP编程的核心API,包括socket创建、bind绑定、listen监听、accept接受连接、recv/send数据读写等,并提供了服务端和客

文章图片
#unix#tcp/ip#android
Unix Domain Socket —— UDP 篇

Unix Domain Socket UDP 通信摘要 本文介绍了Unix Domain Socket在UDP模式下的进程间通信实现。Unix Domain Socket是一种高效的IPC机制,相比网络Socket避免了协议栈开销,直接进行进程间数据拷贝。文章详细讲解了UDP通信的关键API: 创建Socket:使用socket()函数指定AF_UNIX域和SOCK_DGRAM类型 绑定地址:通过

文章图片
#unix#android
Android Native Looper 机制

本文摘要: Android Native Looper机制通过epoll实现事件循环,核心功能包括休眠等待和事件处理。其实现要点如下: 初始化:Looper::prepare()调用epoll_create创建epoll实例 事件注册:addFd()封装epoll_ctl,将binder_fd/timerfd等注册到epoll 事件循环:pollAll()底层调用epoll_wait实现阻塞等待

文章图片
#android#c++
Linux IO 多路复用 epoll 机制

Linux IO多路复用epoll机制是一种高效管理多文件描述符(fd)的技术,通过单线程同时监听多个fd的IO事件,避免资源浪费。相比select/poll,epoll解决了fd数量限制、轮询效率低和内核态拷贝开销等问题。其核心包括epoll实例(epfd)、事件注册(epoll_ctl)和事件等待(epoll_wait)三个操作,采用红黑树和就绪链表数据结构实现高效管理。epoll支持水平触发

文章图片
#linux#c++#android
AIDL Hal 开发笔记6----添加硬件访问服务

本文介绍了在Android框架中添加硬件访问服务的实现过程。首先在frameworks/base/core/java/android/hardware/hello/目录下定义AIDL接口文件IHelloManager.aidl,该接口包含读写方法hellohal_write()和hellohal_read()。通过分析编译生成的class文件,展示了接口定义、默认实现和服务端Stub类的具体实现。

文章图片
#android
    共 33 条
  • 1
  • 2
  • 3
  • 4
  • 请选择