xref: /freebsd/usr.sbin/pmcstat/pmcstat.h (revision b3e7694832e81d7a904a10f525f8797b753bf0d3)
115139246SJoseph Koshy /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
31de7b4b8SPedro F. Giffuni  *
4fbd8b34aSJoseph Koshy  * Copyright (c) 2005-2007, Joseph Koshy
5b6010f9eSJoseph Koshy  * Copyright (c) 2007 The FreeBSD Foundation
615139246SJoseph Koshy  * All rights reserved.
715139246SJoseph Koshy  *
8b6010f9eSJoseph Koshy  * Portions of this software were developed by A. Joseph Koshy under
9b6010f9eSJoseph Koshy  * sponsorship from the FreeBSD Foundation and Google, Inc.
10b6010f9eSJoseph Koshy  *
1115139246SJoseph Koshy  * Redistribution and use in source and binary forms, with or without
1215139246SJoseph Koshy  * modification, are permitted provided that the following conditions
1315139246SJoseph Koshy  * are met:
1415139246SJoseph Koshy  * 1. Redistributions of source code must retain the above copyright
1515139246SJoseph Koshy  *    notice, this list of conditions and the following disclaimer.
1615139246SJoseph Koshy  * 2. Redistributions in binary form must reproduce the above copyright
1715139246SJoseph Koshy  *    notice, this list of conditions and the following disclaimer in the
1815139246SJoseph Koshy  *    documentation and/or other materials provided with the distribution.
1915139246SJoseph Koshy  *
2015139246SJoseph Koshy  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
2115139246SJoseph Koshy  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2215139246SJoseph Koshy  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2315139246SJoseph Koshy  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2415139246SJoseph Koshy  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2515139246SJoseph Koshy  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2615139246SJoseph Koshy  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2715139246SJoseph Koshy  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2815139246SJoseph Koshy  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2915139246SJoseph Koshy  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3015139246SJoseph Koshy  * SUCH DAMAGE.
3115139246SJoseph Koshy  */
3215139246SJoseph Koshy 
3315139246SJoseph Koshy #ifndef	_PMCSTAT_H_
3415139246SJoseph Koshy #define	_PMCSTAT_H_
3515139246SJoseph Koshy 
36d27927f7SRuslan Bukin #include <libpmcstat.h>
3715139246SJoseph Koshy 
3815139246SJoseph Koshy #define	DEFAULT_WAIT_INTERVAL		5.0
390b86b1bbSFabien Thomas #define	DEFAULT_DISPLAY_HEIGHT		256		/* file virtual height */
400b86b1bbSFabien Thomas #define	DEFAULT_DISPLAY_WIDTH		1024		/* file virtual width */
4115139246SJoseph Koshy #define	DEFAULT_BUFFER_SIZE		4096
4206cc6df7SEd Maste #define	DEFAULT_CALLGRAPH_DEPTH		16
4315139246SJoseph Koshy 
4415139246SJoseph Koshy #define	PRINT_HEADER_PREFIX		"# "
4515139246SJoseph Koshy 
4615139246SJoseph Koshy #define	PMCSTAT_DEFAULT_NW_HOST		"localhost"
4715139246SJoseph Koshy #define	PMCSTAT_DEFAULT_NW_PORT		"9000"
4815139246SJoseph Koshy 
4915139246SJoseph Koshy #define	PMCSTAT_LDD_COMMAND		"/usr/bin/ldd"
5015139246SJoseph Koshy 
510b86b1bbSFabien Thomas #define	PMCSTAT_PRINT_ENTRY(T,...) do {					\
520b86b1bbSFabien Thomas 		(void) fprintf(args.pa_printfile, "%-9s", T);		\
530b86b1bbSFabien Thomas 		(void) fprintf(args.pa_printfile, " "  __VA_ARGS__);	\
540b86b1bbSFabien Thomas 		(void) fprintf(args.pa_printfile, "\n");		\
5515139246SJoseph Koshy 	} while (0)
5615139246SJoseph Koshy 
570b86b1bbSFabien Thomas #define PMCSTAT_PL_NONE		0
580b86b1bbSFabien Thomas #define PMCSTAT_PL_CALLGRAPH	1
590b86b1bbSFabien Thomas #define PMCSTAT_PL_GPROF	2
600b86b1bbSFabien Thomas #define PMCSTAT_PL_ANNOTATE	3
610b86b1bbSFabien Thomas #define PMCSTAT_PL_CALLTREE	4
6285ec49f3SAdrian Chadd #define PMCSTAT_PL_ANNOTATE_CG	5
630b86b1bbSFabien Thomas 
640b86b1bbSFabien Thomas #define PMCSTAT_TOP_DELTA 	0
650b86b1bbSFabien Thomas #define PMCSTAT_TOP_ACCUM	1
660b86b1bbSFabien Thomas 
670b86b1bbSFabien Thomas extern int pmcstat_displayheight;	/* current terminal height */
680b86b1bbSFabien Thomas extern int pmcstat_displaywidth;	/* current terminal width */
690b86b1bbSFabien Thomas extern struct pmcstat_args args;	/* command line args */
7015139246SJoseph Koshy 
7115139246SJoseph Koshy /* Function prototypes */
720b86b1bbSFabien Thomas void	pmcstat_cleanup(void);
730b86b1bbSFabien Thomas void	pmcstat_find_targets(const char *_arg);
740b86b1bbSFabien Thomas void	pmcstat_kill_process(void);
750b86b1bbSFabien Thomas void	pmcstat_print_counters(void);
760b86b1bbSFabien Thomas void	pmcstat_print_headers(void);
770b86b1bbSFabien Thomas void	pmcstat_print_pmcs(void);
7815139246SJoseph Koshy void	pmcstat_show_usage(void);
790b86b1bbSFabien Thomas void	pmcstat_start_pmcs(void);
800b86b1bbSFabien Thomas int	pmcstat_process_log(void);
810b86b1bbSFabien Thomas int	pmcstat_keypress_log(void);
820b86b1bbSFabien Thomas void	pmcstat_display_log(void);
830b86b1bbSFabien Thomas void	pmcstat_pluginconfigure_log(char *_opt);
840b86b1bbSFabien Thomas void	pmcstat_topexit(void);
8515139246SJoseph Koshy 
86d27927f7SRuslan Bukin void pmcstat_log_shutdown_logging(void);
87d27927f7SRuslan Bukin void pmcstat_log_initialize_logging(void);
8815139246SJoseph Koshy #endif	/* _PMCSTAT_H_ */
89