1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
#ifndef _SAPP_DECLARATION_H_
#define _SAPP_DECLARATION_H_ 1
#ifdef __cplusplus
extern "C" {
#endif
#include "sapp_private_api.h"
#ifndef SAPP_MAX
#define SAPP_MAX(a, b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef SAPP_MIN
#define SAPP_MIN(a, b) (((a) < (b)) ? (a) : (b))
#endif
extern sapp_global_t *sapp_global_val;
extern volatile time_t g_current_time;
extern volatile long long g_current_time_ms;
#define MAX_DEFALUT_TIMEOUT_S 86400
/* ��Ƕ�ײ��̫��, ʹ�ü������ */
#define ABBR_SAPP_LOG_HANDLE sapp_global_val->individual_fixed.log_handle
#define ABBR_SAPP_PLUGIN_LOG_HANDLE sapp_global_val->individual_fixed.plugin_log_handle
#define ABBR_PROCESS_LATENCY_LOG_HANDLE sapp_global_val->individual_fixed.process_latency_log_handle
#define ABBR_SAPP_TIMER_HANDLE sapp_global_val->individual_fixed.sapp_timer_handle
#define ABBR_SAPP_START_TIME sapp_global_val->individual_fixed.sapp_start_time
#define ABBR_CURRENT_TIME g_current_time
#define ABBR_CURRENT_TIME_MS g_current_time_ms
#define ABBR_INJECT_RST_NUM sapp_global_val->config.stream.tcp.inject.rst_num
#define ABBR_INJECT_RST_SIGN sapp_global_val->config.stream.tcp.inject.rst_signature_enable
#define ABBR_INTERFACE_TYPE sapp_global_val->config.packet_io.internal.interface.type_bin
#define ABBR_CFG_FILE_MAIN_ENTRY sapp_global_val->config.cfg_file_path.cfg_main_entry_absolute
#define ABBR_PLUG_LIST_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_plug_list_absolute
#define ABBR_SAPP_LOG_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_sapp_log_absolute
#define ABBR_PROJECT_LIST_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_project_list_absolute
#define ABBR_PLUG_ENTRY_LIST_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_entry_list_absolute
#define ABBR_SEND_RAW_PKT_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_file_send_raw_pkt_absolute
#define ABBR_VXLAN_SPORT_MAP_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_file_vxlan_sport_map_absolute
#define ABBR_INLINE_DEV_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_file_inline_dev_absolute
#define ABBR_NECESSARY_PLUG_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_file_necessary_plug_absolute
#define ABBR_STREAM_CMP_LAYER_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_file_stream_compare_layer_absolute
#define ABBR_VLAN_FLIPPING_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_file_vlan_flipping_absolute
#define ABBR_ASYM_LAYER_ADDR_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_file_asymmetric_addr_layer_absolute
#define ABBR_WELL_KNOWN_PORT_CONF_FILE sapp_global_val->config.cfg_file_path.cfg_file_well_known_port_absolute
#define ABBR_SYSINFO_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_sysinfo_log_absolute
#define ABBR_FS2_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_fs2_log_absolute
#define ABBR_FS3_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_fs3_log_absolute
#define ABBR_FS4_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_fs4_log_absolute
#define ABBR_PROCESS_LATENTCY_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_fs2_process_latency_absolute
#define ABBR_INLINE_KEEPALIVE_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_inline_keepalive_log_absolute
#define ABBR_LOAD_PLUG_STAT_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_load_plugin_stat_log_absolute
#define ABBR_MARSIO_LIBRARY_FILE sapp_global_val->config.library_file_path.libmarsio_file_path
#define ABBR_MEMORY_STAT_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_memory_stat_log_absolute
/* ��֮ǰ��ɢ��ȫ�ֱ���ǿ�Ƹ���Ϊ�µ�ȫ�ֱ��� */
#define g_CurrentTime_ms g_current_time_ms
#define g_CurrentTime g_current_time
#define g_sapp_log_handle sapp_global_val->individual_fixed.log_handle
#define g_iThreadNum sapp_global_val->config.cpu.worker_threads
#define g_packet_io_thread_num sapp_global_val->config.cpu.worker_threads
#define max_udp_stream_num sapp_global_val->config.stream.udp.max
#define max_tcp_stream_num sapp_global_val->config.stream.tcp.max
#define create_link_mode sapp_global_val->individual_fixed.create_stream_mode
#define g_iMaxRandVal sapp_global_val->config.stream.tcp.inject.rst_signature_seed1
#define g_iRandKey sapp_global_val->config.stream.tcp.inject.rst_signature_seed2
#define tcp_default_unorder sapp_global_val->config.stream.tcp.reorder_pkt_max
#define tcp_creatlink_model sapp_global_val->individual_fixed.create_stream_mode
#define link_default_nopkt_time sapp_global_val->config.stream.tcp.timeout
#define tcp_closing_timeout sapp_global_val->config.stream.tcp.closing_timeout
#define tcp_opening_timeout sapp_global_val->config.stream.tcp.opening_timeout
#define udp_reset_time sapp_global_val->config.stream.udp.timeout
#define g_topology_mode sapp_global_val->individual_fixed.deployment_mode_private
#define g_topology_mode_raw sapp_global_val->config.packet_io.deployment_mode_bin
#define g_packet_io_cap_mode sapp_global_val->config.packet_io.internal.interface.type_bin
#define g_packet_io_cap_level sapp_global_val->individual_fixed.packet_io_cap_level
//#define g_timestamp_record_sw MESA_handle_runtime_log_level_enabled(ABBR_PROCESS_LATENCY_LOG_HANDLE, sapp_global_val->config.profiling.process_latency_enabled_log_level)
//#define g_timestamp_record_sw sapp_global_val->config.profiling.process_latency_enabled_log_level>20
#define g_clock_gettime_clock_id sapp_global_val->config.profiling.process_latency_clock_id
#define g_timestamp_record_threshold sapp_global_val->config.profiling.process_latency_threshold_in_us
#define g_discard_ack_sw sapp_global_val->config.protocol_feature.tcp_drop_pure_ack_pkt
#define g_tcp_syn_option_parse_enabled sapp_global_val->config.protocol_feature.tcp_syn_option_parse_enabled
#define g_ipv6_decapsulation_enabled sapp_global_val->config.protocol_feature.ipv6_decapsulation_enabled
#define g_ipv6_send_packet_enabled sapp_global_val->config.protocol_feature.ipv6_send_packet_enabled
#define G_SKIP_NOT_IP_LAYER sapp_global_val->config.protocol_feature.skip_not_ip_layer_over_eth
#define sapp_runtime_log(log_level, format, ...) \
do \
{ \
if (MESA_handle_runtime_log_level_enabled(ABBR_SAPP_LOG_HANDLE, log_level)) \
{ \
MESA_handle_runtime_log(ABBR_SAPP_LOG_HANDLE, log_level, "sapp ", "file %s, line %d, " format, \
__FILE__, __LINE__, ##__VA_ARGS__); \
} \
} while (0)
#define sapp_process_latency_log(log_level, format, ...) \
do \
{ \
if (MESA_handle_runtime_log_level_enabled(ABBR_PROCESS_LATENCY_LOG_HANDLE, log_level)) \
{ \
MESA_handle_runtime_log(ABBR_PROCESS_LATENCY_LOG_HANDLE, log_level, "process_latency ", "file %s, line %d, " format, \
__FILE__, __LINE__, ##__VA_ARGS__); \
} \
} while (0)
extern void sapp_log(int level, int print_sw, int file_sw, const char *format, ...);
int sapp_parse_cmd_args(int argc, char *argv[]);
int sapp_parse_config(void);
void sapp_init_breakpad_mini(void);
void sapp_segv_generate(void);
void sapp_generate_example_config(const char *filename, const char *version);
void sapp_cla_override_cfg_file(void);
void sapp_global_val_sanity_check(void);
void *sapp_time_event_thread(void *arg);
void *sapp_time_loop_thread(void *arg);
void sapp_fs2_update_count(int field_index, unsigned long long value);
void sapp_fs2_update_length(int field_index, unsigned long long value);
void sapp_fs2_set_latency(int thead_seq, long long time_cost);
void sapp_fs2_set_work_percent(int thead_seq, long long work_percent);
void sapp_fs2_set_plug_entry_latency(int entry_id, long long time_cost);
void sapp_fs3_metric_incrby(int column_idx, int column_idy,long long value);
void sapp_fs3_metric_set(int metric_idx, int metric_idy, long long value);
void sapp_fs4_metric_incrby(int column_idx, int column_idy,long long value);
void sapp_fs4_metric_set(int metric_idx, int metric_idy, long long value);
int sapp_independent_thread_init(void);
void sapp_gval_init(void);
struct mr_instance *sapp_get_marsio_instance(void);
int __sapp_timer_platform_init(void);
void __st_pkt_proc_context_check_timeout(int tid);
void __sapp_timer_platform_run(void);
void sapp_set_current_state(enum sapp_state_t st);
char *timet_to_str(time_t timet, char *time_str, int time_str_len);
void sapp_fuzzy_latency_update(void);
extern size_t sapp_strlcpy(char *dst, const char *src, size_t size);
extern volatile unsigned int g_aiSysCounter[COUNTER_NUM]; /*newly modified ---LiLei*/
extern const struct dl_io_lib_name g_dl_io_lib_info[__CAP_MODEL_MAX];
extern dl_io_fun_list_t dl_io_fun_list;
#ifdef __cplusplus
}
#endif
#endif
|