ZChongr

海岛冰轮初转腾

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

《未来简史》读书笔记

春节期间如预期完成了两个计划:1、读完了《Android系统源代码情景分析》并给大部分章节写了读书笔记,当然这个目标大部分是利用了2016年的业余时间完成的,春节只是给他画了个句号。2、读完了《未来简史》,这是用五天的时间读完的。 《未来简史》这本书很好读,思路清晰。他首先分析了现代人类赋予...

2017-02-02 00:42:46

阅读数:2309

评论数:0

binder学习笔记(十四)—— binder_thread_read(...)都干了什么?

在binder请求的发起端,binder_transaction(…)函数的结尾,第#198行,它将struct binder_transaction的work字段插入target_list的尾部,然后完成发起端的工作。 在接收端binder_loop(…)函数的第#19行,也在通过调用io...

2016-08-13 20:18:34

阅读数:2097

评论数:0

Binder学习笔记(十三)—— 小结

驱动层为什么要篡改binder_buffer内的数据?先给出这张图: 上图中标红的部分需要重点考虑,为什么驱动层要篡改这两个字段呢?我们结合前面的文章或许可以找出端倪。在Binder学习笔记(七)—— ServiceManager如何响应addService请求 ?一文中其实留下了挺多疑问。...

2016-08-07 23:41:06

阅读数:986

评论数:4

Binder学习笔记(十二)—— binder_transaction(...)都干了什么?

binder_open(…)都干了什么?在回答binder_transaction(…)之前,还有一些基础设施要去探究,比如binder_open(…),binder_mmap(…),这些调用是在打开设备文件/dev/binder之后必须完成的程式化操作,而在它们内部需要做一些数据结构的准备。首先...

2016-08-01 01:11:43

阅读数:4630

评论数:3

Binder学习笔记(十一)—— 智能指针

轻量级指针Binder的学习历程爬到驱动的半山腰明显感觉越来越陡峭,停下业务层的学习,补补基础层知识吧,这首当其冲的就是智能指针了,智能指针的影子在Android源码中随处可见。打开frameworkds/rs/cpp/util,RefBase.h和StrongPointer.h两个文件,代码多读...

2016-06-13 00:58:42

阅读数:3834

评论数:0

binder学习笔记(十)—— 穿越到驱动层

Binder驱动层的代码在kernel/goldfish/drivers/staging/android下的binder.c和binder.h。Android源码是不带Linux内核的,驱动正是在这个内核里,需要单独下载,出门左转参见《Anrdoid源码、内核编译》。驱动的相关知识先不在这里展开了...

2016-05-28 22:53:01

阅读数:853

评论数:0

Binder学习笔记(九)—— 服务端如何响应Test()请求 ?

从服务端代码出发,TestServer.cppint main() { sp < ProcessState > proc(ProcessState::self()); sp < IServiceManager > sm = defaultServiceMan...

2016-05-15 15:30:10

阅读数:4368

评论数:0

Binder学习笔记(八)—— 客户端如何组织Test()请求 ?

还从客户端代码看起TestClient.cpp:14int main() { sp < IServiceManager > sm = defaultServiceManager(); // new BpServiceManager(new BpBinder(0)); ...

2016-05-15 15:27:18

阅读数:429

评论数:0

Binder学习笔记(七)—— ServiceManager如何响应addService请求 ?

有了《ServiceManager如何响应checkService请求》的探索,研究addService就轻车熟路了,中间过程不再多说,仅把关键节点列出: frameworks/native/cmds/servicemanager/service_manager.c:347int main(in...

2016-05-15 15:25:33

阅读数:511

评论数:0

Binder学习笔记(六)—— binder服务端是如何组织addService数据的?

在checkService的调查中我们知道客户端向ServiceManager请求服务名,ServiceManager根据服务名遍历本地链表,找到匹配的handle返回给客户端。这个handle显然是由服务端注册的,这个handle究竟是什么?要先搞清楚这个问题,必须研究服务端和ServiceMa...

2016-05-15 15:24:08

阅读数:329

评论数:0

Binder学习笔记(五)—— Parcel是怎么打包的?

前文中曾经遇到过Parcel,从命名上知道他负责数据打包。在checkService的请求/响应体系中,Parcel只打包了基本数据类型,如Int32、String16……后面还要用于打包抽象数据类型flat_binder_object,这会稍微复杂一些,因此有必要拿出来单独研究。我们从Parce...

2016-05-15 15:22:50

阅读数:648

评论数:0

Binder学习笔记(四)—— ServiceManager如何响应checkService请求

这要从frameworks/native/cmds/servicemanager/service_manager.c:347的main函数说起,该文件编译后生成servicemanager。int main(int argc, char **argv) { struct binder_st...

2016-05-15 15:20:45

阅读数:4418

评论数:0

inder学习笔记(三)—— binder客户端是如何组织checkService数据的 ?

起点从TestClient.cpp的main函数发起:int main() { sp < IServiceManager > sm = defaultServiceManager(); sp < IBinder > binder = sm->getSe...

2016-05-15 15:15:46

阅读数:647

评论数:0

使用hexo搭建博客并上传GitHub

之前在博客园、简书、CSDN等地儿都开过博,一篇文章写好了,我希望能在几个平台可以同步发布,可是操作起来成本不低。几个平台下的富文本编辑器比较起来还是博客园更顺手,看着更舒服,尤其是代码块的操作灵活、准确。而CSDN对代码块内的文字加粗、修改字色后就会出现html文无法解析的情况,混杂着代码和ht...

2016-05-14 20:23:39

阅读数:1491

评论数:0

Binder学习笔记(一)

网上看了很多关于binder的文章,但我还是想把自己的心路历程记录下来,有些是跟着别人的脚步领略险峻风景,有些则是自己只身探入代码深处打捞出的收获。我不确定是否全部融会贯通,更担心一两个月后会完全不记得来时的路。最好的验证和留存的方法是把他们写成博文,几个月后回头再来读,看是否还能读得明白。如果可...

2016-05-08 23:47:43

阅读数:1477

评论数:0

Binder学习笔记(二)——defaultServiceManager()返回了什么?

不管是客户端还是服务端,头部都要先调用 sp sm = defaultServiceManager(); defaultServiceManager()都干了什么,它返回的是什么实例呢? 该函数定义在frameworks/native/libs/binder/IserviceManager...

2016-05-09 21:50:18

阅读数:1444

评论数:0

Android6的Logger日志系统

Android2.x中Logger日志系统采用了字符设备驱动来支持,到了Android6.0已经找不到kernel/goldfish/drivers/staging/android/logger.c这一层的驱动程序了。不过上层接口还是没变的,所以顺着最顶层接口,可以一路找到6.0下Logger的实...

2016-03-06 12:42:19

阅读数:738

评论数:0

Android emulator中C代码的调试——gdb/gdbservers时遇到的坑

先写个helloworld吧,在Android源码树中创建文件夹external/helloworld,加入文件: // helloworld.c #include #include int main(int argc, char** arv) { printf("Hell...

2016-03-02 17:51:40

阅读数:655

评论数:0

Android源码树中C代码的编译

侯 Sir说:“源码之下,了无秘密。” 但有些秘密还是要搞起来了看得更真切,仅从静态代码的体位很难体会到运动时的妙处。因此环境搭好了,下一步就是调试。gdbserver搭配gdb的调试环境走得很顺利,可是mmm出的C代码总是没有debugging symbol。在调研原因的过程中倒是熟悉了一些工具...

2016-02-29 23:50:22

阅读数:401

评论数:0

Android源码、内核编译

Android源码和内核的编译就是一场马拉松,每一个节点都耗时漫长,下载源码、编译源码、下载内核、编译内核,下载中途会断掉,编译中间会失败,求解再重来,又是一轮马拉松,于是每一步都要做好备份和记录,可是30G的源码(编译后已经达到70G)备份一次都需要好久。好在春节伊始我放弃了其他的学习,全力搞这...

2016-02-22 17:38:25

阅读数:1528

评论数:0

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