Annotation of src/usr.bin/top/machine.h, Revision 1.14
1.14 ! tedu 1: /* $OpenBSD: machine.h,v 1.13 2005/06/08 22:36:43 millert Exp $ */
1.6 deraadt 2:
3: /*
4: * Top users/processes display for Unix
5: * Version 3
6: *
7: * Copyright (c) 1984, 1989, William LeFebvre, Rice University
8: * Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
9: *
10: * Redistribution and use in source and binary forms, with or without
11: * modification, are permitted provided that the following conditions
12: * are met:
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: * 2. Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: *
19: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22: * IN NO EVENT SHALL THE AUTHOR OR HIS EMPLOYER BE LIABLE FOR ANY DIRECT, INDIRECT,
23: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29: */
1.1 downsj 30:
31: /*
32: * This file defines the interface between top and the machine-dependent
33: * module. It is NOT machine dependent and should not need to be changed
34: * for any specific machine.
35: */
36:
37: /*
38: * the statics struct is filled in by machine_init
39: */
1.7 deraadt 40: struct statics {
41: char **procstate_names;
42: char **cpustate_names;
43: char **memory_names;
44: char **order_names;
1.1 downsj 45: };
46:
47: /*
48: * the system_info struct is filled in by a machine dependent routine.
49: */
50:
1.7 deraadt 51: struct system_info {
52: pid_t last_pid;
53: double load_avg[NUM_AVERAGES];
54: int p_total;
55: int p_active; /* number of procs considered
56: * "active" */
57: int *procstates;
1.13 millert 58: int64_t *cpustates;
1.7 deraadt 59: int *memory;
1.1 downsj 60: };
61:
1.7 deraadt 62: /*
63: * cpu_states is an array of percentages * 10. For example, the (integer)
64: * value 105 is 10.5% (or .105).
1.1 downsj 65: */
66:
67: /*
68: * the process_select struct tells get_process_info what processes we
69: * are interested in seeing
70: */
71:
1.7 deraadt 72: struct process_select {
73: int idle; /* show idle processes */
74: int system; /* show system processes */
1.14 ! tedu 75: int threads; /* show threads */
1.8 millert 76: uid_t uid; /* only this uid (unless uid == -1) */
1.12 otto 77: pid_t pid; /* only this pid (unless pid == -1) */
1.7 deraadt 78: char *command;/* only this command (unless == NULL) */
1.1 downsj 79: };
80:
1.2 downsj 81: /* prototypes */
1.7 deraadt 82: extern int display_init(struct statics *);
1.1 downsj 83:
1.2 downsj 84: /* machine.c */
1.7 deraadt 85: extern int machine_init(struct statics *);
86: extern char *format_header(char *);
87: extern void get_system_info(struct system_info *);
1.10 deraadt 88: extern caddr_t
1.7 deraadt 89: get_process_info(struct system_info *, struct process_select *,
90: int (*) (const void *, const void *));
1.9 deraadt 91: extern char *format_next_process(caddr_t, char *(*)(uid_t));
1.8 millert 92: extern uid_t proc_owner(pid_t);
1.12 otto 93:
94: extern struct kinfo_proc2 *getprocs(int, int, int *);