From: Eugene Syromyatnikov Date: Mon, 2 Apr 2018 19:09:15 +0000 (+0200) Subject: Switch to use of value-indexed xlats for evdev constants X-Git-Tag: v4.23~260 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=86bfc08a926ffc56a1309944c007ccfb1e4dd6fd;p=strace Switch to use of value-indexed xlats for evdev constants * xlat/evdev_abs.in: Add "#value_indexed" directive. * xlat/evdev_autorepeat.in: Likewise. * xlat/evdev_ff_status.in: Likewise. * xlat/evdev_keycode.in: Likewise. * xlat/evdev_leds.in: Likewise. * xlat/evdev_misc.in: Likewise. * xlat/evdev_prop.in: Likewise. * xlat/evdev_relative_axes.in: Likewise. * xlat/evdev_snd.in: Likewise. * xlat/evdev_switch.in: Likewise. * xlat/evdev_sync.in: Likewise. * xlat/evdev_ff_types.in: Add a comment about sorting. * evdev.c (keycode_ioctl, keycode_V2_ioctl): Use printxval_index instead of printxval. (bit_ioctl): Use XT_SORTED for evdev_ff_types, use XT_INDEXED for other xlats. (evdev_read_ioctl): Use XT_INDEXED for all xlats. * ioctl.c (evdev_decode_number): Use printxval_indexn instead of printxval for evdev_abs. --- diff --git a/evdev.c b/evdev.c index bafadbd0..00e8f170 100644 --- a/evdev.c +++ b/evdev.c @@ -98,7 +98,7 @@ keycode_ioctl(struct tcb *const tcp, const kernel_ulong_t arg) if (!umove_or_printaddr(tcp, arg, &keycode)) { tprintf("[%u, ", keycode[0]); - printxval(evdev_keycode, keycode[1], "KEY_???"); + printxval_index(evdev_keycode, keycode[1], "KEY_???"); tprints("]"); } @@ -125,7 +125,7 @@ keycode_V2_ioctl(struct tcb *const tcp, const kernel_ulong_t arg) unsigned int i; tprintf("index=%" PRIu16 ", keycode=", ike.index); - printxval(evdev_keycode, ike.keycode, "KEY_???"); + printxval_index(evdev_keycode, ike.keycode, "KEY_???"); tprints(", scancode=["); for (i = 0; i < ARRAY_SIZE(ike.scancode); i++) { if (i > 0) @@ -285,34 +285,34 @@ bit_ioctl(struct tcb *const tcp, const unsigned int ev_nr, switch (ev_nr) { case EV_SYN: return decode_bitset(tcp, arg, evdev_sync, - SYN_MAX, "SYN_???", XT_NORMAL); + SYN_MAX, "SYN_???", XT_INDEXED); case EV_KEY: return decode_bitset(tcp, arg, evdev_keycode, - KEY_MAX, "KEY_???", XT_NORMAL); + KEY_MAX, "KEY_???", XT_INDEXED); case EV_REL: return decode_bitset(tcp, arg, evdev_relative_axes, - REL_MAX, "REL_???", XT_NORMAL); + REL_MAX, "REL_???", XT_INDEXED); case EV_ABS: return decode_bitset(tcp, arg, evdev_abs, - ABS_MAX, "ABS_???", XT_NORMAL); + ABS_MAX, "ABS_???", XT_INDEXED); case EV_MSC: return decode_bitset(tcp, arg, evdev_misc, - MSC_MAX, "MSC_???", XT_NORMAL); + MSC_MAX, "MSC_???", XT_INDEXED); case EV_SW: return decode_bitset(tcp, arg, evdev_switch, - SW_MAX, "SW_???", XT_NORMAL); + SW_MAX, "SW_???", XT_INDEXED); case EV_LED: return decode_bitset(tcp, arg, evdev_leds, - LED_MAX, "LED_???", XT_NORMAL); + LED_MAX, "LED_???", XT_INDEXED); case EV_SND: return decode_bitset(tcp, arg, evdev_snd, - SND_MAX, "SND_???", XT_NORMAL); + SND_MAX, "SND_???", XT_INDEXED); case EV_REP: return decode_bitset(tcp, arg, evdev_autorepeat, - REP_MAX, "REP_???", XT_NORMAL); + REP_MAX, "REP_???", XT_INDEXED); case EV_FF: return decode_bitset(tcp, arg, evdev_ff_types, - FF_MAX, "FF_???", XT_NORMAL); + FF_MAX, "FF_???", XT_SORTED); case EV_PWR: tprints(", "); printnum_int(tcp, arg, "%d"); @@ -320,7 +320,7 @@ bit_ioctl(struct tcb *const tcp, const unsigned int ev_nr, case EV_FF_STATUS: return decode_bitset(tcp, arg, evdev_ff_status, FF_STATUS_MAX, "FF_STATUS_???", - XT_NORMAL); + XT_INDEXED); default: tprints(", "); printaddr(arg); @@ -375,22 +375,22 @@ evdev_read_ioctl(struct tcb *const tcp, const unsigned int code, case _IOC_NR(EVIOCGPROP(0)): return decode_bitset(tcp, arg, evdev_prop, INPUT_PROP_MAX, "PROP_???", - XT_NORMAL); + XT_INDEXED); # endif case _IOC_NR(EVIOCGSND(0)): return decode_bitset(tcp, arg, evdev_snd, - SND_MAX, "SND_???", XT_NORMAL); + SND_MAX, "SND_???", XT_INDEXED); # ifdef EVIOCGSW case _IOC_NR(EVIOCGSW(0)): return decode_bitset(tcp, arg, evdev_switch, - SW_MAX, "SW_???", XT_NORMAL); + SW_MAX, "SW_???", XT_INDEXED); # endif case _IOC_NR(EVIOCGKEY(0)): return decode_bitset(tcp, arg, evdev_keycode, - KEY_MAX, "KEY_???", XT_NORMAL); + KEY_MAX, "KEY_???", XT_INDEXED); case _IOC_NR(EVIOCGLED(0)): return decode_bitset(tcp, arg, evdev_leds, - LED_MAX, "LED_???", XT_NORMAL); + LED_MAX, "LED_???", XT_INDEXED); } /* multi-number fixed-length commands */ diff --git a/ioctl.c b/ioctl.c index 4cae802c..bf4f074b 100644 --- a/ioctl.c +++ b/ioctl.c @@ -87,7 +87,8 @@ evdev_decode_number(const unsigned int code) if (_IOC_DIR(code) == _IOC_WRITE) { if (nr >= 0xc0 && nr <= 0xc0 + 0x3f) { tprints("EVIOCSABS("); - printxval(evdev_abs, nr - 0xc0, "ABS_???"); + printxval_indexn(evdev_abs, evdev_abs_size, nr - 0xc0, + "ABS_???"); tprints(")"); return 1; } @@ -103,7 +104,8 @@ evdev_decode_number(const unsigned int code) return 1; } else if (nr >= 0x40 && nr <= 0x40 + 0x3f) { tprints("EVIOCGABS("); - printxval(evdev_abs, nr - 0x40, "ABS_???"); + printxval_indexn(evdev_abs, evdev_abs_size, nr - 0x40, + "ABS_???"); tprints(")"); return 1; } diff --git a/xlat/evdev_abs.in b/xlat/evdev_abs.in index dc80831f..d65b8463 100644 --- a/xlat/evdev_abs.in +++ b/xlat/evdev_abs.in @@ -1,3 +1,4 @@ +#value_indexed ABS_X 0x00 ABS_Y 0x01 ABS_Z 0x02 diff --git a/xlat/evdev_autorepeat.in b/xlat/evdev_autorepeat.in index fcdd4a6c..7ab7e2e7 100644 --- a/xlat/evdev_autorepeat.in +++ b/xlat/evdev_autorepeat.in @@ -1,2 +1,3 @@ +#value_indexed REP_DELAY 0x00 REP_PERIOD 0x01 diff --git a/xlat/evdev_ff_status.in b/xlat/evdev_ff_status.in index 914d2f49..1f2815f7 100644 --- a/xlat/evdev_ff_status.in +++ b/xlat/evdev_ff_status.in @@ -1,2 +1,3 @@ +#value_indexed FF_STATUS_STOPPED 0x00 FF_STATUS_PLAYING 0x01 diff --git a/xlat/evdev_ff_types.in b/xlat/evdev_ff_types.in index d88a9b2e..72b87c53 100644 --- a/xlat/evdev_ff_types.in +++ b/xlat/evdev_ff_types.in @@ -1,3 +1,4 @@ +/* sort -k2,2 */ FF_RUMBLE 0x50 FF_PERIODIC 0x51 FF_CONSTANT 0x52 diff --git a/xlat/evdev_keycode.in b/xlat/evdev_keycode.in index c0811ba1..43989c9f 100644 --- a/xlat/evdev_keycode.in +++ b/xlat/evdev_keycode.in @@ -1,3 +1,4 @@ +#value_indexed /* awk '{if (NF>1) {n=strtonum($2)}; printf("%d %s\n", n, $0)}' |sort -s -k1,1n |sed 's/^[0-9]* //' */ KEY_RESERVED 0 KEY_ESC 1 diff --git a/xlat/evdev_leds.in b/xlat/evdev_leds.in index 7fb9128b..6178bbd8 100644 --- a/xlat/evdev_leds.in +++ b/xlat/evdev_leds.in @@ -1,3 +1,4 @@ +#value_indexed LED_NUML 0x00 LED_CAPSL 0x01 LED_SCROLLL 0x02 diff --git a/xlat/evdev_misc.in b/xlat/evdev_misc.in index b9f72139..0528092a 100644 --- a/xlat/evdev_misc.in +++ b/xlat/evdev_misc.in @@ -1,3 +1,4 @@ +#value_indexed MSC_SERIAL 0x00 MSC_PULSELED 0x01 MSC_GESTURE 0x02 diff --git a/xlat/evdev_prop.in b/xlat/evdev_prop.in index 40ce923a..5e7d025c 100644 --- a/xlat/evdev_prop.in +++ b/xlat/evdev_prop.in @@ -1,3 +1,4 @@ +#value_indexed INPUT_PROP_POINTER 0 INPUT_PROP_DIRECT 1 INPUT_PROP_BUTTONPAD 2 diff --git a/xlat/evdev_relative_axes.in b/xlat/evdev_relative_axes.in index 02d189d6..4684a524 100644 --- a/xlat/evdev_relative_axes.in +++ b/xlat/evdev_relative_axes.in @@ -1,3 +1,4 @@ +#value_indexed REL_X 0x00 REL_Y 0x01 REL_Z 0x02 diff --git a/xlat/evdev_snd.in b/xlat/evdev_snd.in index 21e8b70f..22e51cc1 100644 --- a/xlat/evdev_snd.in +++ b/xlat/evdev_snd.in @@ -1,3 +1,4 @@ +#value_indexed SND_CLICK 0x00 SND_BELL 0x01 SND_TONE 0x02 diff --git a/xlat/evdev_switch.in b/xlat/evdev_switch.in index e4eab859..8f808725 100644 --- a/xlat/evdev_switch.in +++ b/xlat/evdev_switch.in @@ -1,3 +1,4 @@ +#value_indexed SW_LID 0x00 SW_TABLET_MODE 0x01 SW_HEADPHONE_INSERT 0x02 diff --git a/xlat/evdev_sync.in b/xlat/evdev_sync.in index 0b8ee32f..ca9ea503 100644 --- a/xlat/evdev_sync.in +++ b/xlat/evdev_sync.in @@ -1,3 +1,4 @@ +#value_indexed SYN_REPORT 0 SYN_CONFIG 1 SYN_MT_REPORT 2