msleep redefined error in hselasky/usb4bsd/ svn patch against -current

Hans Petter Selasky hselasky at c2i.net
Wed Apr 4 18:37:55 UTC 2007


On Wednesday 04 April 2007 19:41, Mark Atkinson wrote:
> I get the following error when trying to compile the proposed usb4bsd stack
> against current.
>
> In file included from /usr/src/sys/dev/usb/ehci.c:67:
> /usr/src/sys/dev/usb/usb_port.h:293:1: "msleep" redefined
> In file included from /usr/src/sys/dev/usb/ehci.c:58:
> /usr/src/sys/sys/systm.h:313:1: this is the location of the previous
> definition
> *** Error code 1
>
> Sure enough, it is intentionally redefined:
>
> sys/dev/usb/usb_port.h:290-293
>
> /* preliminary fix for a bug in msleep on FreeBSD,
>  * which cannot sleep with Giant:
>  */
> #define msleep(i,m,p,w,t) msleep(i,(((m) == &Giant) ? NULL : (m)),p,w,t)

When I integrate my driver against FreeBSD-7 current, I will add some "#if" 
statements for those issues. Until further:

In /sys/dev/usb/usb_port.h, use the following:

/* preliminary fix for a bug in msleep on FreeBSD,
 * which cannot sleep with Giant:
 */
#undef msleep
#define msleep(i,m,p,w,t) _sleep(i,(((m) == &Giant) ? \
  NULL : &(m)->mtx_object),p,w,t)

After this patch you have to insert a NULL argument, to all bus_setup_intr() 
functions you find in the files /sys/dev/usb/*pci.c like shown below ?

        error = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_TTY,
-                              si_intr, sc, &ih);
+                              NULL, si_intr, sc, &ih);

Hope that is not too much patching.

--HPS


More information about the freebsd-usb mailing list