套接字读取和时间戳

pmf*_*pmf 5 c sockets timestamp system-calls

当从Linux中的(非流)套接字读取时,我可以通过a获得最后收到的消息的(硬件生成的)时间戳ioctl(sock, SIOCGSTAMP, &tv).但是,这会带来两个问题:

  • 这是另一个系统调用(我每秒收到大约24000条消息,因此每个系统调用都是通知的)
  • 如果使用这种方法,我一次只能有read()一条消息,然后是ioctl()获取时间戳.(如果我在read()-call中读取多条消息,则以下内容ioctl仅生成最后一条消息的时间戳.)

我的问题是如何在尽可能少的系统调用中实现接收消息及其时间戳.如果存在一个具有语义的系统调用,例如"读取待处理的消息及其时间戳",那将是完美的.

Nik*_*sov 6

recvmmsg(2)如果内核可用,请使用系统调用,并设置SO_TIMESTAMP选项.