blob: e86df7971cfb843cdfd39adafda325e785b19b36 [file] [log] [blame]
Dmitry V. Levin0e097042016-04-26 00:08:16 +00001#ifndef STRACE_XLAT_H
Eugene Syromyatnikov18907922016-08-07 06:44:19 +03002#define STRACE_XLAT_H
Dmitry V. Levin0e097042016-04-26 00:08:16 +00003
Jeff Mahoney9019cf42016-04-28 11:26:59 -04004# include <stdint.h>
5
Elliott Hughes03a418e2018-06-15 13:11:40 -07006enum xlat_type {
7 XT_NORMAL,
8 XT_SORTED,
9 XT_INDEXED,
10};
11
12enum xlat_style {
13 /**
14 * Special value that is used for passing to *print{xval,flags}*_ex
15 * routines that indicates that no overriding of user-supplied xlat
16 * verbosity/formatting configuration is intended.
17 */
18 XLAT_STYLE_DEFAULT = 0,
19
20 /** Print xlat value as is without xlat processing */
21 XLAT_STYLE_RAW = 1 << 0,
22 /**
23 * Historic strace style, process xlat and print the result (xlat
24 * constant name/combination of flags), raw number only if nothing is
25 * found.
26 */
27 XLAT_STYLE_ABBREV = 1 << 1,
28 /** Always print both raw number and xlat processing result. */
29 XLAT_STYLE_VERBOSE = XLAT_STYLE_RAW | XLAT_STYLE_ABBREV,
30
31#define XLAT_STYLE_FORMAT_SHIFT 2
32#define XLAT_STYLE_VERBOSITY_MASK ((1 << XLAT_STYLE_FORMAT_SHIFT) - 1)
33
34 XLAT_STYLE_FMT_X = 0 << XLAT_STYLE_FORMAT_SHIFT,
35 XLAT_STYLE_FMT_U = 1 << XLAT_STYLE_FORMAT_SHIFT,
36 XLAT_STYLE_FMT_D = 2 << XLAT_STYLE_FORMAT_SHIFT,
37
38#define XLAT_STYLE_FORMAT_MASK (3 << XLAT_STYLE_FORMAT_SHIFT)
39
40#define XLAT_STYLE_SPEC_BITS (XLAT_STYLE_FORMAT_SHIFT + 2)
41#define XLAT_STYLE_MASK ((1 << XLAT_STYLE_SPEC_BITS) - 1)
42};
43
Dmitry V. Levin0e097042016-04-26 00:08:16 +000044struct xlat {
Jeff Mahoney9019cf42016-04-28 11:26:59 -040045 uint64_t val;
Dmitry V. Levin0e097042016-04-26 00:08:16 +000046 const char *str;
47};
48
Dmitry V. Levina9f956d2016-04-28 23:52:28 +000049# define XLAT(val) { (unsigned)(val), #val }
Dmitry V. Levin3f25b652016-04-28 23:58:34 +000050# define XLAT_PAIR(val, str) { (unsigned)(val), str }
Dmitry V. Levin0f498262016-04-29 00:03:48 +000051# define XLAT_TYPE(type, val) { (type)(val), #val }
Dmitry V. Levin070fec22016-04-29 20:04:38 +000052# define XLAT_TYPE_PAIR(type, val, str) { (type)(val), str }
Dmitry V. Levina9f956d2016-04-28 23:52:28 +000053# define XLAT_END { 0, 0 }
Dmitry V. Levin0e097042016-04-26 00:08:16 +000054
Dmitry V. Levin42ceb0f2016-08-07 22:02:46 +000055#endif /* !STRACE_XLAT_H */