首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Infiniband协议

Infiniband协议
EN

Stack Overflow用户
提问于 2014-08-20 17:48:31
回答 1查看 425关注 0票数 1

在为IB设计驱动程序时,下面的结构和函数有什么作用?

代码语言:javascript
复制
struct ib_sa_client {
    atomic_t users;
    struct completion comp;
};

/**
 * ib_sa_register_client - Register an SA client.
 */
void ib_sa_register_client(struct ib_sa_client *client);

这将是非常友好的人来解释这些。

EN

回答 1

Stack Overflow用户

发布于 2014-08-23 06:52:02

这用于要执行SA (子网管理员)查询的高级驱动程序的引用计数/生存期处理。SA查询包括路径记录或服务记录查找-基本上是将查询发送到子网管理器以获取有关结构上其他实体的信息的任何内容。

这些查询是通过像ib_sa_path_rec_get这样的函数来完成的,这些函数的第一个参数是指向struct ib_sa_client的指针。这是必需的,因为这些查询是发往子网管理器的网络消息,我们需要等待响应,因此查询函数还需要一个回调参数。比方说,如果用户删除了启动SA查询的模块,我们不希望出现悬空回调。

因此,IB核心阻止ib_sa_unregister_client返回,直到所有挂起的查询完成;执行SA查询的任何模块都需要在其清理路径上调用注销函数。这可以防止内核在启动它的模块被移除后出现查询结束,这会导致跳转到回调函数,该回调函数的代码位于释放的内存中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25401636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档