博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
netlink_unicast return -11 (EAGAIN)
阅读量:4117 次
发布时间:2019-05-25

本文共 342 字,大约阅读时间需要 1 分钟。

我碰到一个很奇怪的问题,内核调用netlink_unicast发送无线驱动收到的无线帧到用户态,一开始还好的,都正常发送。大约发了几十KB的数据之后,这个调用就出错了,返回-11,查代码是EAGAIN。

内核中走到这个位置 :
netlink_unicast()
调用了函数->netlink_attachskb()来将报文放到目的SOCKET 的接收缓冲区中。
netlink_attachskb的实现是判断目的SOCKET的接收队列已使用空间sk_rmem_alloc,如果比它的接收缓冲区大小sk_rcvbuf大的话,意味着放不下,此时就进入等待队列,超时的话,就丢弃此SKB,返回-EAGAIN。

改进方法:

将用户态进程的printf()去掉,加快处理速度,避免接收不及时。

转载地址:http://naypi.baihongyu.com/

你可能感兴趣的文章
获取硬件信息
查看>>
程序员的五种类型
查看>>
中兴Android面试题
查看>>
java逐行读取和写入文本文件txt
查看>>
SQL Server ldf文件的处理技巧
查看>>
面向对象相关
查看>>
Android 4.0的12大新特性
查看>>
提高代码质量的方法有哪些?
查看>>
你对VisualODX——ODX自动转换工具知多少?
查看>>
NetXpert XG帮您解决“布线安装与维护”难题
查看>>
基于ISO13400(DoIP)实现车辆刷写
查看>>
SQLite使用小例
查看>>
Jenkins快速搭建与构建注意事项
查看>>
oracle 数据库连接
查看>>
C 语言中的回车换行符
查看>>
ORACLE中的字符串替换 replce、regexp_replace 和 translate
查看>>
新装的 ORACLE 忘记了 sys 用户密码
查看>>
Linux环境下句柄的理解
查看>>
Oracle 分区表操作实例
查看>>
短信网关错误代码
查看>>