Re: parameters for tsleep(9)

From: Roman Kurakin (rik_at_cronyx.ru)
Date: 12/26/04

  • Next message: Daniel O'Connor: "Re: Unable to get APM working -- help! [no acpi_cmbat entries]"
    Date: Mon, 27 Dec 2004 00:13:34 +0300
    To: Norbert Koch <nkoch@gmx.com>
    
    

    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"
    >
    >

    _______________________________________________
    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"


  • Next message: Daniel O'Connor: "Re: Unable to get APM working -- help! [no acpi_cmbat entries]"

    Relevant Pages

    • parameters for tsleep(9)
      ... I am just writing a device driver for the i82527 chip. ... the first parameter was set to NULL. ... Doing this I found, that tsleep immediately ...
      (freebsd-hackers)
    • Re: setevent problem
      ... you'd pass TRUE as the first parameter in the call to ... > seteventis in the driver only. ... if am passing the address of seteventand waiting for that event ... > in different thread and then seeting this event in driver in ISR. ...
      (microsoft.public.windowsce.platbuilder)