You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行时判断Linux系统不支持TX时间戳?

如何在不依赖ethtool的情况下判断Linux TX时间戳不可用?

我在测试Linux的TX时间戳功能时发现,没有简便的运行时方法能判断系统是否完全无法提供TX时间戳。哪怕是在完全不支持TX时间戳的系统上,调用setsockopt启用相关选项也不会报错:

int val = SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_SOFTWARE | SOF_TIMESTAMPING_OPT_ID;
int rc = setsockopt(fd, SOL_SOCKET, SO_TIMESTAMPING, &val, sizeof(val));
assert(rc == 0);

之后调用getsockopt重新检查选项,也会返回已应用的配置:

int val = 0;
socklen_t len = sizeof(val);
int rc = getsockopt(fd, SOL_SOCKET, SOF_TIMESTAMPING, &val, &len);
assert(rc == 0);
assert(val == SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_SOFTWARE | SOF_TIMESTAMPING_OPT_ID);

但实际场景中,MSG_ERRQUEUE不会生成任何消息——而TX时间戳正是通过这个机制上报的。

我知道可以通过执行sudo ethtool -T IFNAME来查看系统的时间戳支持情况,比如某台系统的输出如下:

Time stamping parameters for lo:
Capabilities:
        software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)
        software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
PTP Hardware Clock: none
Hardware Transmit Timestamp Modes: none
Hardware Receive Filter Modes: none

但我的代码无法依赖ethtool,因为它需要sudo权限且是独立工具。请问有没有其他方法可以判断TX时间戳不可用?


内容的提问来源于stack exchange,提问作者NwMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:45:41