返回介绍

4.2 binder 协议和数据结构

发布于 2024-12-23 21:29:01 字数 1518 浏览 0 评论 0 收藏 0

binder.h 文件中定义了 binder 协议和重要的数据结构。

首先在 enum 中定义了 binder 处理的类型,引用或是句柄

enum {
  BINDER_TYPE_BINDER  = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE),
  BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE),
  BINDER_TYPE_HANDLE  = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
  BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
  BINDER_TYPE_FD    = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
};

下面这段宏定义则是在 ioctl 函数调用时可用的具体命令。

#define BINDER_WRITE_READ     _IOWR('b', 1, struct binder_write_read)
#define BINDER_SET_IDLE_TIMEOUT   _IOW('b', 3, int64_t)
#define BINDER_SET_MAX_THREADS    _IOW('b', 5, size_t)
#define BINDER_SET_IDLE_PRIORITY  _IOW('b', 6, int)
#define BINDER_SET_CONTEXT_MGR    _IOW('b', 7, int)
#define BINDER_THREAD_EXIT    _IOW('b', 8, int)
#define BINDER_VERSION      _IOWR('b', 9, struct binder_version)

BinderDriverReturnProtocolBinderDriverCommandProtocol 中 则分别定义了 客户端调用 和 服务端 返回的命令。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文