SocketCAN:如何查询缓冲区使用情况

问题描述

我正在尝试确定Linux上我的CAN接口的缓冲区使用情况。

在界面一级,我知道两种获取统计信息的方式:

  • 来自/proc/net/can/stats
  • ip -details -statistics link show can0

第一个给我发送/接收的帧数。第二个数字给出了发送/接收的字节和数据包的数量,以及丢弃的数据包和溢出的数量。 不幸的是,这些都没有显示缓冲区中当前的帧/字节数。

注意:我知道我们可以设置txqueuelen(ifconfig can0 txqueuelen <len>),将其设置得太低会在write: No buffer space available填满时触发。但是我仍然无法随时获得队列中的帧数。

在套接字级别(套接字的打开是这样的:socket(PF_CAN,SOCK_RAW,CAN_RAW)),我试图查询输入/输出队列的大小(可以在Internet套接字上完成):

int queued_in = -1;
ioctl(sockfd,SIOCINQ,&queued_in);
int queued_out = -1;
ioctl(sockfd,SIOCOUTQ,&queued_out);

但是两个变量的值仍为-1,因此未写入。我在这里做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)