2011年Android Binder机制学习笔记之一

简介: 2011年Android Binder机制学习笔记之一 一.Bn是什么缩写? Binder Native 二.Bp是什么缩写? Binder Proxy 三.Binder两个方面? 从应用程序的角度看Binder一共有两个方面: ■Native 本地:例如BnABC,这是一个需要被继承和实现的类。

2011Android Binder机制学习笔记之一

一.Bn是什么缩写?

Binder Native

二.Bp是什么缩写?

Binder Proxy

三.Binder两个方面?

从应用程序的角度看Binder一共有两个方面:

Native 本地:例如BnABC,这是一个需要被继承和实现的类。

Proxy 代理:例如BpABC,这是一个在接口框架中被实现,但是在接口中没有体现的类。

客户端:例如客户端得到一个接口ABC,在调用的时候实际上被调用的是BpABC

四.Binder的驱动程序在哪个目录?

kernel/include/linux/binder.h

kernel/drivers/android/binder.c

五.Binder驱动是一个什么设备?

是一个miscdevice,主设备号为10

六.Binder设备节点,或者说文件路径是什么?

/dev/binder

七.Binder驱动程序在proc文件系统建立的信息,包含什么信息?

proc目录:调用Binder各个进程的内容

state文件:使用函数binder_read_proc_state

stats文件:使用函数binder_read_proc_stats

transactions文件:使用函数binder_read_proc_transactions

transaction_log文件:使用函数binder_read_proc_transaction_log,其参数为binder_transaction_log (类型为struct binder_transaction_log)

failed_transaction_log文件:使用函数binder_read_proc_transaction_log 其参数为

binder_transaction_log_failed (类型为struct binder_transaction_log)

八.Binderproc文件夹位置:

/proc/binder

九.BRBC的含义

BR_XXX等宏为BinderDriverReturnProtocol,表示Binder驱动返回协议。

BC_XXX等宏为BinderDriverCommandProtocol,表示Binder驱动命令协议。

十.binder_thread数据结构是怎么样的?

struct binder_thread {

      struct binder_proc *proc;

     struct rb_node rb_node;

     int pid;

     int looper;

     struct binder_transaction *transaction_stack;

     struct list_head todo;

     uint32_t return_error;

     uint32_t return_error2;

     wait_queue_head_t wait;

     struct binder_stats stats;

};

十一binder_write_read是怎么样的?

struct binder_write_read {

     signed long write_size;

     signed long write_consumed;

     unsigned long write_buffer;

     signed long read_size;

     signed long read_consumed;

     unsigned long read_buffer;

};

十二binder_thread 的各个成员信息是从哪里获得的?

rb_node

十三Servicemanager的作用

servicemanager是一个守护进程,用该进程和/dev/binder进行通讯。

十四servicemanager可执行程序的路径

/system/bin/servicemanager

十五BnInterfaceBpInterface是两个重要的模版在哪个文件中定义的

IInterface.h文件中

十六.BnInterfaceBpInterface是如何定义的?

BnInterface模版的定义如下所示:

template class BnInterface : public INTERFACE, public BBinder

{

public:

    virtual sp  queryLocalInterface(const String16& _descriptor);

    virtual String16        getInterfaceDescriptor() const;

protected:

    virtual IBinder*        onAsBinder();

};

 

BpInterface模版的定义如下所示

template class BpInterface : public INTERFACE, public BpRefBase

{

public:

                            BpInterface(const sp& remote);

protected:

    virtual IBinder*    onAsBinder();

};

十七IsericeManager相关的两个文件是什么

ISericeManager.h

ISericeManager.cpp

十八.ISericeManager是系统最先被启动的服务

十九.IserviceManager知识要点:

1ISericeManager本地功能并没有使现,

2.它实际上由ServiceManager守护进程执行,

3.用户程序通过调用BpServiceManager来获得其他的服务

二十.如何得到默认的或者缺省的ISericeManager

ISericeManager.h中定义了一个接口,用于得到默认的ISericeManager

sp_defaultServiceManager();此时得到的ISericeManager实际上是一个全局的ISericeManager

相关文章
|
1月前
|
前端开发 编译器 Android开发
构建高效Android应用:探究Kotlin协程的异步处理机制
【4月更文挑战第2天】在现代移动应用开发中,提供流畅且响应迅速的用户体验是至关重要的。随着Android平台的发展,Kotlin语言凭借其简洁性和功能性编程的特点成为了主流选择之一。特别地,Kotlin协程作为一种新型的轻量级线程管理机制,为开发者提供了强大的异步处理能力,从而显著提升了应用程序的性能和响应速度。本文将深入探讨Kotlin协程在Android中的应用,分析其原理、实现以及如何通过协程优化应用性能。
|
4月前
|
存储 Java Android开发
Android系统升级的机制概要
Android系统升级的机制概要
52 0
|
21天前
|
安全 Java 定位技术
Android 浅度解析:AIDL & Binder (1)
Android 浅度解析:AIDL & Binder (1)
41 0
|
7天前
|
Android开发
Android Loader机制
Android Loader机制
12 1
|
1月前
|
API 调度 Android开发
探索Android应用程序的后台运行机制
在移动应用开发中,了解和掌握Android应用程序的后台运行机制至关重要。本文将深入探讨Android平台上应用程序的后台运行原理及其影响因素,包括后台服务、广播接收器、JobScheduler等关键组件,以及如何有效管理后台任务以提升应用性能和用户体验。
22 3
|
5月前
|
Android开发 容器
[Android]View的事件分发机制(源码解析)
[Android]View的事件分发机制(源码解析)
37 0
|
5月前
|
消息中间件 缓存 安全
android开发,使用kotlin学习消息机制Handler
android开发,使用kotlin学习消息机制Handler
102 0
|
5月前
|
安全 Android开发 Kotlin
android开发,使用kotlin学习Android权限机制
android开发,使用kotlin学习Android权限机制
45 0
|
7月前
|
缓存 安全 数据库
Android学习笔记4
Android学习笔记4
26 0
|
7月前
|
XML 数据库 数据安全/隐私保护
Android学习笔记3
Android学习笔记3
119 0