-
Notifications
You must be signed in to change notification settings - Fork 15
/
machine.h
134 lines (112 loc) · 2.92 KB
/
machine.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
* 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.
*
* Copyright (c) 2007-2019, Mark Wong
*/
#ifndef _MACHINE_H_
#define _MACHINE_H_
#include <time.h>
#include <sys/types.h>
#include "pg.h"
#include "pg_config_manual.h"
/*
#ifdef CLK_TCK
# define HZ CLK_TCK
# else
# define HZ 60
# endif
*/
#ifndef HZ
#define HZ sysconf(_SC_CLK_TCK)
#endif
/* Display modes. */
enum DisplayMode
{
MODE_PROCESSES,
MODE_IO_STATS,
MODE_REPLICATION,
MODE_TYPES /* number of modes */
};
/* Maximum number of columns allowed for display */
#define MAX_COLS 255
/*
* The entire display is based on these next numbers being defined as is.
*/
#define NUM_AVERAGES 3
#define NPROCSTATES 7
/*
* 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 **color_names; /* optional */
time_t boottime; /* optional */
int ncpus;
struct
{
unsigned int fullcmds:1;
unsigned int idle:1;
unsigned int warmup: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;
int64_t *cpustates;
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 fullcmd; /* show full command */
char *command; /* only this command (unless == NULL) */
char usename[NAMEDATALEN + 1]; /* only this postgres usename */
};
/* 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,
struct pg_conninfo_ctx *, int);
char *format_header(char *);
#if defined(__linux__) || defined (__FreeBSD__)
char *format_next_io(caddr_t);
#endif /* defined(__linux__) || defined (__FreeBSD__) */
char *format_next_process(caddr_t);
char *format_next_replication(caddr_t);
uid_t proc_owner(pid_t);
void update_state(int *pgstate, char *state);
void update_str(char **, char *);
extern int mode_stats;
extern char *backendstatenames[];
extern char *procstatenames[];
extern char fmt_header_io[];
extern char fmt_header_replication[];
#endif /* _MACHINE_H_ */