msleep redefined error in hselasky/usb4bsd/ svn patch against
-current
Mark Atkinson
atkin901 at yahoo.com
Thu Apr 5 14:52:57 UTC 2007
Hans Petter Selasky wrote:
> 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
Not enough patching.. :-) Even with these changes, it still generates
warnings on this macro. Since kernel compiles are with -Werr
and -Wnested-externs, this kills the compile when dereferencing msleep()
/usr/src/sys/dev/usb/ugen.c: In function `ugenwrite':
/usr/src/sys/dev/usb/ugen.c:1260: warning: nested extern declaration of
`msleep'
/usr/src/sys/dev/usb/ugen.c:562: warning: redundant redeclaration
of 'msleep'
/usr/src/sys/dev/usb/ugen.c:562: warning: previous implicit declaration
of 'msleep' was here
*** Error code 1
I tried to get by with
make CWARNFLAGS=-Wall buildkernel
although it took me a while to remember/find where that was. However getting
rid of the 'implicit' warning might require a bit more than changing some
compile flags.
--
Mark Atkinson
atkin901 at yahoo.com
(!wired)?(coffee++):(wired);
More information about the freebsd-usb
mailing list