public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Cyril Hrubis <chrubis@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] input/input06: Ignore auto-repeat config events
Date: Tue, 22 Aug 2017 10:53:56 +0200	[thread overview]
Message-ID: <20170822085356.GA22360@rei.lan> (raw)
In-Reply-To: <20170814233205.10933-1-sspatil@google.com>

Hi!
> diff --git a/testcases/kernel/input/input06.c b/testcases/kernel/input/input06.c
> index c4fc1ef57..8d04db8c6 100644
> --- a/testcases/kernel/input/input06.c
> +++ b/testcases/kernel/input/input06.c
> @@ -137,12 +137,26 @@ static int check_events(void)
>  
>  	check_size(rd);
>  
> +	/*
> +	 * Ignore auto-repeat configuration codes
> +	 * (EV_REP, {REP_PERIOD, REP_TYPE), value)
> +	 */
> +	while (iev[i].type == EV_REP) {
> +		i++;
> +		if (i == rd / sizeof(struct input_event)) {
> +			i = 0;
> +			rd = read(fd2, iev, sizeof(iev));
> +			check_size(rd);
> +		}
> +	}

I do not like much that we added a just another loop that fills in
the event array here. Maybe we should rewrite this as a recursive
descent parser now.

I.e.

	while (have_events()) {
		ev = next_event();

		switch (ev.type)
		case EV_REP:
			parse_rep(ev);
		break;
		case EV_KEY:
			parse_key(ev);
		break;
	}


The parse_rep() would check that we got correct sequence of
configuration events and the parse_key() would check that we have a
correct sequence of key press events, i.e. key down (1) a few key repeat
(2) and key up (0), which would be something as:

parse_key()
{
	if (!check_event(ev, EV_KEY, KEY_X, 1))
		tst_res(TFAIL, ...);

	ev = next_event();

	if (!check_event(ev, EV_KEY, KEY_X, 2))
		tst_res(TFAIL, ...);

	do {
		ev = next_event();
	} while (!check_event(ev, EV_KEY, KEY_X, 2);

	if (!chek_event(ev, EV_KEY, KEY_X, 0))
		tst_res(TFAIL, ...);
}

>  	if (rd > 0 && check_event(&iev[i], EV_KEY, KEY_X, 1))
>  		i++;
>  
>  	while (check_bound(i, rd) && !check_event(&iev[i], EV_KEY, KEY_X, 0)) {
>  
>  		if (iev[i].type != EV_SYN
> +			&& iev[i].type != EV_REP

What is this here for? Shouldn't all the configuration events be read at
this point?

>  			&& !check_event(&iev[i], EV_KEY, KEY_X, 2)) {
>  			tst_resm(TINFO,
>  				"Didn't receive EV_KEY KEY_X with value 2");
> -- 
> 2.14.0.434.g98096fd7a8-goog
> 

-- 
Cyril Hrubis
chrubis@suse.cz

  parent reply	other threads:[~2017-08-22  8:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-14 23:32 [LTP] [PATCH] input/input06: Ignore auto-repeat config events Sandeep Patil
2017-08-21 19:59 ` Sandeep Patil
2017-08-22  8:53 ` Cyril Hrubis [this message]
2017-08-22 17:00   ` Sandeep Patil

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170822085356.GA22360@rei.lan \
    --to=chrubis@suse.cz \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox