1*cf84ac9aSAndroid Build Coastguard Worker #ifndef STRACE_XLAT_H 2*cf84ac9aSAndroid Build Coastguard Worker #define STRACE_XLAT_H 3*cf84ac9aSAndroid Build Coastguard Worker 4*cf84ac9aSAndroid Build Coastguard Worker # include <stdint.h> 5*cf84ac9aSAndroid Build Coastguard Worker 6*cf84ac9aSAndroid Build Coastguard Worker enum xlat_type { 7*cf84ac9aSAndroid Build Coastguard Worker XT_NORMAL, 8*cf84ac9aSAndroid Build Coastguard Worker XT_SORTED, 9*cf84ac9aSAndroid Build Coastguard Worker XT_INDEXED, 10*cf84ac9aSAndroid Build Coastguard Worker }; 11*cf84ac9aSAndroid Build Coastguard Worker 12*cf84ac9aSAndroid Build Coastguard Worker enum xlat_style { 13*cf84ac9aSAndroid Build Coastguard Worker /** 14*cf84ac9aSAndroid Build Coastguard Worker * Special value that is used for passing to *print{xval,flags}*_ex 15*cf84ac9aSAndroid Build Coastguard Worker * routines that indicates that no overriding of user-supplied xlat 16*cf84ac9aSAndroid Build Coastguard Worker * verbosity/formatting configuration is intended. 17*cf84ac9aSAndroid Build Coastguard Worker */ 18*cf84ac9aSAndroid Build Coastguard Worker XLAT_STYLE_DEFAULT = 0, 19*cf84ac9aSAndroid Build Coastguard Worker 20*cf84ac9aSAndroid Build Coastguard Worker /** Print xlat value as is without xlat processing */ 21*cf84ac9aSAndroid Build Coastguard Worker XLAT_STYLE_RAW = 1 << 0, 22*cf84ac9aSAndroid Build Coastguard Worker /** 23*cf84ac9aSAndroid Build Coastguard Worker * Historic strace style, process xlat and print the result (xlat 24*cf84ac9aSAndroid Build Coastguard Worker * constant name/combination of flags), raw number only if nothing is 25*cf84ac9aSAndroid Build Coastguard Worker * found. 26*cf84ac9aSAndroid Build Coastguard Worker */ 27*cf84ac9aSAndroid Build Coastguard Worker XLAT_STYLE_ABBREV = 1 << 1, 28*cf84ac9aSAndroid Build Coastguard Worker /** Always print both raw number and xlat processing result. */ 29*cf84ac9aSAndroid Build Coastguard Worker XLAT_STYLE_VERBOSE = XLAT_STYLE_RAW | XLAT_STYLE_ABBREV, 30*cf84ac9aSAndroid Build Coastguard Worker 31*cf84ac9aSAndroid Build Coastguard Worker #define XLAT_STYLE_FORMAT_SHIFT 2 32*cf84ac9aSAndroid Build Coastguard Worker #define XLAT_STYLE_VERBOSITY_MASK ((1 << XLAT_STYLE_FORMAT_SHIFT) - 1) 33*cf84ac9aSAndroid Build Coastguard Worker 34*cf84ac9aSAndroid Build Coastguard Worker XLAT_STYLE_FMT_X = 0 << XLAT_STYLE_FORMAT_SHIFT, 35*cf84ac9aSAndroid Build Coastguard Worker XLAT_STYLE_FMT_U = 1 << XLAT_STYLE_FORMAT_SHIFT, 36*cf84ac9aSAndroid Build Coastguard Worker XLAT_STYLE_FMT_D = 2 << XLAT_STYLE_FORMAT_SHIFT, 37*cf84ac9aSAndroid Build Coastguard Worker 38*cf84ac9aSAndroid Build Coastguard Worker #define XLAT_STYLE_FORMAT_MASK (3 << XLAT_STYLE_FORMAT_SHIFT) 39*cf84ac9aSAndroid Build Coastguard Worker 40*cf84ac9aSAndroid Build Coastguard Worker #define XLAT_STYLE_SPEC_BITS (XLAT_STYLE_FORMAT_SHIFT + 2) 41*cf84ac9aSAndroid Build Coastguard Worker #define XLAT_STYLE_MASK ((1 << XLAT_STYLE_SPEC_BITS) - 1) 42*cf84ac9aSAndroid Build Coastguard Worker }; 43*cf84ac9aSAndroid Build Coastguard Worker 44*cf84ac9aSAndroid Build Coastguard Worker struct xlat { 45*cf84ac9aSAndroid Build Coastguard Worker uint64_t val; 46*cf84ac9aSAndroid Build Coastguard Worker const char *str; 47*cf84ac9aSAndroid Build Coastguard Worker }; 48*cf84ac9aSAndroid Build Coastguard Worker 49*cf84ac9aSAndroid Build Coastguard Worker # define XLAT(val) { (unsigned)(val), #val } 50*cf84ac9aSAndroid Build Coastguard Worker # define XLAT_PAIR(val, str) { (unsigned)(val), str } 51*cf84ac9aSAndroid Build Coastguard Worker # define XLAT_TYPE(type, val) { (type)(val), #val } 52*cf84ac9aSAndroid Build Coastguard Worker # define XLAT_TYPE_PAIR(type, val, str) { (type)(val), str } 53*cf84ac9aSAndroid Build Coastguard Worker # define XLAT_END { 0, 0 } 54*cf84ac9aSAndroid Build Coastguard Worker 55*cf84ac9aSAndroid Build Coastguard Worker #endif /* !STRACE_XLAT_H */ 56