]> granicus.if.org Git - sysstat/blob - common.h
Added CPU average clock frequency statistics to sar and sadc.
[sysstat] / common.h
1 /*
2  * sysstat: System performance tools for Linux
3  * (C) 1999-2010 by Sebastien Godard (sysstat <at> orange.fr)
4  */
5
6 #ifndef _COMMON_H
7 #define _COMMON_H
8
9 /* Maximum length of sensors device name */
10 #define MAX_SENSORS_DEV_LEN     20
11
12 #include <time.h>
13 #include <sched.h>      /* For __CPU_SETSIZE */
14 #include "rd_stats.h"
15
16
17 /*
18  ***************************************************************************
19  * Various keywords and constants
20  ***************************************************************************
21  */
22
23 #define FALSE   0
24 #define TRUE    1
25
26 #define DISP_HDR        1
27
28 /* Maximum number of CPUs */
29 #ifdef __CPU_SETSIZE
30 #define NR_CPUS         __CPU_SETSIZE
31 #else
32 #define NR_CPUS         1024
33 #endif
34
35 /* Maximum number of interrupts */
36 #define NR_IRQS                 256
37
38 /* Size of /proc/interrupts line, CPU data excluded */
39 #define INTERRUPTS_LINE 128
40
41 /* Keywords */
42 #define K_ISO   "ISO"
43 #define K_ALL   "ALL"
44 #define K_UTC   "UTC"
45
46 /* Files */
47 #define STAT                    "/proc/stat"
48 #define UPTIME                  "/proc/uptime"
49 #define PPARTITIONS             "/proc/partitions"
50 #define DISKSTATS               "/proc/diskstats"
51 #define INTERRUPTS              "/proc/interrupts"
52 #define MEMINFO                 "/proc/meminfo"
53 #define SYSFS_BLOCK             "/sys/block"
54 #define SYSFS_DEVCPU            "/sys/devices/system/cpu"
55 #define SYSFS_TIME_IN_STATE     "cpufreq/stats/time_in_state"
56 #define S_STAT                  "stat"
57 #define DEVMAP_DIR              "/dev/mapper"
58
59 #define MAX_FILE_LEN    256
60 #define MAX_PF_NAME     1024
61 #define DEVMAP_MAJOR    253
62 #define MAX_NAME_LEN    72
63
64 #define NR_DISKS        4
65
66 /* Environment variables */
67 #define ENV_TIME_FMT    "S_TIME_FORMAT"
68 #define ENV_TIME_DEFTM  "S_TIME_DEF_TIME"
69
70 #define DIGITS          "0123456789"
71
72
73 /*
74  ***************************************************************************
75  * Macro functions definitions.
76  ***************************************************************************
77  */
78
79 /* Allocate and init structure */
80 #define SREALLOC(S, TYPE, SIZE) do {                                                             \
81                                         TYPE *_p_;                                               \
82                                         _p_ = S;                                                 \
83                                         if (SIZE) {                                              \
84                                                 if ((S = (TYPE *) realloc(S, (SIZE))) == NULL) { \
85                                                         perror("realloc");                       \
86                                                         exit(4);                                 \
87                                                 }                                                \
88                                                 /* If the ptr was null, then it's a malloc() */  \
89                                                 if (!_p_)                                        \
90                                                         memset(S, 0, (SIZE));                    \
91                                         }                                                        \
92                                 } while (0)
93
94 /*
95  * Macros used to display statistics values.
96  *
97  * NB: Define SP_VALUE() to normalize to %;
98  * HZ is 1024 on IA64 and % should be normalized to 100.
99  */
100 #define S_VALUE(m,n,p)  (((double) ((n) - (m))) / (p) * HZ)
101 #define SP_VALUE(m,n,p) (((double) ((n) - (m))) / (p) * 100)
102
103 /*
104  * Under very special circumstances, STDOUT may become unavailable.
105  * This is what we try to guess here
106  */
107 #define TEST_STDOUT(_fd_)       do {                                    \
108                                         if (write(_fd_, "", 0) == -1) { \
109                                                 perror("stdout");       \
110                                                 exit(6);                \
111                                         }                               \
112                                 } while (0)
113
114
115 #define MINIMUM(a,b)    ((a) < (b) ? (a) : (b))
116
117 #define PANIC(m)        sysstat_panic(__FUNCTION__, m)
118
119
120 /* Number of ticks per second */
121 #define HZ              hz
122 extern unsigned int hz;
123
124 /* Number of bit shifts to convert pages to kB */
125 extern unsigned int kb_shift;
126
127 /*
128  * kB <-> number of pages.
129  * Page size depends on machine architecture (4 kB, 8 kB, 16 kB, 64 kB...)
130  */
131 #define KB_TO_PG(k)     ((k) >> kb_shift)
132 #define PG_TO_KB(k)     ((k) << kb_shift)
133
134 /*
135  ***************************************************************************
136  * Structures definitions
137  ***************************************************************************
138  */
139
140 /* Structure used for extended disk statistics */
141 struct ext_disk_stats {
142         double util;
143         double await;
144         double svctm;
145         double arqsz;
146 };
147
148
149 /*
150  ***************************************************************************
151  * Functions prototypes
152  ***************************************************************************
153  */
154
155 extern void
156         compute_ext_disk_stats(struct stats_disk *, struct stats_disk *,
157                                unsigned long long, struct ext_disk_stats *);
158 extern int
159         count_bits(void *, int);
160 extern int
161         count_csvalues(int, char **);
162 extern char *
163         device_name(char *);
164 extern void
165         get_HZ(void);
166 extern unsigned long long
167         get_interval(unsigned long long, unsigned long long);
168 extern void
169         get_kb_shift(void);
170 extern time_t
171         get_localtime(struct tm *);
172 extern time_t
173         get_time(struct tm *);
174 unsigned long long
175         get_per_cpu_interval(struct stats_cpu *, struct stats_cpu *);
176 extern int
177         get_sysfs_dev_nr(int);
178 extern int
179         get_win_height(void);
180 extern void
181         init_nls(void);
182 extern int
183         is_device(char *);
184 extern double
185         ll_s_value(unsigned long long, unsigned long long, unsigned long long);
186 extern double
187         ll_sp_value(unsigned long long, unsigned long long, unsigned long long);
188 extern int
189         print_gal_header(struct tm *, char *, char *, char *, char *, int);
190 extern void
191         print_version(void);
192 extern void
193         sysstat_panic(const char *, int);
194
195 #endif  /* _COMMON_H */