]> granicus.if.org Git - sysstat/blob - sadf.h
sadf: Add new flag FO_ITEM_LIST
[sysstat] / sadf.h
1 /*
2  * sadf: System activity data formatter
3  * (C) 1999-2019 by Sebastien Godard (sysstat <at> orange.fr)
4  */
5
6 #ifndef _SADF_H
7 #define _SADF_H
8
9 #include "sa.h"
10
11 /* DTD version for XML output */
12 #define XML_DTD_VERSION "3.7"
13
14 /* Various constants */
15 #define DO_SAVE         0
16 #define DO_RESTORE      1
17
18 #define IGNORE_NOTHING          0
19 #define IGNORE_RESTART          1
20 #define DONT_READ_CPU_NR        2
21 #define IGNORE_COMMENT          4
22 #define SET_TIMESTAMPS          8
23
24 /*
25  ***************************************************************************
26  * Output format identification values.
27  ***************************************************************************
28  */
29
30 /* Number of output formats */
31 #define NR_FMT  9
32
33 /* Output formats */
34 #define F_DB_OUTPUT     1
35 #define F_HEADER_OUTPUT 2
36 #define F_PPC_OUTPUT    3
37 #define F_XML_OUTPUT    4
38 #define F_JSON_OUTPUT   5
39 #define F_CONV_OUTPUT   6
40 #define F_SVG_OUTPUT    7
41 #define F_RAW_OUTPUT    8
42 #define F_PCP_OUTPUT    9
43
44 /* Format options */
45
46 /*
47  * Indicate that a decimal point should be used to make output
48  * locale independent.
49  */
50 #define FO_LC_NUMERIC_C         0x01
51
52 /*
53  * Indicate that output should stop after the header is displayed.
54  */
55 #define FO_HEADER_ONLY          0x02
56
57 /*
58  * Indicate that a true sysstat activity file but with a bad
59  * format should not yield an error message.
60  */
61 #define FO_BAD_FILE_FORMAT      0x04
62
63 /*
64  * Indicate that timestamp can be displayed in local time instead of UTC
65  * if option -T or -t has been used.
66  */
67 #define FO_LOCAL_TIME           0x08
68
69 /*
70  * Indicate that all activities will be displayed horizontally
71  * if option -h is used.
72  */
73 #define FO_HORIZONTALLY         0x10
74
75 /*
76  * Indicate that the timestamp can be displayed in seconds since the epoch
77  * if option -U has been used.
78  */
79 #define FO_SEC_EPOCH            0x20
80
81 /*
82  * Indicate that the list of fields should be displayed before the first
83  * line of statistics.
84  */
85 #define FO_FIELD_LIST           0x40
86
87 /*
88  * Indicate that flag AO_CLOSE_MARKUP (set for activities that need it)
89  * should be taken into account for this output format.
90  */
91 #define FO_TEST_MARKUP          0x80
92
93 /*
94  * Indicate that timestamp cannot be displayed in the original local time
95  * of the data file creator.
96  */
97 #define FO_NO_TRUE_TIME         0x100
98
99 /*
100  * Indicate that the number of different items should be counted and
101  * a list created (see @item_list and @item_list_sz in struct activity).
102  */
103 #define FO_ITEM_LIST            0x200
104
105 #define SET_LC_NUMERIC_C(m)             (((m) & FO_LC_NUMERIC_C)        == FO_LC_NUMERIC_C)
106 #define ACCEPT_HEADER_ONLY(m)           (((m) & FO_HEADER_ONLY)         == FO_HEADER_ONLY)
107 #define ACCEPT_BAD_FILE_FORMAT(m)       (((m) & FO_BAD_FILE_FORMAT)     == FO_BAD_FILE_FORMAT)
108 #define ACCEPT_LOCAL_TIME(m)            (((m) & FO_LOCAL_TIME)          == FO_LOCAL_TIME)
109 #define ACCEPT_HORIZONTALLY(m)          (((m) & FO_HORIZONTALLY)        == FO_HORIZONTALLY)
110 #define ACCEPT_SEC_EPOCH(m)             (((m) & FO_SEC_EPOCH)           == FO_SEC_EPOCH)
111 #define DISPLAY_FIELD_LIST(m)           (((m) & FO_FIELD_LIST)          == FO_FIELD_LIST)
112 #define TEST_MARKUP(m)                  (((m) & FO_TEST_MARKUP)         == FO_TEST_MARKUP)
113 #define REJECT_TRUE_TIME(m)             (((m) & FO_NO_TRUE_TIME)        == FO_NO_TRUE_TIME)
114 #define CREATE_ITEM_LIST(m)             (((m) & FO_ITEM_LIST)           == FO_ITEM_LIST)
115
116
117 /*
118  ***************************************************************************
119  * Various function prototypes
120  ***************************************************************************
121  */
122
123 void convert_file
124         (char [], struct activity *[]);
125
126 /*
127  * Prototypes used to display restart messages
128  */
129 __printf_funct_t print_db_restart
130         (int *, int, char *, char *, int, struct file_header *);
131 __printf_funct_t print_ppc_restart
132         (int *, int, char *, char *, int, struct file_header *);
133 __printf_funct_t print_xml_restart
134         (int *, int, char *, char *, int, struct file_header *);
135 __printf_funct_t print_json_restart
136         (int *, int, char *, char *, int, struct file_header *);
137 __printf_funct_t print_raw_restart
138         (int *, int, char *, char *, int, struct file_header *);
139
140 /*
141  * Prototypes used to display comments
142  */
143 __printf_funct_t print_db_comment
144         (int *, int, char *, char *, int, char *, struct file_header *);
145 __printf_funct_t print_ppc_comment
146         (int *, int, char *, char *, int, char *, struct file_header *);
147 __printf_funct_t print_xml_comment
148         (int *, int, char *, char *, int, char *, struct file_header *);
149 __printf_funct_t print_json_comment
150         (int *, int, char *, char *, int, char *, struct file_header *);
151 __printf_funct_t print_sar_comment
152         (int *, int, char *, char *, int, char *, struct file_header *);
153 __printf_funct_t print_raw_comment
154         (int *, int, char *, char *, int, char *, struct file_header *);
155
156 /*
157  * Prototypes used to display the statistics part of the report
158  */
159 __printf_funct_t print_xml_statistics
160         (int *, int, struct activity * [], unsigned int []);
161 __printf_funct_t print_json_statistics
162         (int *, int, struct activity * [], unsigned int []);
163 __printf_funct_t print_pcp_statistics
164         (int *, int, struct activity * [], unsigned int []);
165
166 /*
167  * Prototypes used to display the timestamp part of the report
168  */
169 __tm_funct_t print_db_timestamp
170         (void *, int, char *, char *, unsigned long long,
171          struct record_header *, struct file_header *, unsigned int);
172 __tm_funct_t print_ppc_timestamp
173         (void *, int, char *, char *, unsigned long long,
174          struct record_header *, struct file_header *, unsigned int);
175 __tm_funct_t print_xml_timestamp
176         (void *, int, char *, char *, unsigned long long,
177          struct record_header *, struct file_header *, unsigned int);
178 __tm_funct_t print_json_timestamp
179         (void *, int, char *, char *, unsigned long long,
180          struct record_header *, struct file_header *, unsigned int);
181 __tm_funct_t print_raw_timestamp
182         (void *, int, char *, char *, unsigned long long,
183          struct record_header *, struct file_header *, unsigned int);
184 __tm_funct_t print_pcp_timestamp
185         (void *, int, char *, char *, unsigned long long,
186          struct record_header *, struct file_header *, unsigned int);
187
188 /*
189  * Prototypes used to display the report header
190  */
191 __printf_funct_t print_xml_header
192         (void *, int, char *, struct file_magic *, struct file_header *,
193          struct activity * [], unsigned int [], struct file_activity *);
194 __printf_funct_t print_json_header
195         (void *, int, char *, struct file_magic *, struct file_header *,
196          struct activity * [], unsigned int [], struct file_activity *);
197 __printf_funct_t print_hdr_header
198         (void *, int, char *, struct file_magic *, struct file_header *,
199          struct activity * [], unsigned int [], struct file_activity *);
200 __printf_funct_t print_svg_header
201         (void *, int, char *, struct file_magic *, struct file_header *,
202          struct activity * [], unsigned int [], struct file_activity *);
203 __printf_funct_t print_pcp_header
204         (void *, int, char *, struct file_magic *, struct file_header *,
205          struct activity * [], unsigned int [], struct file_activity *);
206
207 /*
208  * Main display functions
209  */
210 void logic1_display_loop
211         (int, char *, struct file_activity *, struct file_magic *,
212          struct tm *, struct tm *, void *);
213 void logic2_display_loop
214         (int, char *, struct file_activity *, struct file_magic *,
215          struct tm *, struct tm *, void *);
216 void svg_display_loop
217         (int, char *, struct file_activity *, struct file_magic *,
218          struct tm *, struct tm *, void *);
219
220 #endif  /* _SADF_H */