RDMA传输相关代码的问题整理

1、尝试安装softiWARP进行软件模拟RDMA传输,在没有硬件网卡的前提下进行实验。编译的时候遇到了问题。

直接编译会报错,“undefined reference to xxx”,意味着缺少链接库文件,所以加上-lrdmacm选项,但是依然报错。

根据提示,发现少了个libibverbs.so动态库的链接,所以再加上-libverbs即可。

2、编译成功,运行时出现segmentfault,仔细比对代码,发现是因为goto语句顺序有误。对于程序来说,如果某一时刻执行了goto语句,程序就会跳到对应的代码处顺序执行,在程序中,所有的goto语句都是顺序出现的,对应着不同的阶段,如果按照顺序放置goto语句,比如out_free_addrinfo,out_destroy_listen_ep,out_destroy_accept_ep,假如需要跳到out_free_addrinfo处,那么会继续向下执行,而此时并没有建立连接,所以out_destroy_accept_ep就是错误的。但是如果倒序放置,那么就不会报错,因为执行的goto语句对应的释放资源都是跳转之前已有的资源。这是一个小细节。也解决了之前的疑惑,为什么这些goto语句是倒序放置。

3、关于代码的几点疑惑

1)为什么最后的while循环中,if(ret<0)之后不再跳转了out_disconnect?

对于rdma_get_send_comp()和rdma_get_recv_comp()来说,成功返回0或1,失败返回-1。

第一个while中,如果ret=0,就一直循环,如果跳出,要么是1&#

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值