Changeset View
Changeset View
Standalone View
Standalone View
contrib/top/machine.h
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
/* | /* | ||||
* 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. | |||||
* | |||||
* $FreeBSD$ | * $FreeBSD$ | ||||
*/ | */ | ||||
/* | /* | ||||
* This file defines the interface between top and the machine-dependent | * This file defines the interface between top and the machine-dependent | ||||
* module. It is NOT machine dependent and should not need to be changed | * module. It is NOT machine dependent and should not need to be changed | ||||
* for any specific machine. | * for any specific machine. | ||||
*/ | */ | ||||
#ifndef MACHINE_H | |||||
#define MACHINE_H | |||||
#ifndef _MACHINE_H_ | |||||
#define _MACHINE_H_ | |||||
#include "top.h" | #include "top.h" | ||||
/* | /* | ||||
* the statics struct is filled in by machine_init | * The statics struct is filled in by machine_init. Fields marked as | ||||
* "optional" are not filled in by every module. | |||||
*/ | */ | ||||
struct statics | struct statics | ||||
{ | { | ||||
char **procstate_names; | char **procstate_names; | ||||
char **cpustate_names; | char **cpustate_names; | ||||
char **memory_names; | char **memory_names; | ||||
char **arc_names; | char **arc_names; | ||||
char **swap_names; | char **swap_names; /* optional */ | ||||
#ifdef ORDER | char **order_names; /* optional */ | ||||
char **order_names; | char **top_color_names; /* optional */ | ||||
#endif | char **kernel_names; /* optional */ | ||||
int ncpus; | time_t boottime; /* optional */ | ||||
int modemax; /* optional */ | |||||
struct { | |||||
unsigned int fullcmds : 1; | |||||
unsigned int idle : 1; | |||||
unsigned int warmup : 1; | |||||
unsigned int threads : 1; | |||||
unsigned int jids: 1; | |||||
} flags; | |||||
}; | }; | ||||
/* | /* | ||||
* the system_info struct is filled in by a machine dependent routine. | * the system_info struct is filled in by a machine dependent routine. | ||||
*/ | */ | ||||
#ifdef p_active /* uw7 define macro p_active */ | #ifdef p_active /* uw7 define macro p_active */ | ||||
#define P_ACTIVE p_pactive | #define P_ACTIVE p_pactive | ||||
#else | #else | ||||
#define P_ACTIVE p_active | #define P_ACTIVE p_active | ||||
#endif | #endif | ||||
struct system_info | struct system_info | ||||
{ | { | ||||
int last_pid; | int last_pid; | ||||
double load_avg[NUM_AVERAGES]; | double load_avg[NUM_AVERAGES]; | ||||
int p_total; | int p_total; | ||||
int P_ACTIVE; /* number of procs considered "active" */ | int P_ACTIVE; /* number of procs considered "active" */ | ||||
int *procstates; | int *procstates; | ||||
int *cpustates; | int *cpustates; | ||||
int *memory; | int *kernel; | ||||
int *arc; | long *memory; | ||||
int *swap; | long *swap; | ||||
struct timeval boottime; | long *arc; | ||||
int ncpus; | |||||
}; | }; | ||||
/* cpu_states is an array of percentages * 10. For example, | /* cpu_states is an array of percentages * 10. For example, | ||||
the (integer) value 105 is 10.5% (or .105). | the (integer) value 105 is 10.5% (or .105). | ||||
*/ | */ | ||||
/* | /* | ||||
* the process_select struct tells get_process_info what processes we | * the process_select struct tells get_process_info what processes we | ||||
* are interested in seeing | * are interested in seeing | ||||
*/ | */ | ||||
struct process_select | struct process_select | ||||
{ | { | ||||
int idle; /* show idle processes */ | int idle; /* show idle processes */ | ||||
int self; /* show self */ | |||||
int system; /* show system processes */ | int system; /* show system processes */ | ||||
int thread; /* show threads */ | int fullcmd; /* show full command */ | ||||
int usernames; /* show usernames */ | |||||
int uid; /* only this uid (unless uid == -1) */ | int uid; /* only this uid (unless uid == -1) */ | ||||
int wcpu; /* show weighted cpu */ | |||||
int jid; /* only this jid (unless jid == -1) */ | |||||
int jail; /* show jail ID */ | |||||
int kidle; /* show per-CPU idle threads */ | |||||
char *command; /* only this command (unless == NULL) */ | char *command; /* only this command (unless == NULL) */ | ||||
int mode; /* select display mode (0 is default) */ | |||||
int threads; /* show threads separately */ | |||||
int filter_jail;/* Whether to filter by jail or ignore .jail. */ | |||||
int jail; /* Only from this jail. */ | |||||
}; | }; | ||||
/* routines defined by the machine dependent module */ | /* 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); | |||||
void calculate_header_columns(struct statics *statics); | |||||
char *format_header(char *); | |||||
char *format_next_process(caddr_t, char *(*)(int)); | |||||
int proc_owner(int); | |||||
#ifdef HAVE_FORMAT_PROCESS_HEADER | |||||
char *format_header(); | #endif /* _MACHINE_H_ */ | ||||
char *format_next_process(); | char *format_process_header(struct process_select *sel, caddr_t handle, int count); | ||||
void toggle_pcpustats(void); | #endif | ||||
void get_system_info(struct system_info *si); | |||||
int machine_init(struct statics *statics, char do_unames); | |||||
int proc_owner(int pid); | |||||
/* non-int routines typically used by the machine dependent module */ | |||||
char *printable(); | |||||
#endif /* MACHINE_H */ |