=================================================================== RCS file: /cvs/funnyos/kern/kern_devconfig.c,v retrieving revision 1.6 retrieving revision 1.10 diff -u -r1.6 -r1.10 --- funnyos/kern/kern_devconfig.c 2007/11/01 13:19:27 1.6 +++ funnyos/kern/kern_devconfig.c 2007/12/16 12:54:44 1.10 @@ -1,10 +1,11 @@ /* - * $Id: kern_devconfig.c,v 1.6 2007/11/01 13:19:27 init Exp $ + * $Id: kern_devconfig.c,v 1.10 2007/12/16 12:54:44 nbrk Exp $ */ #include #include #include #include +#include #include #include @@ -103,7 +104,7 @@ { /* * Attach device childs, if any. - * XXX Allocate space for struct device and its xxx_dd + * Allocate space for struct device and its xxx_dd */ int retval; struct device *cdevp; @@ -137,7 +138,7 @@ /* allocate space for device's devdata */ cdevp->dv_devdata = kmalloc(drp->dr_ddsize); if (cdevp->dv_devdata == NULL) - panic("failed to allocate space for %s devdata\n"); + panic("failed to allocate space for %s devdata\n", aip->ai_cname); /* NOTREACHED */ /* increment number of driver's instances */ @@ -146,8 +147,6 @@ cdevp->dv_name = dip->di_dname; cdevp->dv_minor = dip->di_ninstances; - /* XXX what about locator (aip->ai_locator)? */ - printf("%s/%d at %s/%d loc 0x%x flags 0x%x: ", cdevp->dv_name, cdevp->dv_minor, pdevp->dv_name, pdevp->dv_minor, aip->ai_locator, aip->ai_flags); @@ -163,7 +162,7 @@ /* TODO kfree devdata and device */ - /* XXX next aip */ + /* next aip */ aip++; continue; @@ -177,7 +176,12 @@ /* activate device */ cdevp->dv_active = 1; - /* XXX think about recursion */ + /* if device has interrupt handler, establish it */ + if (drp->dr_interrupt != NULL) { + DPRINTF("devconfig_attach_childs: establishing interrupt %d for %s/%d\n", + aip->ai_intrno, cdevp->dv_name, cdevp->dv_minor); + intr_establish(aip->ai_intrno, cdevp, drp->dr_interrupt); + } /* recursive attach this child's children */ devconfig_attach_childs(cdevp);