115db2897SKrishnendu Sadhukhan - Sun Microsystems /* 215db2897SKrishnendu Sadhukhan - Sun Microsystems * CDDL HEADER START 315db2897SKrishnendu Sadhukhan - Sun Microsystems * 415db2897SKrishnendu Sadhukhan - Sun Microsystems * The contents of this file are subject to the terms of the 515db2897SKrishnendu Sadhukhan - Sun Microsystems * Common Development and Distribution License (the "License"). 615db2897SKrishnendu Sadhukhan - Sun Microsystems * You may not use this file except in compliance with the License. 715db2897SKrishnendu Sadhukhan - Sun Microsystems * 815db2897SKrishnendu Sadhukhan - Sun Microsystems * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 915db2897SKrishnendu Sadhukhan - Sun Microsystems * or http://www.opensolaris.org/os/licensing. 1015db2897SKrishnendu Sadhukhan - Sun Microsystems * See the License for the specific language governing permissions 1115db2897SKrishnendu Sadhukhan - Sun Microsystems * and limitations under the License. 1215db2897SKrishnendu Sadhukhan - Sun Microsystems * 1315db2897SKrishnendu Sadhukhan - Sun Microsystems * When distributing Covered Code, include this CDDL HEADER in each 1415db2897SKrishnendu Sadhukhan - Sun Microsystems * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1515db2897SKrishnendu Sadhukhan - Sun Microsystems * If applicable, add the following below this CDDL HEADER, with the 1615db2897SKrishnendu Sadhukhan - Sun Microsystems * fields enclosed by brackets "[]" replaced with your own identifying 1715db2897SKrishnendu Sadhukhan - Sun Microsystems * information: Portions Copyright [yyyy] [name of copyright owner] 1815db2897SKrishnendu Sadhukhan - Sun Microsystems * 1915db2897SKrishnendu Sadhukhan - Sun Microsystems * CDDL HEADER END 2015db2897SKrishnendu Sadhukhan - Sun Microsystems */ 2115db2897SKrishnendu Sadhukhan - Sun Microsystems /* 2215db2897SKrishnendu Sadhukhan - Sun Microsystems * Copyright (c) 2008-2009, Intel Corporation. 2315db2897SKrishnendu Sadhukhan - Sun Microsystems * All Rights Reserved. 2415db2897SKrishnendu Sadhukhan - Sun Microsystems */ 2515db2897SKrishnendu Sadhukhan - Sun Microsystems 2615db2897SKrishnendu Sadhukhan - Sun Microsystems #ifndef _LATENCYTOP_H 2715db2897SKrishnendu Sadhukhan - Sun Microsystems #define _LATENCYTOP_H 2815db2897SKrishnendu Sadhukhan - Sun Microsystems 2915db2897SKrishnendu Sadhukhan - Sun Microsystems #include <sys/types.h> 3015db2897SKrishnendu Sadhukhan - Sun Microsystems 3115db2897SKrishnendu Sadhukhan - Sun Microsystems #include <glib.h> 3215db2897SKrishnendu Sadhukhan - Sun Microsystems 3315db2897SKrishnendu Sadhukhan - Sun Microsystems #ifdef __cplusplus 3415db2897SKrishnendu Sadhukhan - Sun Microsystems extern "C" { 3515db2897SKrishnendu Sadhukhan - Sun Microsystems #endif 3615db2897SKrishnendu Sadhukhan - Sun Microsystems 3715db2897SKrishnendu Sadhukhan - Sun Microsystems /* 3815db2897SKrishnendu Sadhukhan - Sun Microsystems * Without this lint seems to be confused by glib header file. 3915db2897SKrishnendu Sadhukhan - Sun Microsystems */ 4015db2897SKrishnendu Sadhukhan - Sun Microsystems #ifdef __lint 4115db2897SKrishnendu Sadhukhan - Sun Microsystems #undef g_assert 4215db2897SKrishnendu Sadhukhan - Sun Microsystems #define g_assert(x) ((void)(x)) 4315db2897SKrishnendu Sadhukhan - Sun Microsystems #undef TRUE 4415db2897SKrishnendu Sadhukhan - Sun Microsystems #define TRUE 1 4515db2897SKrishnendu Sadhukhan - Sun Microsystems #endif 4615db2897SKrishnendu Sadhukhan - Sun Microsystems 4715db2897SKrishnendu Sadhukhan - Sun Microsystems /* 4815db2897SKrishnendu Sadhukhan - Sun Microsystems * We define our own conversions in order to avoid compiler warnings. 4915db2897SKrishnendu Sadhukhan - Sun Microsystems */ 5015db2897SKrishnendu Sadhukhan - Sun Microsystems #define LT_INT_TO_POINTER(a) ((void *)(unsigned long)(a)) 5115db2897SKrishnendu Sadhukhan - Sun Microsystems 5215db2897SKrishnendu Sadhukhan - Sun Microsystems #define TITLE "LatencyTOP for OpenSolaris, version 1.0" 5315db2897SKrishnendu Sadhukhan - Sun Microsystems #define COPYRIGHT "Copyright (c) 2008-2009, Intel Corporation." 5415db2897SKrishnendu Sadhukhan - Sun Microsystems #define DEFAULT_KLOG_FILE "/var/log/latencytop.log" 5515db2897SKrishnendu Sadhukhan - Sun Microsystems 5615db2897SKrishnendu Sadhukhan - Sun Microsystems #define INVALID_PID (~0) 5715db2897SKrishnendu Sadhukhan - Sun Microsystems #define INVALID_TID (~0) 5815db2897SKrishnendu Sadhukhan - Sun Microsystems #define PID_SYS_GLOBAL INVALID_PID 5915db2897SKrishnendu Sadhukhan - Sun Microsystems #define INVALID_CAUSE 0 6015db2897SKrishnendu Sadhukhan - Sun Microsystems #define HIGHER_PRIORITY(a, b) ((a) > (b)) 6115db2897SKrishnendu Sadhukhan - Sun Microsystems 6215db2897SKrishnendu Sadhukhan - Sun Microsystems #ifdef EMBED_CONFIGS 6315db2897SKrishnendu Sadhukhan - Sun Microsystems /* 6415db2897SKrishnendu Sadhukhan - Sun Microsystems * LatencyTOP configuration is embedded in the binary. 6515db2897SKrishnendu Sadhukhan - Sun Microsystems * Array will be generated by elfwrap. 6615db2897SKrishnendu Sadhukhan - Sun Microsystems */ 6715db2897SKrishnendu Sadhukhan - Sun Microsystems extern char latencytop_d_start; 6815db2897SKrishnendu Sadhukhan - Sun Microsystems extern char latencytop_d_end; 6915db2897SKrishnendu Sadhukhan - Sun Microsystems extern char latencytop_trans_start; 7015db2897SKrishnendu Sadhukhan - Sun Microsystems extern char latencytop_trans_end; 7115db2897SKrishnendu Sadhukhan - Sun Microsystems #else 7215db2897SKrishnendu Sadhukhan - Sun Microsystems /* 7315db2897SKrishnendu Sadhukhan - Sun Microsystems * LatencyTOP configuration is provided externally by user. 7415db2897SKrishnendu Sadhukhan - Sun Microsystems */ 7515db2897SKrishnendu Sadhukhan - Sun Microsystems #define DEFAULT_CONFIG_NAME "./latencytop.trans" 7615db2897SKrishnendu Sadhukhan - Sun Microsystems #define DEFAULT_D_SCRIPT_NAME "./latencytop.d" 7715db2897SKrishnendu Sadhukhan - Sun Microsystems #endif 7815db2897SKrishnendu Sadhukhan - Sun Microsystems 7915db2897SKrishnendu Sadhukhan - Sun Microsystems typedef enum { 8015db2897SKrishnendu Sadhukhan - Sun Microsystems LT_STAT_COUNT, 8115db2897SKrishnendu Sadhukhan - Sun Microsystems LT_STAT_MAX, 8215db2897SKrishnendu Sadhukhan - Sun Microsystems LT_STAT_SUM, 8315db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_stat_type_t; 8415db2897SKrishnendu Sadhukhan - Sun Microsystems 8515db2897SKrishnendu Sadhukhan - Sun Microsystems #define LT_KLOG_LEVEL_NONE 0 /* Log nothing */ 8615db2897SKrishnendu Sadhukhan - Sun Microsystems #define LT_KLOG_LEVEL_UNMAPPED 1 /* Log only stacks not mapped */ 8715db2897SKrishnendu Sadhukhan - Sun Microsystems #define LT_KLOG_LEVEL_MAPPED 2 /* Log only stacks mapped */ 8815db2897SKrishnendu Sadhukhan - Sun Microsystems #define LT_KLOG_LEVEL_ALL 3 /* Log all stacks, mapped or not */ 8915db2897SKrishnendu Sadhukhan - Sun Microsystems 9015db2897SKrishnendu Sadhukhan - Sun Microsystems typedef enum { 9115db2897SKrishnendu Sadhukhan - Sun Microsystems LT_LEVEL_GLOBAL, /* System wide statistics */ 9215db2897SKrishnendu Sadhukhan - Sun Microsystems LT_LEVEL_PROCESS, /* Per-process statistics */ 9315db2897SKrishnendu Sadhukhan - Sun Microsystems LT_LEVEL_THREAD, /* Per-thread statistics */ 9415db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_stat_level_t; 9515db2897SKrishnendu Sadhukhan - Sun Microsystems 9615db2897SKrishnendu Sadhukhan - Sun Microsystems typedef enum { 9715db2897SKrishnendu Sadhukhan - Sun Microsystems LT_SORT_TOTAL, 9815db2897SKrishnendu Sadhukhan - Sun Microsystems LT_SORT_MAX, 9915db2897SKrishnendu Sadhukhan - Sun Microsystems LT_SORT_AVG, 10015db2897SKrishnendu Sadhukhan - Sun Microsystems LT_SORT_COUNT, 10115db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_sort_t; 10215db2897SKrishnendu Sadhukhan - Sun Microsystems 10315db2897SKrishnendu Sadhukhan - Sun Microsystems typedef enum { 10415db2897SKrishnendu Sadhukhan - Sun Microsystems LT_FIELD_FNAME, 10515db2897SKrishnendu Sadhukhan - Sun Microsystems LT_FIELD_PSARGS, 10615db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_field_t; 10715db2897SKrishnendu Sadhukhan - Sun Microsystems 10815db2897SKrishnendu Sadhukhan - Sun Microsystems typedef enum { 10915db2897SKrishnendu Sadhukhan - Sun Microsystems LT_LIST_CAUSE, /* List latency by causes (default) */ 11015db2897SKrishnendu Sadhukhan - Sun Microsystems LT_LIST_SPECIALS, /* List only "special" causes */ 11115db2897SKrishnendu Sadhukhan - Sun Microsystems LT_LIST_SOBJ /* List synchronization objects */ 11215db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_list_type_t; 11315db2897SKrishnendu Sadhukhan - Sun Microsystems 11415db2897SKrishnendu Sadhukhan - Sun Microsystems /* 11515db2897SKrishnendu Sadhukhan - Sun Microsystems * Data structure which contains statistics. 11615db2897SKrishnendu Sadhukhan - Sun Microsystems */ 11715db2897SKrishnendu Sadhukhan - Sun Microsystems typedef struct { 11815db2897SKrishnendu Sadhukhan - Sun Microsystems uint64_t lt_s_count; 11915db2897SKrishnendu Sadhukhan - Sun Microsystems uint64_t lt_s_total; 12015db2897SKrishnendu Sadhukhan - Sun Microsystems uint64_t lt_s_max; 12115db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_stat_data_t; 12215db2897SKrishnendu Sadhukhan - Sun Microsystems 12315db2897SKrishnendu Sadhukhan - Sun Microsystems /* 12415db2897SKrishnendu Sadhukhan - Sun Microsystems * Data structure that stores statistics along with the name. 12515db2897SKrishnendu Sadhukhan - Sun Microsystems */ 12615db2897SKrishnendu Sadhukhan - Sun Microsystems typedef struct { 12715db2897SKrishnendu Sadhukhan - Sun Microsystems enum { 12815db2897SKrishnendu Sadhukhan - Sun Microsystems STAT_CAUSE, 12915db2897SKrishnendu Sadhukhan - Sun Microsystems STAT_SOBJ 13015db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_se_type; 13115db2897SKrishnendu Sadhukhan - Sun Microsystems const char *lt_se_string; 13215db2897SKrishnendu Sadhukhan - Sun Microsystems lt_stat_data_t lt_se_data; 13315db2897SKrishnendu Sadhukhan - Sun Microsystems union { 13415db2897SKrishnendu Sadhukhan - Sun Microsystems struct { 13515db2897SKrishnendu Sadhukhan - Sun Microsystems int lt_se_c_id; 13615db2897SKrishnendu Sadhukhan - Sun Microsystems int lt_se_c_flags; 13715db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_se_t_cause; 13815db2897SKrishnendu Sadhukhan - Sun Microsystems struct { 13915db2897SKrishnendu Sadhukhan - Sun Microsystems int lt_se_s_id; 14015db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_se_t_sobj; 14115db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_se_tsdata; /* type specific data */ 14215db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_stat_entry_t; 14315db2897SKrishnendu Sadhukhan - Sun Microsystems 14415db2897SKrishnendu Sadhukhan - Sun Microsystems typedef struct { 14515db2897SKrishnendu Sadhukhan - Sun Microsystems int lt_cfg_enable_filter; 14615db2897SKrishnendu Sadhukhan - Sun Microsystems int lt_cfg_trace_sched; 14715db2897SKrishnendu Sadhukhan - Sun Microsystems int lt_cfg_trace_syncobj; 14815db2897SKrishnendu Sadhukhan - Sun Microsystems int lt_cfg_low_overhead_mode; 14915db2897SKrishnendu Sadhukhan - Sun Microsystems int lt_cfg_snap_interval; 15015db2897SKrishnendu Sadhukhan - Sun Microsystems char *lt_cfg_config_name; 151*a9c12afdSKrishnendu Sadhukhan - Sun Microsystems unsigned int lt_cfg_trace_pid; 152*a9c12afdSKrishnendu Sadhukhan - Sun Microsystems unsigned int lt_cfg_trace_pgid; 15315db2897SKrishnendu Sadhukhan - Sun Microsystems } lt_config_t; 15415db2897SKrishnendu Sadhukhan - Sun Microsystems 15515db2897SKrishnendu Sadhukhan - Sun Microsystems extern lt_config_t g_config; /* The global settings */ 15615db2897SKrishnendu Sadhukhan - Sun Microsystems 15715db2897SKrishnendu Sadhukhan - Sun Microsystems /* 15815db2897SKrishnendu Sadhukhan - Sun Microsystems * Causes can be disabled through the configuration file. 15915db2897SKrishnendu Sadhukhan - Sun Microsystems * When disabled, though D script will continue to capture causes, they will 16015db2897SKrishnendu Sadhukhan - Sun Microsystems * not be counted by LatencyTOP. 16115db2897SKrishnendu Sadhukhan - Sun Microsystems */ 16215db2897SKrishnendu Sadhukhan - Sun Microsystems #define CAUSE_FLAG_DISABLED 1 16315db2897SKrishnendu Sadhukhan - Sun Microsystems /* 16415db2897SKrishnendu Sadhukhan - Sun Microsystems * This flag will not show and count causes as part of summary in 16515db2897SKrishnendu Sadhukhan - Sun Microsystems * "kstack window". 16615db2897SKrishnendu Sadhukhan - Sun Microsystems */ 16715db2897SKrishnendu Sadhukhan - Sun Microsystems #define CAUSE_FLAG_HIDE_IN_SUMMARY 2 16815db2897SKrishnendu Sadhukhan - Sun Microsystems /* 16915db2897SKrishnendu Sadhukhan - Sun Microsystems * This is generated from D script (named cause), and is "special". 17015db2897SKrishnendu Sadhukhan - Sun Microsystems */ 17115db2897SKrishnendu Sadhukhan - Sun Microsystems #define CAUSE_FLAG_SPECIAL 4 17215db2897SKrishnendu Sadhukhan - Sun Microsystems #define CAUSE_ALL_FLAGS 0xffffffff 17315db2897SKrishnendu Sadhukhan - Sun Microsystems 1741a1f79f5SKrishnendu Sadhukhan - Sun Microsystems extern boolean_t lt_drop_detected; 1751a1f79f5SKrishnendu Sadhukhan - Sun Microsystems 17615db2897SKrishnendu Sadhukhan - Sun Microsystems /* 17715db2897SKrishnendu Sadhukhan - Sun Microsystems * These functions collect statistics using DTrace. 17815db2897SKrishnendu Sadhukhan - Sun Microsystems */ 17915db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_dtrace_init(void); 18015db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_dtrace_work(int); 18115db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_dtrace_collect(void); 1821a1f79f5SKrishnendu Sadhukhan - Sun Microsystems extern int lt_dtrace_deinit(void); 18315db2897SKrishnendu Sadhukhan - Sun Microsystems 18415db2897SKrishnendu Sadhukhan - Sun Microsystems /* 18515db2897SKrishnendu Sadhukhan - Sun Microsystems * These functions maintain configuration, e.g. symbol to cause mapping. 18615db2897SKrishnendu Sadhukhan - Sun Microsystems */ 18715db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_table_init(void); 18815db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_table_cause_from_stack(const char *, int *, int *); 18915db2897SKrishnendu Sadhukhan - Sun Microsystems extern const char *lt_table_get_cause_name(int); 19015db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_table_get_cause_flag(int, int); 19115db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_table_cause_from_name(char *, int, int); 19215db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_table_append_trans(FILE *fp); 19315db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_table_deinit(void); 19415db2897SKrishnendu Sadhukhan - Sun Microsystems 19515db2897SKrishnendu Sadhukhan - Sun Microsystems /* 19615db2897SKrishnendu Sadhukhan - Sun Microsystems * These functions update statistic of all causes of latency, collected 19715db2897SKrishnendu Sadhukhan - Sun Microsystems * from DTrace. 19815db2897SKrishnendu Sadhukhan - Sun Microsystems */ 19915db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_stat_update(pid_t, id_t, char *, char *, unsigned int, 20015db2897SKrishnendu Sadhukhan - Sun Microsystems lt_stat_type_t, uint64_t); 20115db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_stat_update_cause(pid_t, id_t, int, lt_stat_type_t, uint64_t); 20215db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_stat_update_sobj(pid_t, id_t, int, unsigned long long, 20315db2897SKrishnendu Sadhukhan - Sun Microsystems lt_stat_type_t, uint64_t); 20415db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_stat_clear_all(void); 20515db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_stat_free_all(void); 20615db2897SKrishnendu Sadhukhan - Sun Microsystems 20715db2897SKrishnendu Sadhukhan - Sun Microsystems /* 20815db2897SKrishnendu Sadhukhan - Sun Microsystems * These functions produce lists for display panes. 20915db2897SKrishnendu Sadhukhan - Sun Microsystems * Note: after a call to lt_stat_update_*, the old lists will become invalid. 21015db2897SKrishnendu Sadhukhan - Sun Microsystems */ 21115db2897SKrishnendu Sadhukhan - Sun Microsystems extern void *lt_stat_list_create(lt_list_type_t, lt_stat_level_t, 21215db2897SKrishnendu Sadhukhan - Sun Microsystems pid_t, id_t, int, lt_sort_t); 21315db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_stat_list_has_item(void *, int); 21415db2897SKrishnendu Sadhukhan - Sun Microsystems extern const char *lt_stat_list_get_reason(void *, int); 21515db2897SKrishnendu Sadhukhan - Sun Microsystems extern uint64_t lt_stat_list_get_max(void *, int); 21615db2897SKrishnendu Sadhukhan - Sun Microsystems extern uint64_t lt_stat_list_get_sum(void *, int); 21715db2897SKrishnendu Sadhukhan - Sun Microsystems extern uint64_t lt_stat_list_get_count(void *, int); 21815db2897SKrishnendu Sadhukhan - Sun Microsystems extern uint64_t lt_stat_list_get_gtotal(void *); 21915db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_stat_list_free(void *); 22015db2897SKrishnendu Sadhukhan - Sun Microsystems 22115db2897SKrishnendu Sadhukhan - Sun Microsystems /* 22215db2897SKrishnendu Sadhukhan - Sun Microsystems * These functions produce the process list and the thread list. 22315db2897SKrishnendu Sadhukhan - Sun Microsystems */ 22415db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_stat_proc_list_create(pid_t **, id_t **); 22515db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_stat_proc_list_free(pid_t *, id_t *); 22615db2897SKrishnendu Sadhukhan - Sun Microsystems extern const char *lt_stat_proc_get_name(pid_t); 22715db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_stat_proc_get_nthreads(pid_t); 22815db2897SKrishnendu Sadhukhan - Sun Microsystems 22915db2897SKrishnendu Sadhukhan - Sun Microsystems /* 23015db2897SKrishnendu Sadhukhan - Sun Microsystems * These functions use ncurses to create console-based display. 23115db2897SKrishnendu Sadhukhan - Sun Microsystems */ 23215db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_display_init(void); 23315db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_display_loop(int); 23415db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_display_error(const char *, ...); 23515db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_display_deinit(void); 23615db2897SKrishnendu Sadhukhan - Sun Microsystems 23715db2897SKrishnendu Sadhukhan - Sun Microsystems /* 23815db2897SKrishnendu Sadhukhan - Sun Microsystems * Write statistics to log file - useful for debugging and offline analysis. 23915db2897SKrishnendu Sadhukhan - Sun Microsystems */ 24015db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_klog_init(void); 24115db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_klog_deinit(void); 24215db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_klog_set_log_file(const char *); 24315db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_klog_set_log_level(int); 24415db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_klog_write(void); 24515db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_klog_log(int, pid_t, char *, lt_stat_type_t, 24615db2897SKrishnendu Sadhukhan - Sun Microsystems uint64_t); 24715db2897SKrishnendu Sadhukhan - Sun Microsystems 24815db2897SKrishnendu Sadhukhan - Sun Microsystems /* 24915db2897SKrishnendu Sadhukhan - Sun Microsystems * Utility functions. 25015db2897SKrishnendu Sadhukhan - Sun Microsystems */ 25115db2897SKrishnendu Sadhukhan - Sun Microsystems extern uint64_t lt_millisecond(void); 25215db2897SKrishnendu Sadhukhan - Sun Microsystems extern void *lt_malloc(size_t); 25315db2897SKrishnendu Sadhukhan - Sun Microsystems extern void *lt_zalloc(size_t); 25415db2897SKrishnendu Sadhukhan - Sun Microsystems extern char *lt_strdup(const char *); 25515db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_check_null(void *); 25615db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_time_str(char *, int); 25715db2897SKrishnendu Sadhukhan - Sun Microsystems extern char *lt_get_proc_field(pid_t, lt_field_t); 25815db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_update_stat_value(lt_stat_data_t *, lt_stat_type_t, uint64_t); 25915db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_sort_by_total_desc(lt_stat_entry_t *, lt_stat_entry_t *); 26015db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_sort_by_max_desc(lt_stat_entry_t *, lt_stat_entry_t *); 26115db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_sort_by_count_desc(lt_stat_entry_t *, lt_stat_entry_t *); 26215db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_sort_by_avg_desc(lt_stat_entry_t *, lt_stat_entry_t *); 26315db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_gpipe_init(void); 26415db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_gpipe_deinit(void); 26515db2897SKrishnendu Sadhukhan - Sun Microsystems extern void lt_gpipe_break(const char *); 26615db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_gpipe_readfd(void); 26715db2897SKrishnendu Sadhukhan - Sun Microsystems extern int lt_file_exist(const char *); 26815db2897SKrishnendu Sadhukhan - Sun Microsystems 26915db2897SKrishnendu Sadhukhan - Sun Microsystems #ifdef __cplusplus 27015db2897SKrishnendu Sadhukhan - Sun Microsystems } 27115db2897SKrishnendu Sadhukhan - Sun Microsystems #endif 27215db2897SKrishnendu Sadhukhan - Sun Microsystems 27315db2897SKrishnendu Sadhukhan - Sun Microsystems #endif /* _LATENCYTOP_H */ 274