0.DPDK
77E02E3E-42A3-4014-A9F8-33E0093EE357.png
在DPDK里面在各种网卡驱动程序里面找到了一些关于添加时间戳的函数,不同的网卡驱动程序都调用了rte_timecounter_update函数和rte_ns_to_timespec函数,这个两个函数定义在dpdk-16.07/lib/librte_eal/common/include/rte_time.h中,大概的意思是要读取硬件的时钟减去上一次存在结构体里面的时钟得到的差去计算时间吧
读取当前硬件的时钟是用了一个xxx_read_systime_cyclecounter函数(xxx是不同驱动的名字,各自定义在自己的驱动文件中)
5A3DF97B-C618-4848-BFFA-05D0CAE330BF.png
25A5F05A-A530-4F15-8E99-C68647A7F0CC.png
这个截图是 drivers/net/ixgbe/ixgbe_ethdev.c <<ixgbe_timesync_read_rx_timestamp>>
2.PF_RING
CE8E06A9-F45B-4176-AC49-81CC848607BD.png
do_gettimeofday(&skb->stamp)
原形在/include/linux/time.h 中
net_timestamp
函数在/linux-2.6.32.5/net/core/dev.c
ktime_to_timeval
函数在 /linux-2.6.32.5/include/linux/ktime.h
ktime_to_ns
函数在 /linux-2.6.32.5/include/linux/ktime.h
ktime_to_ns(skb_hwtstamps(skb)->hwtstamp)
函数里面的skb_hwtstamps
在 /linux/skbuff.h