- 博客(14)
- 资源 (7)
- 收藏
- 关注
原创 selinux(案例) recovery删除data目录下的文件
在recover升级的时候,我们有个需要从服务器上下载升级包,然后放在data/download,这部分工作是放在一个systemapp中完成的。然后重启进入recoveyr模式,在recovery升级完之后,我们需要在recovery中删除这个文件,这部分是在recovery中完成。功能很简单,但是在android6.0上碰到selinux的问题。我们先来看recovery.te中是
2016-06-24 15:17:01 6820 9
原创 Android Binder ProcessState & IPCThreadState相关介绍
之前几篇博客我们介绍了传统Binder的使用方法,包括c层和java层,这篇博客我们主要介绍下ProcessState和IPCThreadState类的相关方法。一、正常demon binder调用流程在一个传统的demon中,如果我们要使用Binder通信,代码大致如下:int main(int argc, char** argv) { sp proc(P
2016-06-23 17:29:14 3496
原创 Binder通信过程中的用户空间线程池的管理
在Binder通信机制里,客户端与服务端之间的通信是在专门的IPC通信线程中进行的。这些线程构成一个线程池。线程的创建和销毁是在用户空间进行的,而对线程的控制是在驱动层进行的,即驱动控制线程池中线程的生命,而线程本身则是运行在用户空间的。驱动层是通过BR_SPAWN_LOOPER向用户空间发送创建新线程的命令。线程池的大小可以设置, 如果没有主动去设置这个大小,则默认大小为15,如下代
2016-06-23 16:19:10 3085
转载 Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
在上一篇文章中,我们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理。在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的getService接口中来获得Server远程接口的
2016-06-23 14:55:28 1117
转载 Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路中,介绍了在Android系统中Binder进程间通信机制中的Server角色是如何获得Service Manager远程接口的,即defaultServiceManager函数的实现。Server获得了Service Manager远程接
2016-06-23 14:49:34 1327
转载 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的。既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了。那么,Server和Client如何获得Service Manager接口,进而享受它提供
2016-06-23 14:21:15 596
转载 简介android Binder
在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。 我们知道,Android系统是基于Linux内核的,而Linux内核继
2016-06-23 14:16:31 702
转载 Linux 下的两个特殊的文件 -- /dev/null 和 /dev/zero
1、概论 -- 来自维基的解释/dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流
2016-06-21 10:27:26 4467
原创 AlarmManagerService的hal层分析
之前我们分析过AlarmManagerService了,这里我们主要分析下其hal层。我们先来看onStart这段代码: public void onStart() { mNativeData = init();这个init函数是native函数,是用来初始化hal层的。mNativeData数据就是从hal层函数返回。一、有alarm设备我们看下
2016-06-12 17:07:53 2159
原创 android6.0 PowerManagerService Notifier分析
这个类在PowerManagerService中是非常重要的,当PowerManagerService的状态改变时,都是靠这个类通知。比如常用的灭屏和亮屏广播,也是在这个类中发送的。一、Notifier初始化首先我们来看它在PowerManagerService构造函数中的初始化: mNotifier = new Notifier(Looper.getMa
2016-06-07 20:30:54 3087
原创 android6.0 PowerManagerService dream分析
上一篇博客分析了PowerManagerService的各种状态,最后分析到dream相关,讲的不详细。这里我们再分析下。一、Dream关闭首先我们结合打印的log,看看handleSandman函数,log直接加在下面的函数中。当然我们现在说的情况是mWakefulness是dozing状态。 private void handleSandman() { // runs
2016-06-07 11:31:47 5014 1
原创 android6.0 PowerManagerService状态分析
这篇博客我们主要分析下PowerManagerService的各个状态,主要从goToSleep,wakeUp,userActivity,nap函数作为入口分析。一、PowerManagerService的goToSleep函数我们先来看下goToSleep函数:goToSleep函数主要调用了goToSleepInternal函数: private void
2016-06-06 20:04:11 9477 7
原创 android6.0 power按键深入分析
这篇博客主要分析power按键点亮屏幕和灭屏,而且我们主要分析在PhoneWIndowManager的流程。之前的博客我们分析过按键的流程,当有按键会先到PhoneWindowManager的interceptKeyBeforeQueueing函数,然后再去分析到应用,而power按键也是如此,并且其最后不会分发到应用中去,下面我们看下PhoneWindowManager的interceptK
2016-06-02 20:28:20 12770
原创 Android6.0 wakelock深入分析
这篇博客我们分析下Power的持锁,从PowerManager到PowerManagerService再到hal分析。一、PowerManager的持锁接口我们先来看下PowerManager对应用提供的接口: public WakeLock newWakeLock(int levelAndFlags, String tag) { validateWakeLock
2016-06-02 14:30:21 8456 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人