2012-11-09 15 views
5

Linux'taki (akışsız) bir soketten okurken, en son alınan iletinin (donanım tarafından oluşturulan) zaman damgasını ioctl(sock, SIOCGSTAMP, &tv) aracılığıyla edinebilirim. Ancak, bu iki sorunlara yol açmaktadır:Yuva okuma ve zaman damgaları

  • Başka syscall (Ben saniyede yaklaşık 24000 iletiler alıyorum, bu yüzden her syscall ihbari) bir de
  • Eğer bu yaklaşımı kullanarak, elimden sadece read() bir mesaj zaman damgasını almak için ioctl() takip edin. (Ben ioctl aşağıdaki sadece son mesajın zaman damgası verir, bir read() çağırın birden fazla mesaj okuyorsam.)

Sorum olduğunca az sistem çağrıları mesajları ve bunların damgaları alma ulaşmak için nasıl olabildiğince. "Beklemedeki mesajları ve zaman damgalarını oku" gibi anlambilimsel bir sistem varsa mükemmel olurdu.

+1

Sistem sorununuza bir çözüm buldunuz mu? –

+1

Aşağıdaki kabul edilen çözüm bir çözümdür; Sadece eski çekirdek versiyonumdan dolayı kullanamadım. – pmf

cevap

6

recvmmsg(2) sistem çağrısı sisteminizi çekirdeğinizle birlikte kullanın ve SO_TIMESTAMP seçeneğini ayarlayın.

+1

Ah, sadece recvmsg ile karşılaştım, recvmmsg. Teşekkürler! – pmf

İlgili konular