以下是本人学习部分binder系统后自己对binder系统总体的想法领悟。欢迎各位大神指正。
把binder驱动系统比作中介 ,把client比作需要找工作的工人,把server比作工厂,把service比作工作岗位。
工人(client)端:
工人通过电话打通中介(binder_open函数),然后用bio_init bio_put_xxx函数组织语言,然后告诉中介自己需要什么具体的工作(binder_call函数,code代表具体的工作也就是要调用的函数),通过binder_get_xxx系列函数得到中介返回的信息,最后调用binder_done函数结束通话。
工厂(server)端:类似工人。不同的地方是它告诉中介它可以提供工作岗位。
中介:当中介接到工人的请求找什么具体工作(对应code)会把这个请求告诉工厂,工厂接收到中介的信息会查找自己厂里有没有这种工作岗位,如果有则会告诉中介然后工人顺利找到自己想要的工作(调用相应的函数实习目的)。
工人 工厂 和中介说话是通过binder_call函数实现的(client server 和binder驱动通信是用binder_call函数实现的) server要先于client运行,否则client获取服务会失败。
工厂(server)端:类似工人。不同的地方是它告诉中介它可以提供工作岗位。
中介:当中介接到工人的请求找什么具体工作(对应code)会把这个请求告诉工厂,工厂接收到中介的信息会查找自己厂里有没有这种工作岗位,如果有则会告诉中介然后工人顺利找到自己想要的工作(调用相应的函数实习目的)。
工人 工厂 和中介说话是通过binder_call函数实现的(client server 和binder驱动通信是用binder_call函数实现的) server要先于client运行,否则client获取服务会失败。