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