Blame global_data.c

Packit Service 501009
/* global_data.c - core analysis suite
Packit Service 501009
 *
Packit Service 501009
 * Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
Packit Service 501009
 * Copyright (C) 2002-2006, 2010, 2012-2013, 2018 David Anderson
Packit Service 501009
 * Copyright (C) 2002-2006, 2010, 2012-2013, 2018 Red Hat, Inc. All rights reserved.
Packit Service 501009
 *
Packit Service 501009
 * This program is free software; you can redistribute it and/or modify
Packit Service 501009
 * it under the terms of the GNU General Public License as published by
Packit Service 501009
 * the Free Software Foundation; either version 2 of the License, or
Packit Service 501009
 * (at your option) any later version.
Packit Service 501009
 *
Packit Service 501009
 * This program is distributed in the hope that it will be useful,
Packit Service 501009
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 501009
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 501009
 * GNU General Public License for more details.
Packit Service 501009
 */
Packit Service 501009
Packit Service 501009
#include "defs.h"
Packit Service 501009
Packit Service 501009
/*
Packit Service 501009
 *  Data output FILE pointer.  The contents of fp are changed on the fly
Packit Service 501009
 *  depending upon whether the output is going to stdout, redirected to a 
Packit Service 501009
 *  user-designated pipe or file, or to the "standard" scrolling pipe.
Packit Service 501009
 *  Regardless of where it ends up, fprintf(fp, ...) is used throughout
Packit Service 501009
 *  instead of printf().
Packit Service 501009
 */
Packit Service 501009
Packit Service 501009
FILE *fp;   
Packit Service 501009
Packit Service 501009
/*
Packit Service 501009
 *  The state of the program is kept in the program_context structure.
Packit Service 501009
 *  Given that it's consulted so often, "pc" is globally available to
Packit Service 501009
 *  quickly access the structure contents.
Packit Service 501009
 */
Packit Service 501009
struct program_context program_context = { 0 };
Packit Service 501009
struct program_context *pc = &program_context;
Packit Service 501009
Packit Service 501009
/*
Packit Service 501009
 *  The same thing goes for accesses to the frequently-accessed task_table,
Packit Service 501009
 *  kernel_table, vm_table, symbol_table_data and machdep_table, making the 
Packit Service 501009
 *  "tt", "kt", "vt", "st" and "machdep" pointers globally available.
Packit Service 501009
 */
Packit Service 501009
struct task_table task_table = { 0 };
Packit Service 501009
struct task_table *tt = &task_table;
Packit Service 501009
Packit Service 501009
struct kernel_table kernel_table = { 0 };
Packit Service 501009
struct kernel_table *kt = &kernel_table;
Packit Service 501009
Packit Service 501009
struct vm_table vm_table = { 0 };
Packit Service 501009
struct vm_table *vt = &vm_table;
Packit Service 501009
Packit Service 501009
struct symbol_table_data symbol_table_data = { 0 };
Packit Service 501009
struct symbol_table_data *st = &symbol_table_data;
Packit Service 501009
Packit Service 501009
struct machdep_table machdep_table = { 0 };
Packit Service 501009
struct machdep_table *machdep = &machdep_table;
Packit Service 501009
Packit Service 501009
/*
Packit Service 501009
 *  Command functions are entered with the args[] array and argcnt value 
Packit Service 501009
 *  pre-set for issuance to getopt().
Packit Service 501009
 */
Packit Service 501009
Packit Service 501009
char *args[MAXARGS];	/* argument array */
Packit Service 501009
int argcnt;             /* argument count */
Packit Service 501009
int argerrs;            /* argument error counter */
Packit Service 501009
Packit Service 501009
/*
Packit Service 501009
 *  To add a new command, declare it in defs.h and enter it in this table.
Packit Service 501009
 */
Packit Service 501009
Packit Service 501009
struct command_table_entry linux_command_table[] = {
Packit Service 501009
	{"*", 	    cmd_pointer, help_pointer, 0},
Packit Service 501009
	{"alias",   cmd_alias,   help_alias,   0},
Packit Service 501009
        {"ascii",   cmd_ascii,   help_ascii,   0},
Packit Service 501009
        {"bpf",     cmd_bpf,     help_bpf,     0},
Packit Service 501009
        {"bt",      cmd_bt,      help_bt,      REFRESH_TASK_TABLE},
Packit Service 501009
	{"btop",    cmd_btop,    help_btop,    0},
Packit Service 501009
	{"dev",     cmd_dev,     help_dev,     0},
Packit Service 501009
	{"dis",     cmd_dis,     help_dis,     MINIMAL},
Packit Service 501009
	{"eval",    cmd_eval,    help_eval,    MINIMAL},
Packit Service 501009
	{"exit",    cmd_quit,    help_exit,    MINIMAL},
Packit Service 501009
	{"extend",  cmd_extend,  help_extend,  MINIMAL},
Packit Service 501009
	{"files",   cmd_files,   help_files,   REFRESH_TASK_TABLE},
Packit Service 501009
	{"foreach", cmd_foreach, help_foreach, REFRESH_TASK_TABLE},
Packit Service 501009
	{"fuser",   cmd_fuser,   help_fuser,   REFRESH_TASK_TABLE},
Packit Service 501009
	{"gdb",     cmd_gdb,     help_gdb,     REFRESH_TASK_TABLE},
Packit Service 501009
        {"help",    cmd_help,    help_help,    MINIMAL},
Packit Service 501009
	{"ipcs",    cmd_ipcs,    help_ipcs,    REFRESH_TASK_TABLE},
Packit Service 501009
	{"irq",     cmd_irq,     help_irq,     0},
Packit Service 501009
	{"kmem",    cmd_kmem,    help_kmem,    0},
Packit Service 501009
	{"list",    cmd_list,    help__list,   REFRESH_TASK_TABLE},
Packit Service 501009
	{"log",     cmd_log,     help_log,     MINIMAL},
Packit Service 501009
	{"mach",    cmd_mach,    help_mach,    0},
Packit Service 501009
	{"map",     cmd_map,     help_map,     HIDDEN_COMMAND},
Packit Service 501009
	{"mod",     cmd_mod,     help_mod,     0},
Packit Service 501009
	{"mount",   cmd_mount,   help_mount,   0},
Packit Service 501009
	{"net",	    cmd_net,	help_net,      REFRESH_TASK_TABLE},
Packit Service 501009
	{"p",       cmd_p,       help_p,       0},
Packit Service 501009
	{"ps",      cmd_ps,      help_ps,      REFRESH_TASK_TABLE},
Packit Service 501009
	{"pte",     cmd_pte,     help_pte,     0},
Packit Service 501009
	{"ptob",    cmd_ptob,    help_ptob,    0},
Packit Service 501009
	{"ptov",    cmd_ptov,    help_ptov,    0},
Packit Service 501009
        {"q",       cmd_quit,    help_quit,    MINIMAL},
Packit Service 501009
        {"tree",    cmd_tree,    help_tree,    REFRESH_TASK_TABLE},
Packit Service 501009
        {"rd",      cmd_rd,      help_rd,      MINIMAL},
Packit Service 501009
	{"repeat",  cmd_repeat,  help_repeat,  0},
Packit Service 501009
	{"runq",    cmd_runq,    help_runq,    REFRESH_TASK_TABLE},
Packit Service 501009
        {"search",  cmd_search,  help_search,  0},
Packit Service 501009
        {"set",     cmd_set,     help_set,     REFRESH_TASK_TABLE | MINIMAL},
Packit Service 501009
        {"sig",     cmd_sig,     help_sig,     REFRESH_TASK_TABLE},
Packit Service 501009
        {"struct",  cmd_struct,  help_struct,  0},
Packit Service 501009
	{"swap",    cmd_swap,    help_swap,    0},
Packit Service 501009
        {"sym",     cmd_sym,     help_sym,     MINIMAL},
Packit Service 501009
        {"sys",     cmd_sys,     help_sys,     REFRESH_TASK_TABLE},
Packit Service 501009
        {"task",    cmd_task,    help_task,    REFRESH_TASK_TABLE},
Packit Service 501009
	{"test",    cmd_test,    NULL,         HIDDEN_COMMAND},
Packit Service 501009
        {"timer",   cmd_timer,   help_timer,   0},
Packit Service 501009
	{"union",   cmd_union,   help_union,   0},
Packit Service 501009
	{"vm",      cmd_vm,      help_vm,      REFRESH_TASK_TABLE},
Packit Service 501009
	{"vtop",    cmd_vtop,    help_vtop,    REFRESH_TASK_TABLE},
Packit Service 501009
	{"waitq",   cmd_waitq,   help_waitq,   REFRESH_TASK_TABLE},
Packit Service 501009
	{"whatis",  cmd_whatis,  help_whatis,  0},
Packit Service 501009
	{"wr",      cmd_wr,      help_wr,      0},
Packit Service 501009
#if defined(S390) || defined(S390X)
Packit Service 501009
        {"s390dbf", cmd_s390dbf, help_s390dbf, 0},
Packit Service 501009
#endif
Packit Service 501009
	{(char *)NULL}
Packit Service 501009
};
Packit Service 501009
Packit Service 501009
struct extension_table *extension_table = NULL;
Packit Service 501009
Packit Service 501009
/*
Packit Service 501009
 *  The offset_table and size_table structure contents are referenced
Packit Service 501009
 *  through several OFFSET- and SIZE-related macros.  The array_table
Packit Service 501009
 *  is a shortcut used by get_array_length().
Packit Service 501009
 */
Packit Service 501009
struct offset_table offset_table = { 0 };
Packit Service 501009
struct size_table size_table = { 0 };
Packit Service 501009
struct array_table array_table = { 0 };