• 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

  • 相关阅读:
    Windows各个文件夹介绍
    Zabbix使用外部命令fping处理ICMP ping的请求
    QT 样式表实例
    QT 样式表基础知识
    cocos2d-js入门一
    try throw catch typeid
    cocos2d-x入门三 分层设计框架
    cocos2d-x入门二 helloworld实例运行与创建
    cocos2d-x入门一
    批量操作QT UI中的控件
  • 原文地址:https://www.cnblogs.com/ynxf/p/6916785.html
Copyright © 2020-2023  润新知