0.DPDK

77E02E3E-42A3-4014-A9F8-33E0093EE357.png
在DPDK里面在各種網(wǎng)卡驅(qū)動程序里面找到了一些關于添加時間戳的函數(shù),不同的網(wǎng)卡驅(qū)動程序都調(diào)用了rte_timecounter_update函數(shù)和rte_ns_to_timespec函數(shù),這個兩個函數(shù)定義在dpdk-16.07/lib/librte_eal/common/include/rte_time.h中,大概的意思是要讀取硬件的時鐘減去上一次存在結(jié)構(gòu)體里面的時鐘得到的差去計算時間吧
讀取當前硬件的時鐘是用了一個xxx_read_systime_cyclecounter函數(shù)(xxx是不同驅(qū)動的名字,各自定義在自己的驅(qū)動文件中)

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 函數(shù)在/linux-2.6.32.5/net/core/dev.c
ktime_to_timeval 函數(shù)在 /linux-2.6.32.5/include/linux/ktime.h
ktime_to_ns函數(shù)在 /linux-2.6.32.5/include/linux/ktime.h
ktime_to_ns(skb_hwtstamps(skb)->hwtstamp)函數(shù)里面的skb_hwtstamps 在 /linux/skbuff.h