qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/2] ide-test: fix timeouts


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH 1/2] ide-test: fix timeouts
Date: Tue, 24 Nov 2015 16:40:18 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

Am 20.11.2015 um 23:53 hat John Snow geschrieben:
> Use explicit timeouts instead of trying to fudge
> it by counting nsleep calls.
> 
> Signed-off-by: John Snow <address@hidden>

Isn't wrapping lines at 50 characters a bit extreme?

I'm wondering why this is a fix. If anything, I would expect the new
version to be less precise because its resolution is much coarser
(1 s vs. 400 ns). Should still be good enough, so both the new and the
old code look okay to me, but I'd appreciate a commit message that tells
the motivation for this change.

Kevin

>  tests/ide-test.c | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/ide-test.c b/tests/ide-test.c
> index fc1ce52..d37dc5e 100644
> --- a/tests/ide-test.c
> +++ b/tests/ide-test.c
> @@ -642,15 +642,20 @@ static void nsleep(int64_t nsecs)
>  
>  static uint8_t ide_wait_clear(uint8_t flag)
>  {
> -    int i;
>      uint8_t data;
> +    time_t st, now;
>  
>      /* Wait with a 5 second timeout */
> -    for (i = 0; i <= 12500000; i++) {
> +    time(&st);
> +    while (true) {
>          data = inb(IDE_BASE + reg_status);
>          if (!(data & flag)) {
>              return data;
>          }
> +        time(&now);
> +        if (difftime(now, st) > 5.0) {
> +            break;
> +        }
>          nsleep(400);
>      }
>      g_assert_not_reached();
> @@ -658,14 +663,19 @@ static uint8_t ide_wait_clear(uint8_t flag)
>  
>  static void ide_wait_intr(int irq)
>  {
> -    int i;
> +    time_t st, now;
>      bool intr;
>  
> -    for (i = 0; i <= 12500000; i++) {
> +    time(&st);
> +    while (true) {
>          intr = get_irq(irq);
>          if (intr) {
>              return;
>          }
> +        time(&now);
> +        if (difftime(now, st) > 5.0) {
> +            break;
> +        }
>          nsleep(400);
>      }
>  
> -- 
> 2.4.3
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]