[BACK]Return to machine.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / top

File: [local] / src / usr.bin / top / machine.h (download)

Revision 1.31, Wed Aug 26 16:21:28 2020 UTC (3 years, 9 months ago) by kn
Branch: MAIN
CVS Tags: OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9, OPENBSD_6_8_BASE, OPENBSD_6_8
Changes since 1.30: +4 -3 lines

Add "t" to toggle the display of routing tables

Swap the WAIT column with RTABLE (and vice versa);  WAIT is wide enough to
fit RTABLE, somewhat adds additional value to STATE and seems therefore most
appropiate to hide in favour of RTABLE.

Filtering rtables with "T" does not toggle the column, just like filtering
users with "u" does not toggle between user and thread id.

Feedback jmc
OK remi

/* $OpenBSD: machine.h,v 1.31 2020/08/26 16:21:28 kn Exp $	 */

/*
 *  Top users/processes display for Unix
 *  Version 3
 *
 * Copyright (c) 1984, 1989, William LeFebvre, Rice University
 * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. 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.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR OR HIS EMPLOYER 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.
 */

/*
 * the statics struct is filled in by machine_init
 */
struct statics {
	char          **procstate_names;
	char          **cpustate_names;
	char          **memory_names;
	char          **order_names;
};

/*
 * the system_info struct is filled in by a machine dependent routine.
 */

struct system_info {
	pid_t           last_pid;
	double          load_avg[NUM_AVERAGES];
	int             p_total;
	int             p_active;	/* number of procs considered
					 * "active" */
	int            *procstates;
	int64_t        *cpustates;
	int            *cpuonline;
	int            *memory;
};

/*
 * 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             threads;	/* show threads */
	uid_t           uid;	/* only this uid (unless uid == -1) */
	uid_t           huid;	/* hide this uid (unless huid == -1) */
	pid_t           pid;	/* only this pid (unless pid == -1) */
	int             rtable;	/* show routing tables */
	int             rtableid;	/* only this rtable (unless rtableid == -1) */
	int             hrtableid;	/* hide this rtable (unless hrtableid == -1) */
	char           *command;/* only this command (unless == NULL) */
};

/* prototypes */
extern int      display_init(struct statics *);

/* machine.c */
extern int      machine_init(struct statics *);
extern char    *format_header(char *, char *);
extern void     get_system_info(struct system_info *);
extern struct handle
*get_process_info(struct system_info *, struct process_select *,
		 int (*) (const void *, const void *));
extern void     skip_processes(struct handle *, int);
extern char    *format_next_process(struct handle *,
		 const char *(*)(uid_t, int), int, pid_t *);
extern uid_t    proc_owner(pid_t);

extern struct kinfo_proc	*getprocs(int, int, int *);

int		getncpu(void);
int		getncpuonline(void);
int		getfscale(void);