Xlight API用户手册 v1.7.0.12
Xlight极速柜台接口文档
载入中...
搜索中...
未找到
xlt_quote_latency.h
浏览该文件的文档.
1
21#pragma once
22
23#include <cstdint>
24#include <ctime>
25
26#ifdef __x86_64__
27#include <x86intrin.h>
28#endif
29
30namespace x1 {
31
33extern thread_local uint64_t g_quote_rx_tsc;
34
36extern thread_local uint64_t g_quote_rx_timestamp_ns;
37
39extern thread_local uint64_t g_quote_rx_poll_return_ns;
40
42extern thread_local uint64_t g_quote_rx_before_notify_ns;
43
44extern thread_local uint32_t g_quote_rx_frame_bytes;
45extern thread_local uint32_t g_quote_rx_poll_batch_size;
46extern thread_local uint32_t g_quote_rx_poll_event_index;
47
53inline uint64_t xlt_quote_rx_timestamp_ns() {
55}
56
61 return g_quote_rx_timestamp_ns != 0;
62}
63
67
68inline uint64_t xlt_quote_rx_poll_return_ns() {
70}
71
75
76inline uint32_t xlt_quote_rx_frame_bytes() {
78}
79
83
87
92inline uint64_t xlt_quote_rx_timestamp_tsc() {
93 return g_quote_rx_tsc;
94}
95
96inline void xlt_quote_set_rx_timestamps(uint64_t rx_tsc,
97 uint64_t timestamp_ns,
98 uint64_t poll_return_ns = 0,
99 uint64_t before_notify_ns = 0,
100 uint32_t frame_bytes = 0,
101 uint32_t poll_batch_size = 0,
102 uint32_t poll_event_index = 0) {
103 g_quote_rx_tsc = rx_tsc;
104 g_quote_rx_timestamp_ns = timestamp_ns;
105 g_quote_rx_poll_return_ns = poll_return_ns;
106 g_quote_rx_before_notify_ns = before_notify_ns;
107 g_quote_rx_frame_bytes = frame_bytes;
108 g_quote_rx_poll_batch_size = poll_batch_size;
109 g_quote_rx_poll_event_index = poll_event_index;
110}
111
116inline uint64_t xlt_quote_rx_latency_ns() {
117 struct timespec ts;
118 clock_gettime(CLOCK_REALTIME, &ts);
119 return (uint64_t)ts.tv_sec * 1000000000ULL + (uint64_t)ts.tv_nsec;
120}
121
126inline uint64_t xlt_quote_rx_latency_tsc() {
127#ifdef __x86_64__
128 unsigned int aux;
129 return __rdtscp(&aux);
130#else
131 // fallback: 非x86架构
132 struct timespec ts;
133 clock_gettime(CLOCK_MONOTONIC, &ts);
134 return (uint64_t)ts.tv_sec * 1000000000ULL + ts.tv_nsec;
135#endif
136}
137
138} // namespace x1
定义 xlt_data_type.h:13
uint64_t xlt_quote_rx_before_notify_ns()
定义 xlt_quote_latency.h:72
uint64_t xlt_quote_rx_latency_tsc()
读取当前 TSC(用于在 on_quote 入口计算延迟)
定义 xlt_quote_latency.h:126
uint32_t xlt_quote_rx_poll_batch_size()
定义 xlt_quote_latency.h:80
uint32_t xlt_quote_rx_poll_event_index()
定义 xlt_quote_latency.h:84
thread_local uint64_t g_quote_rx_before_notify_ns
内部使用:诊断时间点,调用 on_quote 前的系统UTC ns。
uint64_t xlt_quote_rx_timestamp_ns()
获取 API 内部收到 UDP 包时记录的硬件时间戳
定义 xlt_quote_latency.h:53
thread_local uint32_t g_quote_rx_frame_bytes
thread_local uint64_t g_quote_rx_tsc
内部使用:API 在调用 on_quote 前写入软件收包 TSC。
uint64_t xlt_quote_rx_latency_ns()
读取当前 UTC 纳秒时间戳
定义 xlt_quote_latency.h:116
uint64_t xlt_quote_rx_timestamp_tsc()
获取 API 内部收到 UDP 包时记录的软件 TSC 时间戳
定义 xlt_quote_latency.h:92
uint64_t xlt_quote_rx_poll_return_ns()
定义 xlt_quote_latency.h:68
void xlt_quote_set_rx_timestamps(uint64_t rx_tsc, uint64_t timestamp_ns, uint64_t poll_return_ns=0, uint64_t before_notify_ns=0, uint32_t frame_bytes=0, uint32_t poll_batch_size=0, uint32_t poll_event_index=0)
定义 xlt_quote_latency.h:96
thread_local uint32_t g_quote_rx_poll_batch_size
thread_local uint64_t g_quote_rx_poll_return_ns
内部使用:诊断时间点,ef_eventq_poll 返回后的系统UTC ns。
thread_local uint64_t g_quote_rx_timestamp_ns
内部使用:EFVI硬件RX时间戳(UTC ns),未开启或不可用时为0。
uint32_t xlt_quote_rx_frame_bytes()
定义 xlt_quote_latency.h:76
thread_local uint32_t g_quote_rx_poll_event_index
bool xlt_quote_has_rx_latency_breakdown()
定义 xlt_quote_latency.h:64
bool xlt_quote_has_rx_hw_timestamp()
当前回调对应的UDP包是否拿到了EFVI硬件RX时间戳
定义 xlt_quote_latency.h:60