2 * sysstat: System performance tools for Linux
3 * (C) 1999-2010 by Sebastien Godard (sysstat <at> orange.fr)
9 /* Maximum length of sensors device name */
10 #define MAX_SENSORS_DEV_LEN 20
13 #include <sched.h> /* For __CPU_SETSIZE */
18 ***************************************************************************
19 * Various keywords and constants
20 ***************************************************************************
28 /* Maximum number of CPUs */
30 #define NR_CPUS __CPU_SETSIZE
35 /* Maximum number of interrupts */
38 /* Size of /proc/interrupts line, CPU data excluded */
39 #define INTERRUPTS_LINE 128
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"
57 #define DEVMAP_DIR "/dev/mapper"
59 #define MAX_FILE_LEN 256
60 #define MAX_PF_NAME 1024
61 #define DEVMAP_MAJOR 253
62 #define MAX_NAME_LEN 72
66 /* Environment variables */
67 #define ENV_TIME_FMT "S_TIME_FORMAT"
68 #define ENV_TIME_DEFTM "S_TIME_DEF_TIME"
70 #define DIGITS "0123456789"
74 ***************************************************************************
75 * Macro functions definitions.
76 ***************************************************************************
79 /* Allocate and init structure */
80 #define SREALLOC(S, TYPE, SIZE) do { \
84 if ((S = (TYPE *) realloc(S, (SIZE))) == NULL) { \
88 /* If the ptr was null, then it's a malloc() */ \
90 memset(S, 0, (SIZE)); \
95 * Macros used to display statistics values.
97 * NB: Define SP_VALUE() to normalize to %;
98 * HZ is 1024 on IA64 and % should be normalized to 100.
100 #define S_VALUE(m,n,p) (((double) ((n) - (m))) / (p) * HZ)
101 #define SP_VALUE(m,n,p) (((double) ((n) - (m))) / (p) * 100)
104 * Under very special circumstances, STDOUT may become unavailable.
105 * This is what we try to guess here
107 #define TEST_STDOUT(_fd_) do { \
108 if (write(_fd_, "", 0) == -1) { \
115 #define MINIMUM(a,b) ((a) < (b) ? (a) : (b))
117 #define PANIC(m) sysstat_panic(__FUNCTION__, m)
120 /* Number of ticks per second */
122 extern unsigned int hz;
124 /* Number of bit shifts to convert pages to kB */
125 extern unsigned int kb_shift;
128 * kB <-> number of pages.
129 * Page size depends on machine architecture (4 kB, 8 kB, 16 kB, 64 kB...)
131 #define KB_TO_PG(k) ((k) >> kb_shift)
132 #define PG_TO_KB(k) ((k) << kb_shift)
135 ***************************************************************************
136 * Structures definitions
137 ***************************************************************************
140 /* Structure used for extended disk statistics */
141 struct ext_disk_stats {
150 ***************************************************************************
151 * Functions prototypes
152 ***************************************************************************
156 compute_ext_disk_stats(struct stats_disk *, struct stats_disk *,
157 unsigned long long, struct ext_disk_stats *);
159 count_bits(void *, int);
161 count_csvalues(int, char **);
166 extern unsigned long long
167 get_interval(unsigned long long, unsigned long long);
171 get_localtime(struct tm *);
173 get_time(struct tm *);
175 get_per_cpu_interval(struct stats_cpu *, struct stats_cpu *);
177 get_sysfs_dev_nr(int);
179 get_win_height(void);
185 ll_s_value(unsigned long long, unsigned long long, unsigned long long);
187 ll_sp_value(unsigned long long, unsigned long long, unsigned long long);
189 print_gal_header(struct tm *, char *, char *, char *, char *, int);
193 sysstat_panic(const char *, int);
195 #endif /* _COMMON_H */