]> granicus.if.org Git - sysstat/blob - iostat.h
NLS: Sync with translation project
[sysstat] / iostat.h
1 /*
2  * iostat: report CPU and I/O statistics
3  * (C) 1999-2016 by Sebastien Godard (sysstat <at> orange.fr)
4  */
5
6 #ifndef _IOSTAT_H
7 #define _IOSTAT_H
8
9 #include "common.h"
10
11 /* I_: iostat - D_: Display - F_: Flag */
12 #define I_D_CPU                 0x00001
13 #define I_D_DISK                0x00002
14 #define I_D_TIMESTAMP           0x00004
15 #define I_D_EXTENDED            0x00008
16 #define I_D_PART_ALL            0x00010
17 #define I_D_KILOBYTES           0x00020
18 #define I_F_HAS_SYSFS           0x00040
19 #define I_D_DEBUG               0x00080
20 #define I_D_UNFILTERED          0x00100
21 #define I_D_MEGABYTES           0x00200
22 #define I_D_PARTITIONS          0x00400
23 #define I_F_HAS_DISKSTATS       0x00800
24 #define I_D_HUMAN_READ          0x01000
25 #define I_D_PERSIST_NAME        0x02000
26 #define I_D_OMIT_SINCE_BOOT     0x04000
27 #define I_D_JSON_OUTPUT         0x08000
28 #define I_D_DEVMAP_NAME         0x10000
29 #define I_D_ISO                 0x20000
30 #define I_D_GROUP_TOTAL_ONLY    0x40000
31 #define I_D_ZERO_OMIT           0x80000
32
33 #define DISPLAY_CPU(m)                  (((m) & I_D_CPU)              == I_D_CPU)
34 #define DISPLAY_DISK(m)                 (((m) & I_D_DISK)             == I_D_DISK)
35 #define DISPLAY_TIMESTAMP(m)            (((m) & I_D_TIMESTAMP)        == I_D_TIMESTAMP)
36 #define DISPLAY_EXTENDED(m)             (((m) & I_D_EXTENDED)         == I_D_EXTENDED)
37 #define DISPLAY_PART_ALL(m)             (((m) & I_D_PART_ALL)         == I_D_PART_ALL)
38 #define DISPLAY_KILOBYTES(m)            (((m) & I_D_KILOBYTES)        == I_D_KILOBYTES)
39 #define DISPLAY_MEGABYTES(m)            (((m) & I_D_MEGABYTES)        == I_D_MEGABYTES)
40 #define HAS_SYSFS(m)                    (((m) & I_F_HAS_SYSFS)        == I_F_HAS_SYSFS)
41 #define DISPLAY_DEBUG(m)                (((m) & I_D_DEBUG)            == I_D_DEBUG)
42 #define DISPLAY_UNFILTERED(m)           (((m) & I_D_UNFILTERED)       == I_D_UNFILTERED)
43 #define DISPLAY_PARTITIONS(m)           (((m) & I_D_PARTITIONS)       == I_D_PARTITIONS)
44 #define HAS_DISKSTATS(m)                (((m) & I_F_HAS_DISKSTATS)    == I_F_HAS_DISKSTATS)
45 #define DISPLAY_HUMAN_READ(m)           (((m) & I_D_HUMAN_READ)       == I_D_HUMAN_READ)
46 #define DISPLAY_PERSIST_NAME_I(m)       (((m) & I_D_PERSIST_NAME)     == I_D_PERSIST_NAME)
47 #define DISPLAY_OMIT_SINCE_BOOT(m)      (((m) & I_D_OMIT_SINCE_BOOT)  == I_D_OMIT_SINCE_BOOT)
48 #define DISPLAY_DEVMAP_NAME(m)          (((m) & I_D_DEVMAP_NAME)      == I_D_DEVMAP_NAME)
49 #define DISPLAY_ISO(m)                  (((m) & I_D_ISO)              == I_D_ISO)
50 #define DISPLAY_GROUP_TOTAL_ONLY(m)     (((m) & I_D_GROUP_TOTAL_ONLY) == I_D_GROUP_TOTAL_ONLY)
51 #define DISPLAY_ZERO_OMIT(m)            (((m) & I_D_ZERO_OMIT)        == I_D_ZERO_OMIT)
52 #define DISPLAY_JSON_OUTPUT(m)          (((m) & I_D_JSON_OUTPUT)        == I_D_JSON_OUTPUT)
53
54 /* Preallocation constants */
55 #define NR_DEV_PREALLOC         4
56
57 /* Environment variable */
58 #define ENV_POSIXLY_CORRECT     "POSIXLY_CORRECT"
59
60 /*
61  * Structures for I/O stats.
62  * The number of structures allocated corresponds to the number of devices
63  * present in the system, plus a preallocation number to handle those
64  * that can be registered dynamically.
65  * The number of devices is found by using /sys filesystem (if mounted).
66  * For each io_stats structure allocated corresponds a io_hdr_stats structure.
67  * A io_stats structure is considered as unused or "free" (containing no stats
68  * for a particular device) if the 'major' field of the io_hdr_stats
69  * structure is set to 0.
70  */
71 struct io_stats {
72         /* # of sectors read */
73         unsigned long rd_sectors        __attribute__ ((aligned (8)));
74         /* # of sectors written */
75         unsigned long wr_sectors        __attribute__ ((packed));
76         /* # of read operations issued to the device */
77         unsigned long rd_ios            __attribute__ ((packed));
78         /* # of read requests merged */
79         unsigned long rd_merges         __attribute__ ((packed));
80         /* # of write operations issued to the device */
81         unsigned long wr_ios            __attribute__ ((packed));
82         /* # of write requests merged */
83         unsigned long wr_merges         __attribute__ ((packed));
84         /* Time of read requests in queue */
85         unsigned int  rd_ticks          __attribute__ ((packed));
86         /* Time of write requests in queue */
87         unsigned int  wr_ticks          __attribute__ ((packed));
88         /* # of I/Os in progress */
89         unsigned int  ios_pgr           __attribute__ ((packed));
90         /* # of ticks total (for this device) for I/O */
91         unsigned int  tot_ticks         __attribute__ ((packed));
92         /* # of ticks requests spent in queue */
93         unsigned int  rq_ticks          __attribute__ ((packed));
94 };
95
96 #define IO_STATS_SIZE   (sizeof(struct io_stats))
97
98 /* Possible values for field "status" in io_hdr_stats structure */
99 #define DISK_UNREGISTERED       0
100 #define DISK_REGISTERED         1
101 #define DISK_GROUP              2
102
103 /*
104  * Each io_stats structure has an associated io_hdr_stats structure.
105  * An io_hdr_stats structure tells if the corresponding device has been
106  * unregistered or not (status field) and also indicates the device name.
107  */
108 struct io_hdr_stats {
109         unsigned int status             __attribute__ ((aligned (4)));
110         unsigned int used               __attribute__ ((packed));
111         char name[MAX_NAME_LEN];
112 };
113
114 #define IO_HDR_STATS_SIZE       (sizeof(struct io_hdr_stats))
115
116 /* List of devices entered on the command line */
117 struct io_dlist {
118         /* Indicate whether its partitions are to be displayed or not */
119         int disp_part                   __attribute__ ((aligned (4)));
120         /* Device name */
121         char dev_name[MAX_NAME_LEN];
122 };
123
124 #define IO_DLIST_SIZE   (sizeof(struct io_dlist))
125
126 #endif  /* _IOSTAT_H */