(no subject)

Norbert Koch NKoch at demig.de
Thu Aug 4 07:51:57 GMT 2005


> #define DEVICE2SOFTC(device) ((struct dev_softc
> *)device_get_softc(device))
>
> static void dev_intr(void *arg);
>
> struct dev_softc {
>   ...
>   int rid_irq;
>   struct resource* res_irq;
>   void	*intr_cookie;
>   ...
> };
>
> static int
> dev_attach(device_t device)
> {
>   ...
>
>   dev_sc->rid_irq = 0;
>   dev_sc->res_irq = bus_alloc_resource_any(device, SYS_RES_IRQ,
>                                  &(dev_sc->rid_irq),
> RF_SHAREABLE|RF_ACTIVE);
>   if (dev_sc->res_irq == NULL)
>   {
>     uprintf("!!! Could not map interrupt !!!\n");
>     goto fail;
>   }
>
>   if (bus_setup_intr(device, dev_sc->res_irq, INTR_TYPE_TTY,
>                                  dev_intr, dev_sc, &dev_sc->intr_cookie))
>   {
>     uprintf("!!! Could not setup irq !!!\n");
>     goto fail;
>   }
>
>   ...
>
> fail:
>   return ENXIO;
> }
>
> static int
> dev_detach(device_t device)
> {
>   struct dev_softc *dev_sc = DEVICE2SOFTC(device);
>
>   destroy_dev(dev_sc->device);
>
>   if (bus_teardown_intr(device, dev_sc->res_irq,
> dev_sc->intr_cookie) != 0);

!!!! Do you see that semicolon? !!!!


Norbert



>     printf("bus_teardown_intr ERROR !!!\n");
>
>   bus_release_resource(device, SYS_RES_IRQ, dev_sc->rid_irq,
>
> dev_sc->res_irq);
> 	...
>
>   return 0;
> }
>
> static void
> dev_intr(void *arg)
> {
>   struct dev_softc *dev_sc = (struct dev_softc *)arg;
>
>   ...
> }
>
> When the driver is loaded the following message is shown:
>
> dev0 port 0x9800-0x980f,0x9400-0x947f irq 16 at device 10.0 on pci1
>
> i.e., as I understand, resourses are allocated normally.
>
> But when the driver is being unloaded the following message appear:
>
> bus_teardown_intr ERROR !!!
>
> What have I done wrong? Hint me please how to use bus_teardown_intr()
> function correctly?
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>



More information about the freebsd-hackers mailing list