15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * CDDL HEADER START
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * The contents of this file are subject to the terms of the
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Common Development and Distribution License (the "License").
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * You may not use this file except in compliance with the License.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * or http://www.opensolaris.org/os/licensing.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * See the License for the specific language governing permissions
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * and limitations under the License.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * When distributing Covered Code, include this CDDL HEADER in each
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * If applicable, add the following below this CDDL HEADER, with the
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * fields enclosed by brackets "[]" replaced with your own identifying
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * information: Portions Copyright [yyyy] [name of copyright owner]
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * CDDL HEADER END
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Copyright (c) 2008-2009, Intel Corporation.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * All Rights Reserved.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <stdio.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <stdlib.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <unistd.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <string.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <sys/types.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <sys/time.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <dirent.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <curses.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <time.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <wchar.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <ctype.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <stdarg.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include <signal.h>
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#include "latencytop.h"
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define LT_WINDOW_X 80
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define LT_WINDOW_Y 24
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define LT_COLOR_DEFAULT 1
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define LT_COLOR_HEADER 2
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Windows created by libcurses */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic WINDOW *titlebar = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic WINDOW *captionbar = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic WINDOW *sysglobal_window = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic WINDOW *taskbar = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic WINDOW *process_window = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic WINDOW *hintbar = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Screen dimension */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic int screen_width = 1, screen_height = 1;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Is display initialized, i.e. are window pointers set up. */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic int display_initialized = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Is initscr() called */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic int curses_inited = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* To handle user key presses */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic pid_t selected_pid = INVALID_PID;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic id_t selected_tid = INVALID_TID;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic lt_sort_t sort_type = LT_SORT_TOTAL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic int thread_mode = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Type of list being displayed */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic int current_list_type = LT_LIST_CAUSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic int show_help = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Help functions that append/prepend a blank to the given string */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define fill_space_right(a, b, c) fill_space((a), (b), (c), TRUE)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define fill_space_left(a, b, c) fill_space((a), (b), (c), FALSE)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsfill_space(char *buffer, int len, int buffer_limit, int is_right)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int i = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int tofill;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (len >= buffer_limit) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems len = buffer_limit - 1;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems i = strlen(buffer);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i >= len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems tofill = len - i;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (is_right) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) memset(&buffer[i], ' ', tofill);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems buffer[len] = '\0';
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) memmove(&buffer[tofill], buffer, i+1);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) memset(buffer, ' ', tofill);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Convert the nanosecond value to a human readable string */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic const char *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsget_time_string(double nanoseconds, char *buffer, int len, int fill_width)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const double ONE_USEC = 1000.0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const double ONE_MSEC = 1000000.0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const double ONE_SEC = 1000000000.0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (nanoseconds < (ONE_USEC - .5)) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(buffer, len, "%3.1f nsec", nanoseconds);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else if (nanoseconds < (ONE_MSEC - .5 * ONE_USEC)) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(buffer, len,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%3.1f usec", nanoseconds / ONE_USEC);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else if (nanoseconds < (ONE_SEC - .5 * ONE_MSEC)) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(buffer, len,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%3.1f msec", nanoseconds / ONE_MSEC);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else if (nanoseconds < 999.5 * ONE_SEC) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(buffer, len,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%3.1f sec", nanoseconds / ONE_SEC);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(buffer, len,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%.0e sec", nanoseconds / ONE_SEC);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems fill_space_left(buffer, fill_width, len);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return (buffer);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Used in print_statistics below */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define WIDTH_REASON_STRING 36
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define WIDTH_COUNT 12
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define WIDTH_AVG 12
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define WIDTH_MAX 12
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define WIDTH_PCT 8
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define BEGIN_COUNT WIDTH_REASON_STRING
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define BEGIN_AVG (BEGIN_COUNT + WIDTH_COUNT)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define BEGIN_MAX (BEGIN_AVG + WIDTH_AVG)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems#define BEGIN_PCT (BEGIN_MAX + WIDTH_MAX)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Print statistics in global/process pane. Called by print_sysglobal
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * print_process.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Parameters:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * window - the global or process statistics window.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * begin_line - where to start printing.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * count - how many lines should be printed.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * list - a stat_list.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_statistics(WINDOW * window, int begin_line, int nlines, void *list)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems uint64_t total;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int i = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems total = lt_stat_list_get_gtotal(list);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (total == 0) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems while (i < nlines && lt_stat_list_has_item(list, i)) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char tmp[WIDTH_REASON_STRING];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const char *reason = lt_stat_list_get_reason(list, i);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems uint64_t count = lt_stat_list_get_count(list, i);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (count == 0) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems continue;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(tmp, sizeof (tmp), "%s", reason);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(window, i + begin_line, 0, "%s", tmp);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(tmp, sizeof (tmp), "%llu", count);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems fill_space_left(tmp, WIDTH_COUNT, sizeof (tmp));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(window, i + begin_line, BEGIN_COUNT,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%s", tmp);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(window, i + begin_line, BEGIN_AVG,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%s", get_time_string(
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (double)lt_stat_list_get_sum(list, i) / count,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems tmp, sizeof (tmp), WIDTH_AVG));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(window, i + begin_line, BEGIN_MAX,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%s", get_time_string(
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (double)lt_stat_list_get_max(list, i),
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems tmp, sizeof (tmp), WIDTH_MAX));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (LT_LIST_SPECIALS != current_list_type) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(tmp, sizeof (tmp), "%.1f %%",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (double)lt_stat_list_get_sum(list, i)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems / total * 100.0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(tmp, sizeof (tmp), "--- ");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems fill_space_left(tmp, WIDTH_PCT, sizeof (tmp));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(window, i + begin_line, BEGIN_PCT,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%s", tmp);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems i++;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Print statistics in global pane.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_sysglobal(void)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems void *list;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char header[256];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(sysglobal_window);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattron(sysglobal_window, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(header, sizeof (header),
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%s", "System wide latencies");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems fill_space_right(header, screen_width, sizeof (header));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(sysglobal_window, 0, 0, "%s", header);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattroff(sysglobal_window, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems list = lt_stat_list_create(current_list_type,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems LT_LEVEL_GLOBAL, 0, 0, 10, sort_type);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_statistics(sysglobal_window, 1, 10, list);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_stat_list_free(list);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wrefresh(sysglobal_window);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Prints current operation mode. Mode is combination of:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * "Process or Thread", and "1 or 2 or 3".
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_current_mode()
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char type;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems switch (current_list_type) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case LT_LIST_CAUSE:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems type = '1';
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case LT_LIST_SPECIALS:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems type = '2';
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case LT_LIST_SOBJ:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems type = '3';
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems default:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems type = '?';
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(process_window, 0, screen_width - 8, "View: %c%c",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems type, thread_mode ? 'T' : 'P');
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems/*
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems * Print process window bar when the list is empty.
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems */
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystemsstatic void
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystemsprint_empty_process_bar()
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems{
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems char header[256];
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems return;
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems }
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems (void) werase(process_window);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems (void) wattron(process_window, A_REVERSE);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems (void) snprintf(header, sizeof (header),
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems "No process/thread data is available");
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems fill_space_right(header, screen_width, sizeof (header));
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(process_window, 0, 0, "%s", header);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems print_current_mode();
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems (void) wattroff(process_window, A_REVERSE);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems (void) wrefresh(process_window);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems}
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Print per-process statistics in process pane.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * This is called when mode of operation is process.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_process(unsigned int pid)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems void *list;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char header[256];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char tmp[30];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems list = lt_stat_list_create(current_list_type, LT_LEVEL_PROCESS,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems pid, 0, 8, sort_type);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(process_window);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattron(process_window, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(header, sizeof (header), "Process %s (%i), %d threads",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_stat_proc_get_name(pid), pid, lt_stat_proc_get_nthreads(pid));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems fill_space_right(header, screen_width, sizeof (header));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(process_window, 0, 0, "%s", header);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (current_list_type != LT_LIST_SPECIALS) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(process_window, 0, 48, "Total: %s",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems get_time_string((double)lt_stat_list_get_gtotal(list),
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems tmp, sizeof (tmp), 12));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_current_mode();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattroff(process_window, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_statistics(process_window, 1, 8, list);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_stat_list_free(list);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wrefresh(process_window);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Display the list of processes that are tracked, in task bar.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * This one is called when mode of operation is process.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_taskbar_process(pid_t *pidlist, int pidlist_len, int pidlist_index)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const int ITEM_WIDTH = 8;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int number_item;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int i;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int xpos = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems number_item = (screen_width / ITEM_WIDTH) - 1;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems i = pidlist_index - (pidlist_index % number_item);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(taskbar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i != 0) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(taskbar, 0, xpos, "<-");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems xpos = ITEM_WIDTH / 2;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems while (xpos + ITEM_WIDTH <= screen_width && i < pidlist_len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char str[ITEM_WIDTH+1];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int slen;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const char *pname = lt_stat_proc_get_name(pidlist[i]);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (pname && pname[0]) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(str, sizeof (str) - 1, "%s", pname);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(str, sizeof (str) - 1,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "<%d>", pidlist[i]);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems slen = strlen(str);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (slen < ITEM_WIDTH) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) memset(&str[slen], ' ', ITEM_WIDTH - slen);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems str[sizeof (str) - 1] = '\0';
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i == pidlist_index) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattron(taskbar, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(taskbar, 0, xpos, "%s", str);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i == pidlist_index) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattroff(taskbar, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems xpos += ITEM_WIDTH;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems i++;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i != pidlist_len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(taskbar, 0, screen_width - 2, "->");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wrefresh(taskbar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Display the list of processes that are tracked, in task bar.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * This one is called when mode of operation is thread.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_taskbar_thread(pid_t *pidlist, id_t *tidlist, int list_len,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int list_index)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const int ITEM_WIDTH = 12;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int number_item;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int i;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int xpos = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const char *pname = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems pid_t last_pid = INVALID_PID;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems number_item = (screen_width - 8) / ITEM_WIDTH;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems i = list_index - (list_index % number_item);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(taskbar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i != 0) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(taskbar, 0, xpos, "<-");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems xpos = 4;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems while (xpos + ITEM_WIDTH <= screen_width && i < list_len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char str[ITEM_WIDTH+1];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int slen, tlen;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (pidlist[i] != last_pid) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems pname = lt_stat_proc_get_name(pidlist[i]);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems last_pid = pidlist[i];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Calculate length of thread's ID; use shorter process name
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * in order to save space on the screen.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems tlen = snprintf(NULL, 0, "_%d", tidlist[i]);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (pname && pname[0]) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(str, sizeof (str) - tlen - 1,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%s", pname);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(str, sizeof (str) - tlen - 1,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "<%d>", pidlist[i]);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems slen = strlen(str);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(&str[slen], sizeof (str) - slen,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "_%d", tidlist[i]);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems slen += tlen;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (slen < ITEM_WIDTH) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) memset(&str[slen], ' ', ITEM_WIDTH - slen);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems str[sizeof (str) - 1] = '\0';
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i == list_index) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattron(taskbar, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(taskbar, 0, xpos, "%s", str);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i == list_index) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattroff(taskbar, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems xpos += ITEM_WIDTH;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems i++;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (i != list_len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(taskbar, 0, screen_width - 2, "->");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wrefresh(taskbar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Print per-thread statistics in process pane.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * This is called when mode of operation is thread.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_thread(pid_t pid, id_t tid)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems void *list;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char header[256];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char tmp[30];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems list = lt_stat_list_create(current_list_type, LT_LEVEL_THREAD,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems pid, tid, 8, sort_type);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(process_window);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattron(process_window, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) snprintf(header, sizeof (header),
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Process %s (%i), LWP %d",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_stat_proc_get_name(pid), pid, tid);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems fill_space_right(header, screen_width, sizeof (header));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(process_window, 0, 0, "%s", header);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (current_list_type != LT_LIST_SPECIALS) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(process_window, 0, 48, "Total: %s",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems get_time_string(
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (double)lt_stat_list_get_gtotal(list),
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems tmp, sizeof (tmp), 12));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_current_mode();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattroff(process_window, A_REVERSE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_statistics(process_window, 1, 8, list);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_stat_list_free(list);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wrefresh(process_window);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Update hint string at the bottom line. The message to print is stored in
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * hint. If hint is NULL, the function will display its own message.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_hint(const char *hint)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const char *HINTS[] = {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Press '<' or '>' to switch between processes.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Press 'q' to exit.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Press 'r' to refresh immediately.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Press 't' to toggle Process/Thread display mode.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Press 'h' for help.",
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems "Use 'c', 'a', 'm', 'p' to change sort criteria.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Use '1', '2', '3' to switch between windows."
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems };
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const uint64_t update_interval = 5000; /* 5 seconds */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems static int index = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems static uint64_t next_hint = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems uint64_t now = lt_millisecond();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (hint == NULL) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (now < next_hint) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems hint = HINTS[index];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems index = (index + 1) % (sizeof (HINTS) / sizeof (HINTS[0]));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems next_hint = now + update_interval;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Important messages are displayed at least every 2 cycles.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems next_hint = now + update_interval * 2;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(hintbar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(hintbar, 0, (screen_width - strlen(hint)) / 2,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%s", hint);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wrefresh(hintbar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Create a PID list or a PID/TID list (if operation mode is thread) from
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * available statistics.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsget_plist(pid_t **plist, id_t **tlist, int *list_len, int *list_index)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!thread_mode) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Per-process mode */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *list_len = lt_stat_proc_list_create(plist, NULL);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Search for previously selected PID */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems for (*list_index = 0; *list_index < *list_len &&
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (*plist)[*list_index] != selected_pid;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems ++*list_index) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (*list_index >= *list_len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * The previously selected pid is gone.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Select the first one.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *list_index = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Per-thread mode */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *list_len = lt_stat_proc_list_create(plist, tlist);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Search for previously selected PID & TID */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems for (*list_index = 0; *list_index < *list_len;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems ++*list_index) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if ((*plist)[*list_index] == selected_pid &&
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (*tlist)[*list_index] == selected_tid) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (*list_index >= *list_len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * The previously selected pid/tid is gone.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Select the first one.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems for (*list_index = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *list_index < *list_len &&
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (*plist)[*list_index] != selected_pid;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems ++*list_index) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (*list_index >= *list_len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * The previously selected pid is gone.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Select the first one
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *list_index = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* Print help message when user presses 'h' hot key */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_help(void)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems const char *HELP[] = {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems TITLE,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems COPYRIGHT,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "These single-character commands are available:",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "< - Move to previous process/thread.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "> - Move to next process/thread.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "q - Exit.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "r - Refresh.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "t - Toggle process/thread mode.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "c - Sort by count.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "a - Sort by average.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "m - Sort by maximum.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "p - Sort by percent.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "1 - Show list by causes.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "2 - Show list of special entries.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "3 - Show list by synchronization objects.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "h - Show this help.",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Press any key to continue..."
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems };
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int i;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems for (i = 0; i < sizeof (HELP) / sizeof (HELP[0]); ++i) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(stdscr, i, 0, "%s", HELP[i]);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) refresh();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Print title on screen
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsprint_title(void)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattrset(titlebar, COLOR_PAIR(LT_COLOR_HEADER));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wbkgd(titlebar, COLOR_PAIR(LT_COLOR_HEADER));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(titlebar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(titlebar, 0, (screen_width - strlen(TITLE)) / 2,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "%s", TITLE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wrefresh(titlebar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(captionbar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(captionbar, 0, 0, "%s",
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems " Cause "
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Count Average Maximum Percent");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wrefresh(captionbar);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wattrset(hintbar, COLOR_PAIR(LT_COLOR_HEADER));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) wbkgd(hintbar, COLOR_PAIR(LT_COLOR_HEADER));
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Handle signal from terminal resize
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* ARGSUSED */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsstatic void
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemson_resize(int sig)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_gpipe_break("r");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Initialize display. Display will be cleared when this function returns.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsvoid
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemslt_display_init(void)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Window resize signal */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) signal(SIGWINCH, on_resize);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Initialize curses library */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) initscr();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) start_color();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) keypad(stdscr, TRUE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) nonl();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) cbreak();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) noecho();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) curs_set(0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Set up color pairs */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) init_pair(LT_COLOR_DEFAULT, COLOR_WHITE, COLOR_BLACK);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) init_pair(LT_COLOR_HEADER, COLOR_BLACK, COLOR_WHITE);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems curses_inited = TRUE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems getmaxyx(stdscr, screen_height, screen_width);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (screen_width < LT_WINDOW_X || screen_height < LT_WINDOW_Y) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(stdscr, 0, 0, "Terminal size is too small.");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(stdscr, 1, 0,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "Please resize it to 80x24 or larger.");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) mvwprintw(stdscr, 2, 0, "Press q to quit.");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) refresh();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Set up all window panes */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems titlebar = subwin(stdscr, 1, screen_width, 0, 0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems captionbar = subwin(stdscr, 1, screen_width, 1, 0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems sysglobal_window = subwin(stdscr, screen_height / 2 - 1,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems screen_width, 2, 0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems process_window = subwin(stdscr, screen_height / 2 - 3,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems screen_width, screen_height / 2 + 1, 0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems taskbar = subwin(stdscr, 1, screen_width, screen_height - 2, 0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems hintbar = subwin(stdscr, 1, screen_width, screen_height - 1, 0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(stdscr);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) refresh();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems display_initialized = TRUE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_title();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * The event loop for display. It displays data on screen and handles hotkey
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * presses.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Parameter :
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * duration - returns after 'duration'
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * The function also returns if user presses 'q', 'Ctrl+C' or 'r'.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems *
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Return value:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * 0 - main() exits
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * 1 - main() calls it again
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsint
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemslt_display_loop(int duration)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems uint64_t start;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int remaining;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems struct timeval timeout;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems fd_set read_fd;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int need_refresh = TRUE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems pid_t *plist = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems id_t *tlist = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int list_len = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int list_index = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int retval = 1;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int next_snap;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int gpipe;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems start = lt_millisecond();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems gpipe = lt_gpipe_readfd();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!show_help) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_hint(NULL);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems get_plist(&plist, &tlist, &list_len, &list_index);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems for (;;) {
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems if (need_refresh && !show_help) {
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems if (list_len != 0) {
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems if (!thread_mode) {
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems print_taskbar_process(plist, list_len,
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems list_index);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems print_process(plist[list_index]);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems } else {
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems print_taskbar_thread(plist, tlist,
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems list_len, list_index);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems print_thread(plist[list_index],
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems tlist[list_index]);
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
a9c12afde877c596eed286ac3f1d518246e5cd1eKrishnendu Sadhukhan - Sun Microsystems print_empty_process_bar();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems need_refresh = TRUE; /* Usually we need refresh. */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems remaining = duration - (int)(lt_millisecond() - start);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (remaining <= 0) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Embedded dtrace snap action here. */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems next_snap = lt_dtrace_work(0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (next_snap == 0) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Just did a snap, check time for the next one.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems next_snap = lt_dtrace_work(0);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (next_snap > 0 && remaining > next_snap) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems remaining = next_snap;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems timeout.tv_sec = remaining / 1000;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems timeout.tv_usec = (remaining % 1000) * 1000;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems FD_ZERO(&read_fd);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems FD_SET(0, &read_fd);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems FD_SET(gpipe, &read_fd);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Wait for keyboard input, or signal from gpipe */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (select(gpipe + 1, &read_fd, NULL, NULL, &timeout) > 0) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int k = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (FD_ISSET(gpipe, &read_fd)) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Data from pipe has priority */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char ch;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) read(gpipe, &ch, 1);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems k = ch; /* Need this for big-endianness */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems k = getch();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Check if we need to update the hint line whenever we
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * get a chance.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * NOTE: current implementation depends on
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * g_config.lt_cfg_snap_interval, but it's OK because it
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * doesn't have to be precise.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_hint(NULL);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * If help is on display right now, and a key press
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * happens, we need to clear the help and continue.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (show_help) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(stdscr);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) refresh();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_title();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems show_help = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Drop this key and continue */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems continue;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems switch (k) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'Q':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'q':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems retval = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems goto quit;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'R':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'r':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_display_deinit();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_display_init();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems goto quit;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'H':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'h':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems show_help = TRUE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) werase(stdscr);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) refresh();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_help();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case ',':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '<':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case KEY_LEFT:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems --list_index;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (list_index < 0) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems list_index = 0;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '.':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '>':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case KEY_RIGHT:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems ++list_index;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (list_index >= list_len) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems list_index = list_len - 1;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'a':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'A':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems sort_type = LT_SORT_AVG;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'p':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'P':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems sort_type = LT_SORT_TOTAL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'm':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'M':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems sort_type = LT_SORT_MAX;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'c':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'C':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems sort_type = LT_SORT_COUNT;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 't':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case 'T':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (plist != NULL) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems selected_pid = plist[list_index];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems selected_tid = INVALID_TID;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems thread_mode = !thread_mode;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems get_plist(&plist, &tlist,
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems &list_len, &list_index);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '1':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '!':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems current_list_type = LT_LIST_CAUSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '2':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '@':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (g_config.lt_cfg_low_overhead_mode) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_display_error("Switching mode is "
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "not available for '-f low'.");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems current_list_type = LT_LIST_SPECIALS;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '3':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems case '#':
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (g_config.lt_cfg_trace_syncobj) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems current_list_type = LT_LIST_SOBJ;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_sysglobal();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else if (g_config.lt_cfg_low_overhead_mode) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_display_error("Switching mode is "
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "not available for '-f low'.");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_display_error("Tracing "
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "synchronization objects is "
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems "disabled.");
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems default:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems /* Wake up for nothing; no refresh is needed */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems need_refresh = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems break;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems need_refresh = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsquit:
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (plist != NULL) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems selected_pid = plist[list_index];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (tlist != NULL) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems selected_tid = tlist[list_index];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems lt_stat_proc_list_free(plist, tlist);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems return (retval);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Clean up display.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsvoid
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemslt_display_deinit(void)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (curses_inited) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) clear();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) refresh();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) endwin();
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems titlebar = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems captionbar = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems sysglobal_window = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems taskbar = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems process_window = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems hintbar = NULL;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems screen_width = 1;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems screen_height = 1;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems display_initialized = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems curses_inited = FALSE;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/*
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems * Print message when display error happens.
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems/* ARGSUSED */
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemsvoid
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystemslt_display_error(const char *fmt, ...)
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems{
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems va_list vl;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems char tmp[81];
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems int l;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems va_start(vl, fmt);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) vsnprintf(tmp, sizeof (tmp), fmt, vl);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems va_end(vl);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems l = strlen(tmp);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems while (l > 0 && (tmp[l - 1] == '\n' || tmp[l - 1] == '\r')) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems tmp[l - 1] = '\0';
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems --l;
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems if (!display_initialized) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems (void) fprintf(stderr, "%s\n", tmp);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems } else if (!show_help) {
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems print_hint(tmp);
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems }
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems
15db28971f91c98efb449aebf46024ac72779fa3Krishnendu Sadhukhan - Sun Microsystems}