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