| #ifndef STRACE_XLAT_H |
| #define STRACE_XLAT_H |
| |
| # include <stdint.h> |
| |
| enum xlat_type { |
| XT_NORMAL, |
| XT_SORTED, |
| XT_INDEXED, |
| }; |
| |
| enum xlat_style { |
| /** |
| * Special value that is used for passing to *print{xval,flags}*_ex |
| * routines that indicates that no overriding of user-supplied xlat |
| * verbosity/formatting configuration is intended. |
| */ |
| XLAT_STYLE_DEFAULT = 0, |
| |
| /** Print xlat value as is without xlat processing */ |
| XLAT_STYLE_RAW = 1 << 0, |
| /** |
| * Historic strace style, process xlat and print the result (xlat |
| * constant name/combination of flags), raw number only if nothing is |
| * found. |
| */ |
| XLAT_STYLE_ABBREV = 1 << 1, |
| /** Always print both raw number and xlat processing result. */ |
| XLAT_STYLE_VERBOSE = XLAT_STYLE_RAW | XLAT_STYLE_ABBREV, |
| |
| #define XLAT_STYLE_FORMAT_SHIFT 2 |
| #define XLAT_STYLE_VERBOSITY_MASK ((1 << XLAT_STYLE_FORMAT_SHIFT) - 1) |
| |
| XLAT_STYLE_FMT_X = 0 << XLAT_STYLE_FORMAT_SHIFT, |
| XLAT_STYLE_FMT_U = 1 << XLAT_STYLE_FORMAT_SHIFT, |
| XLAT_STYLE_FMT_D = 2 << XLAT_STYLE_FORMAT_SHIFT, |
| |
| #define XLAT_STYLE_FORMAT_MASK (3 << XLAT_STYLE_FORMAT_SHIFT) |
| |
| #define XLAT_STYLE_SPEC_BITS (XLAT_STYLE_FORMAT_SHIFT + 2) |
| #define XLAT_STYLE_MASK ((1 << XLAT_STYLE_SPEC_BITS) - 1) |
| }; |
| |
| struct xlat { |
| uint64_t val; |
| const char *str; |
| }; |
| |
| # define XLAT(val) { (unsigned)(val), #val } |
| # define XLAT_PAIR(val, str) { (unsigned)(val), str } |
| # define XLAT_TYPE(type, val) { (type)(val), #val } |
| # define XLAT_TYPE_PAIR(type, val, str) { (type)(val), str } |
| # define XLAT_END { 0, 0 } |
| |
| #endif /* !STRACE_XLAT_H */ |