Dmitry V. Levin | 0e09704 | 2016-04-26 00:08:16 +0000 | [diff] [blame] | 1 | #ifndef STRACE_XLAT_H |
Eugene Syromyatnikov | 1890792 | 2016-08-07 06:44:19 +0300 | [diff] [blame] | 2 | #define STRACE_XLAT_H |
Dmitry V. Levin | 0e09704 | 2016-04-26 00:08:16 +0000 | [diff] [blame] | 3 | |
Jeff Mahoney | 9019cf4 | 2016-04-28 11:26:59 -0400 | [diff] [blame] | 4 | # include <stdint.h> |
| 5 | |
Elliott Hughes | 03a418e | 2018-06-15 13:11:40 -0700 | [diff] [blame] | 6 | enum xlat_type { |
| 7 | XT_NORMAL, |
| 8 | XT_SORTED, |
| 9 | XT_INDEXED, |
| 10 | }; |
| 11 | |
| 12 | enum 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. Levin | 0e09704 | 2016-04-26 00:08:16 +0000 | [diff] [blame] | 44 | struct xlat { |
Jeff Mahoney | 9019cf4 | 2016-04-28 11:26:59 -0400 | [diff] [blame] | 45 | uint64_t val; |
Dmitry V. Levin | 0e09704 | 2016-04-26 00:08:16 +0000 | [diff] [blame] | 46 | const char *str; |
| 47 | }; |
| 48 | |
Dmitry V. Levin | a9f956d | 2016-04-28 23:52:28 +0000 | [diff] [blame] | 49 | # define XLAT(val) { (unsigned)(val), #val } |
Dmitry V. Levin | 3f25b65 | 2016-04-28 23:58:34 +0000 | [diff] [blame] | 50 | # define XLAT_PAIR(val, str) { (unsigned)(val), str } |
Dmitry V. Levin | 0f49826 | 2016-04-29 00:03:48 +0000 | [diff] [blame] | 51 | # define XLAT_TYPE(type, val) { (type)(val), #val } |
Dmitry V. Levin | 070fec2 | 2016-04-29 20:04:38 +0000 | [diff] [blame] | 52 | # define XLAT_TYPE_PAIR(type, val, str) { (type)(val), str } |
Dmitry V. Levin | a9f956d | 2016-04-28 23:52:28 +0000 | [diff] [blame] | 53 | # define XLAT_END { 0, 0 } |
Dmitry V. Levin | 0e09704 | 2016-04-26 00:08:16 +0000 | [diff] [blame] | 54 | |
Dmitry V. Levin | 42ceb0f | 2016-08-07 22:02:46 +0000 | [diff] [blame] | 55 | #endif /* !STRACE_XLAT_H */ |