/* * Copyright (c) 1984 through 2008, William LeFebvre * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * * Neither the name of William LeFebvre nor the names of other * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This file defines the interface between top and the machine-dependent * module. It is NOT machine dependent and should not need to be changed * for any specific machine. */ #ifndef _MACHINE_H_ #define _MACHINE_H_ #include "top.h" /* * The statics struct is filled in by machine_init. Fields marked as * "optional" are not filled in by every module. */ struct statics { char **procstate_names; char **cpustate_names; char **memory_names; char **swap_names; /* optional */ char **order_names; /* optional */ char **top_color_names; /* optional */ char **kernel_names; /* optional */ time_t boottime; /* optional */ int modemax; /* optional */ struct { unsigned int fullcmds : 1; unsigned int idle : 1; unsigned int warmup : 1; unsigned int threads : 1; } flags; }; /* * the system_info struct is filled in by a machine dependent routine. */ #ifdef p_active /* uw7 define macro p_active */ #define P_ACTIVE p_pactive #else #define P_ACTIVE p_active #endif struct system_info { int last_pid; double load_avg[NUM_AVERAGES]; int p_total; int P_ACTIVE; /* number of procs considered "active" */ int *procstates; int *cpustates; int *kernel; long *memory; long *swap; }; /* cpu_states is an array of percentages * 10. For example, the (integer) value 105 is 10.5% (or .105). */ /* * the process_select struct tells get_process_info what processes we * are interested in seeing */ struct process_select { int idle; /* show idle processes */ int system; /* show system processes */ int fullcmd; /* show full command */ int usernames; /* show usernames */ int uid; /* only this uid (unless uid == -1) */ char *command; /* only this command (unless == NULL) */ int mode; /* select display mode (0 is default) */ int threads; /* show threads separately */ }; /* routines defined by the machine dependent module */ int machine_init(struct statics *); void get_system_info(struct system_info *); caddr_t get_process_info(struct system_info *, struct process_select *, int); char *format_header(char *); char *format_next_process(caddr_t, char *(*)(int)); int proc_owner(int); #ifdef HAVE_FORMAT_PROCESS_HEADER #endif /* _MACHINE_H_ */ char *format_process_header(struct process_select *sel, caddr_t handle, int count); #endif