[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.27, Tue Oct 8 20:51:03 2019 UTC (4 years, 8 months ago) by kn
Branch: MAIN
CVS Tags: OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.26: +3 -3 lines

Simplify threads flag handling

Instead of always passing the threads flag which decides whether other
function arguments are used or not, make callers pass those arguments or
NULL depending on the threads flag.

This reflects better how thread IDs are shown in place of user names/IDs.

OK millert

/* $OpenBSD: machine.h,v 1.27 2019/10/08 20:51:03 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) */
	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 *);
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 char    *format_next_process(struct handle *,
		 const char *(*)(uid_t, 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);