好久没写过博客了,也没怎么研究过源码,偶尔看到别人的博客都是系列研究,自愧不如啊,所以也下下来android源码开始看了,参考网上的讲解,结合源码。希望这样记录下自己的阅读历程,也不枉虚度时光了。
先从android的Binder驱动说起吧,以前也不懂Linux驱动,有说错的地方敬请谅解,欢迎指正。
一、驱动注册就不详细说了binder_init
1、初始化工作队列binder_deferred_workqueue = create_singlethread_workqueue("binder");
2、注册设备misc_register(&binder_device->miscdev);
3、注册到内核的函数
static const struct file_operations binder_fops = {
.owner = THIS_MODULE,
.poll = binder_poll,
.unlocked_ioctl = binder_ioctl,
.compat_ioctl = binder_ioctl,
.mmap = binder_mmap,
.open = binder_open,
.flush = binder_flush,
.release = binder_release,
};
自己的一些理解:binder_deferred_workqueue用于延时任务,以后再详细说,其它的都好理解,虽然机制不了解,但是不影响后续分析,不再深入研究。
二、然后就是打开bin