Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Dec 2004 00:13:34 +0300
From:      Roman Kurakin <rik@cronyx.ru>
To:        Norbert Koch <nkoch@gmx.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: parameters for tsleep(9)
Message-ID:  <41CF297E.60505@cronyx.ru>
In-Reply-To: <000a01c4e9bf$fc7e56a0$fe78a8c0@k62300>
References:  <000a01c4e9bf$fc7e56a0$fe78a8c0@k62300>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

1) man tsleep

2) tsleep is just msleep with NULL mutex.

 if you check sys/kern/kern_synch.c you will
 see KASSERT (ident != NULL && ...

 ident is exactly the first parameter.

rik

Norbert Koch:

>Hello.
>
>I am just writing a device driver for the i82527 (can-bus) chip.
>For testing I need the driver to poll the chip instead of running
>in interrupt mode.
>
>My dev_t read function basically looks like this:
>
>for (;;)
>{
>  while (chip_has_data(...))
>  {
>    read_chip_data(...);
>    error = do_uiomove(...);
>    if (error || enough_read(...))
>    {
>      return error;
>    }
>  };
>  if (do_not_block_on_read(...))
>  {
>    return EWOULDBLOCK;
>  }
>  error = tsleep (XXX, PCATCH|PWAIT, "canrd", hz / 10);
>  if (error != EWOULDBLOCK)
>  {
>    return error;
>  }
>}
>
>XXX should be 'something' which could be used
>as parameter to wakeup(9), I read in tsleep(9).
>In the kernel source tree I found one
>place where tsleep _only_ sleeps: in sys/isa/ppc.c
>(which already seems to be in the attic [?] but
>still is in my computer's source tree).
>Here, the first parameter was set to NULL.
>Doing this I found, that tsleep immediately
>returns 0 (which means: wakueup was called)
>_without_ waiting. I even crashed or
>froze the kernel by calling tsleep (NULL, ...)
>for a random number of times. After changing
>this to the address of the read-function itself,
>all worked fine. No more crashes.
>
>Just for my understanding: Is this a bug?
>Does the first parameter have to point to
>something useful?
>Is it allowed to point it to a code position?
>Or should I use some kind of dummy data in
>the softc structure instead?
>
>What about the second parameter: Is PWAIT
>ok here or should I use PZERO or whatever?
>
>(And btw, why has ppc.c been removed?)
>
>Thank you.
>_______________________________________________
>freebsd-hackers@freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
>  
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41CF297E.60505>