// /* // * Linux内核诊断工具--杂项定义头文件 // * // * Copyright (C) 2020 Alibaba Ltd. // * // * 作者: Baoyou Xie // * // * License terms: GNU General Public License (GPL) version 3 // * // */ // #include // #include // #include "uapi/ali_diagnose.h" // #include "json/json.h" // #include // #include // #include // #include "debug.h" // extern std::set g_proc_map; // int run_trace_main(int argc, char **argv); // int sys_delay_main(int argc, char **argv); // int sched_delay_main(int argc, char **argv); // int throttle_delay_main(int argc, char **argv); // int load_monitor_main(int argc, char **argv); // int exit_monitor_main(int argc, char **argv); // int utilization_main(int argc, char **argv); // int perf_main(int argc, char **argv); // int tcp_retrans_main(int argc, char **argv); // int tcp_connect_main(int argc, char **argv); // int rw_top_main(int argc, char **argv); // int irq_delay_main(int argc, char **argv); // int mutex_monitor_main(int argc, char **argv); // int alloc_top_main(int argc, char **argv); // int alloc_load_main(int argc, char **argv); // int drop_packet_main(int argc, char **argv); // int fs_orphan_main(int argc, char **argv); // int df_du_main(int argc, char **argv); // int exec_monitor_main(int argc, char **argv); // int fs_shm_main(int argc, char **argv); // int irq_stats_main(int argc, char **argv); // int irq_trace_main(int argc, char **argv); // int kprobe_main(int argc, char **argv); // int mm_leak_main(int argc, char **argv); // int proc_monitor_main(int argc, char **argv); // int runq_info_main(int argc, char **argv); // int reboot_main(int argc, char **argv); // int pi_main(int argc, char *argv[]); // int memcpy_main(int argc, char* argv[]); // int md5_main(int argc, char *argv[]); // int net_bandwidth_main(int argc, char *argv[]); // int sig_info_main(int argc, char *argv[]); // int task_monitor_main(int argc, char **argv); // int rw_sem_main(int argc, char **argv); // int rss_monitor_main(int argc, char **argv); // void usage_run_trace(void); // void usage_sys_delay(void); // void usage_load_monitor(void); // void usage_exit_monitor(void); // void usage_utilization(void); // void usage_perf(); // void usage_tcp_retrans(); // void usage_rw_top(); // void usage_irq_delay(); // void usage_mutex_monitor(); // void usage_alloc_top(); // void usage_drop_packet(); // void usage_fs_orphan(); // void usage_exec_monitor(); // void usage_fs_shm(); // void usage_irq_stats(); // void usage_irq_trace(); // void usage_kprobe(); // void usage_mm_leak(); // void usage_testcase(void); // void usage_pupil(void); // void usage_sched_delay(void); // void usage_reboot(void); // void usage_test_memcpy(void); // void usage_test_pi(void); // void usage_test_md5(void); // void usage_net_bandwidth(void); // void usage_sig_info(void); // void usage_task_monitor(void); // void usage_rw_sem(void); // void usage_rss_monitor(void); // void usage_throttle_delay(void); // int uprobe_main(int argc, char **argv); // void usage_uprobe(); // int ping_delay_main(int argc, char *argv[]); // void usage_ping_delay(void); // int ping_delay6_main(int argc, char *argv[]); // void usage_ping_delay6(void); // int test_run_trace_main(int argc, char *argv[]); // void usage_test_run_trace(void); // int memcg_stats_main(int argc, char *argv[]); // void usage_memcg_stats(void); // int diag_activate(const char func[]); // int diag_deactivate(const char func[]); // void diag_printf_inode(struct diag_inode_detail *inode); // void diag_printf_time(struct diag_timespec *tv); // void diag_printf_task(struct diag_task_detail *task); // void diag_printf_proc_chains(struct diag_proc_chains_detail *proc_chains); // void diag_printf_proc_chains(struct diag_proc_chains_detail *proc_chains, int reverse); // void diag_printf_proc_chains(struct diag_proc_chains_detail *proc_chains, int reverse, int detail); // void diag_printf_kern_stack(struct diag_kern_stack_detail *kern_stack); // void diag_printf_kern_stack(struct diag_kern_stack_detail *kern_stack, int reverse); // void diag_printf_user_stack(int pid, int ns_pid, const char *comm, // struct diag_user_stack_detail *user_stack); // void diag_printf_user_stack(int pid, int ns_pid, const char *comm, // struct diag_user_stack_detail *user_stack, int attach); // void diag_printf_user_stack(int pid, int ns_pid, const char *comm, // struct diag_user_stack_detail *user_stack, int attach, int reverse); // void diag_printf_raw_stack(int pid, int ns_pid, const char *comm, // struct diag_raw_stack_detail *raw_stack); // void diag_printf_raw_stack(int pid, int ns_pid, const char *comm, // struct diag_raw_stack_detail *raw_stack, int attach); // void init_java_env(const char *agent, int pid, int ns_pid, const char *comm, std::set &); // void diag_unwind_raw_stack(int pid, int ns_pid, // struct diag_raw_stack_detail *raw_stack, unsigned long stack[BACKTRACE_DEPTH]); // void diag_sls_time(struct diag_timespec *tv, Json::Value &owner); // void diag_sls_task(struct diag_task_detail *tsk_info, Json::Value &task); // void diag_sls_proc_chains(struct diag_proc_chains_detail *proc_chains, Json::Value &task); // void diag_sls_kern_stack(struct diag_kern_stack_detail *kern_stack, Json::Value &task); // void diag_sls_user_stack(pid_t pid, pid_t ns_pid, const char *comm, // struct diag_user_stack_detail *user_stack, Json::Value &task); // void diag_sls_user_stack(pid_t pid, pid_t ns_pid, const char *comm, // struct diag_user_stack_detail *user_stack, Json::Value &task, int attach); // void diag_sls_inode(struct diag_inode_detail *inode, Json::Value &root); // int log_config(char *arg, char *sls_file, int *p_syslog_enabled); // void write_syslog(int enabled, const char mod[], struct diag_timespec *tv, unsigned long id, int seq, Json::Value &root); // void write_file(char *sls_file, const char mod[], struct diag_timespec *tv, unsigned long id, int seq, Json::Value &root); // void diag_ip_addr_to_str(unsigned char *ip_addr,const char type[], Json::Value &root); // #define ULONG_MAX (~0UL) // #define STACK_IS_END(v) ((v) == 0 || (v) == ULONG_MAX) // class pid_cmdline { // private: // std::map cmdlines; // public: // void clear(void); // std::string & get_pid_cmdline(int pid); // }; // int jmaps_main(int argc, char **argv); // void restore_global_env(); // int attach_ns_env(int pid); // int java_attach_once(int flag_no_attach = 0); // extern class pid_cmdline pid_cmdline; // extern void clear_symbol_info(class pid_cmdline &pid_cmdline, std::set &procs, int dist); // extern unsigned int ipstr2int(const char *ipstr); // extern char *int2ipstr(const unsigned int ip, char *ipstr, const unsigned int ip_str_len); // extern int is_linux_2_6_x(void); // extern int linux_2_6_x; // int sys_cost_main(int argc, char **argv); // void usage_sys_cost(); // int fs_cache_main(int argc, char *argv[]); // void usage_fs_cache(void); // int high_order_main(int argc, char *argv[]); // void usage_high_order(void); // int pmu_main(int argc, char **argv); // void usage_pmu(void); // int testcase_main(int argc, char *argv[]); // struct timeval; // struct timezone; // extern "C" { // void diag_gettimeofday(struct diag_timespec *tv, struct timezone *tz); // }