Linuxの(ストリームではない)ソケットから読み取るとき、最後に受信したメッセージの(ハードウェアで生成された)タイムスタンプをioctl(sock, SIOCGSTAMP, &tv)
で取得できます。しかし、これは二つの問題提起:ソケットの読み込みとタイムスタンプ
- それは別のシステムコールである(私は毎秒約24000のメッセージを受信していますが、その各システムコールは届け出である)で
- 場合は、このアプローチを使用して、私ができる唯一の
read()
一つのメッセージ時刻はioctl()
となり、タイムスタンプが取得されます。 (私は、以下の、read()
-callに複数のメッセージを読んでいる場合ioctl
のみ最後のメッセージのタイムスタンプを生成する。)
私の質問は、わずかシステムコールでメッセージとそのタイムスタンプを受けて実現する方法でありますできるだけ。 「保留中のメッセージとそのタイムスタンプ」などのセマンティクスを持つシステムコールがあれば完璧です。
あなたのシステムコールの問題を解決しましたか? –
以下の解決策は解決策です。私は非常に古いカーネルバージョンのためにそれを使用できませんでした。 – pmf