marshal_zsx的博客

路漫漫其修远兮,吾将上下而求索

排序:
默认
按更新时间
按访问量

Android 8.0 系统启动流程之Linux内核启动--kthreadd进程(二)

    在上一篇文章中详细的分析了idle进程的启动,idle进程启动过程中会启动init进程与kthreadd进程,本文将详细分析kthreadd进程的启动过程。 1、kthreadd进程启动 由上篇文章分析可知,在rest_init函数中启动了kthreadd进程 static ...

2018-05-18 13:41:20

阅读数:5

评论数:0

AndroidO Treble架构下HIDL服务Java框架实现

前面介绍了HIDL服务在native层的实现过程,包括HIDL服务加载创建、服务注册、服务查询过程等,那么Java层是否也实现了相关的服务框架呢? 通常情况下,所有的Hal都实现在native层面...

2018-05-12 17:21:37

阅读数:67

评论数:0

AndroidO Treble架构下HIDL服务查询过程

通过前面的分析我们知道,Hal进程启动时,会向hwservicemanager进程注册hidl服务,那么当Framework Server需要通过hal访问硬件设备时,首先需要查询对应的hidl服...

2018-05-12 17:20:00

阅读数:79

评论数:0

AndroidO Treble架构下Tranport类型查询过程

通过前面文章的分析,我们知道,Client进程在查询hidl服务接口对象时,会根据该hidl服务的Tranport类型选择加载方式,如果是HWBINDER,那么就从hwservicemanager...

2018-05-12 17:19:10

阅读数:25

评论数:0

AndroidO Treble架构下hwservicemanager启动过程

hwservicemanager是hidl服务管理中心,负责管理系统中的所有hidl服务,由init进程启动。[html] view plain copy print?service&am...

2018-05-12 17:15:35

阅读数:16

评论数:0

AndroidO Treble架构下Binder对象的转换过程

上文中详细分析了Hal的整个启动过程,这里将补充上文中没有详细分析的Binder对象转换过程,下图为hidl服务的完整注册过程:1.  HwcHal继承于IBas...

2018-05-12 17:13:45

阅读数:91

评论数:0

AndroidO Treble架构下Hal进程启动及HIDL服务注册过程

通过前面对Treble架构的介绍,我们知道,Android Framework进程和Hal分离,每个Hal独立运行在自己的进程地址空间,那么这些Hal进程是如何启动的呢?本文以composer h...

2018-05-12 17:12:44

阅读数:30

评论数:0

AndroidO Treble架构下的变化

AndroidO引入Treble架构后,有那些变化呢?1. 增加了多个服务管家,AndroidO之前版本有且只有一个servicemanager,现在增加到3个,他们分管不同的服务。2.增加了bi...

2018-05-12 17:06:23

阅读数:107

评论数:0

AndroidO Treble架构下的接口文件编译

HIDL是一种接口定义语言,描述了HAL和它的用户之间的接口。同aidi类似,我们只需要为hal定义相关接口,然后通过hidl-gen工具即可自动编译生成对应的C++或者java源文件,定义...

2018-05-12 17:04:51

阅读数:110

评论数:0

AndroidO Treble架构分析

从AndroidO开始,google引入了Treble架构,目的是为了方便系统升级,将oem定制的东西和Framework分离。AndroidO之前的版本:在此之前的Android系统架构当中,A...

2018-05-12 17:03:02

阅读数:26

评论数:0

Android 8.0 系统启动流程之Linux内核启动--idle进程(一)

1、概述     上电后首先通过汇编指令去加载uboot引导程序,然后由uboot从分区中加载内核镜像等,并启动内核。本文将从启动内核开始分析,对于汇编启动的过程,此处不做分析,有兴趣的可以自行研究。     Linux内核启动主要涉及3个特殊的进程,idle进程(PID = 0), init...

2018-05-12 09:34:11

阅读数:28

评论数:0

surfaceflinger之buffer消费过程

    上一篇分析了buffer的生产过程,本文着重阐述生产者对buffer消费过程。这个过程需要弄清一下几个问题:   1、消费者是谁?   2、消费者如何从BufferQueue获取buffer显示?   3、buffer显示完成后如何释放? 1、消费者    Surfac...

2018-05-05 21:50:45

阅读数:27

评论数:0

surfaceflinger之buffer生产过程

  上一篇分析了surfaceflinger的生产-消费者模型,本文着重阐述生产者对buffer生产过程。这个过程需要弄清一下几个问题:   1、生产者是谁?   2、生产者如何从BufferQueue获取空闲buffer?   3、绘制完成后的buffer如何压入BufferQueue中,...

2018-04-28 15:37:08

阅读数:53

评论数:0

surfaceflinger之buffer生产者与消费者模型简介

  应用获取画布surface流程分析了申请Surface时,在SurfaceFlinger中会创建对应的layer。而在创建layer时,就会去创建生产者消费者模型。本文着重阐述生产者消费者的创建及使用。 1、模型创建入口 1.1 layer创建 第一次由强智能指针(sp)引用时,会执行o...

2018-04-21 16:20:54

阅读数:66

评论数:0

activity令牌token

1、概述     activity的启动过程中涉及到Android framework中的很多个层次,如活动管理者、窗口管理者、客户端应用APP。它们之间是如何实现一一对应的? 2、Token创建:     activity启动过程会去创建ActivityRecord对象记录该活动的信息...

2018-04-16 21:44:10

阅读数:74

评论数:0

应用获取画布surface流程

    前面我们已经分析了activity通过SurfaceComposerClient在surfaceflinger服务中创建了一个Client。在本文中,我们将详细分析应用获取画布Surface流程。在分析Surface创建流程时,会涉及显示缓冲区队列相关知识,本文只是简单一笔带过,将在后面做...

2018-04-07 22:38:24

阅读数:110

评论数:0

SurfaceComposerClient与SurfaceFlinger建立通信流程

  前面我们已经分析了activity从创建到调用本地方法去创建SurfaceComposerClient的过程。在本文中,我们将详细分析SurfaceComposerClient创建时是如何绑定SurfaceFlinger。 1、申请SurfaceComposerClient入口 [-&am...

2018-04-02 19:53:49

阅读数:102

评论数:0

Activity创建到与SurfaceComposerClient建立通信流程

1. 概述   应用程序是通过activity来展现,那么activity是如何完成绘制并显示呢?其实应用程序的显示是和surface有关,那么activity与surface有是什么关系呢?接下来几篇文章将以这个为出发点分析,应用程序是如何一步步通过activity、surface呈现出用户界...

2018-01-04 11:51:01

阅读数:130

评论数:0

SELinux 权限问题调试

1.概述  SELinux全称是Security Enhanced Linux,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击2.问题定位  通过指令cat /proc/kmsg | grep denied,或者kernel的Log中定位到...

2017-12-28 11:34:07

阅读数:263

评论数:0

Android surfaceflinger (4) -Vsync产生上报流程

1、垂直同步信号VSync(即V-Sync垂直同步)的具体含义和用途文章不细说,看下图的VSync的位置大致也就知道它的用途(简单理解成是硬件定时中断貌似也可以,周期性的硬件中断,频率为60Hz,周期为0.0167s,也就是16ms)。 本文主要关注以下几个问题: \ (1)VSync是如何...

2017-10-25 21:12:16

阅读数:205

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭