#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 #include "MESA_handle_logger.h" #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