zoukankan      html  css  js  c++  java
  • Linux嵌入式学习-远程过程调用-Binder系统

     Binder系统的C程序使用示例
    IPC : Inter-Process Communication, 进程间通信
    RPC : Remote Procedure Call, 远程过程调用

    这里我们直接只用android系统中已经实现好的Bindrt系统。

    具体源代码在 frameworks ativecmdsservicemanager目录下。


    service_manager.c :
    a. binder_open
    b. binder_become_context_manager
    c. binder_loop(bs, svcmgr_handler);
       c.1 res = ioctl(bs->fd, BINDER_WRITE_READ, &bwr);
       c.2 binder_parse
              // 解析
              // 处理  : svcmgr_handler
                           SVC_MGR_GET_SERVICE/SVC_MGR_CHECK_SERVICE : 获取服务
                           SVC_MGR_ADD_SERVICE : 注册服务         
              // 回复         

    bctest.c
    注册服务的过程:
    a. binder_open
    b. binder_call(bs, &msg, &reply, 0, SVC_MGR_ADD_SERVICE)
                       // 含有服务的名字
                             // 它会含有servicemanager回复的数据
                                     // 0表示servicemanager
                                        // code: 表示要调用servicemanager中的"addservice函数"


    获取服务的过程:
    a. binder_open
    b. binder_call(bs, &msg, &reply, target, SVC_MGR_CHECK_SERVICE)
                       // 含有服务的名字
                             // 它会含有servicemanager回复的数据, 表示提供服务的进程
                                     // 0表示servicemanager
                                        // code: 表示要调用servicemanager中的"getservice函数"
                                       

    binder.c (封装好的C函数)

    相关代码:https://github.com/qq2216691777/AndroidStudioProjects

    版本 V10

  • 相关阅读:
    C语言文法修改
    C语言文法
    词法分析程序实验报告
    php设置http响应头和数据库查询字符集编码
    提交form前先使用JS进行验证
    iOS 移动端清除按钮的默认样式
    innerText与textContent的异同
    JS事件应用
    docker redis安装
    cmder的快捷键
  • 原文地址:https://www.cnblogs.com/ynxf/p/6916785.html
Copyright © 2011-2022 走看看