> On May 17, 2015, at 3:40 PM, Paul Goyette <[email protected]> wrote:
> 
> My crusade for modularity has arrived at the pcppi(4) driver, and I've 
> discovered that there are a number of places in the code where a #if is used 
> to determine whether or not some _other_ driver is available to provide 
> certain routines.  For pcppi(4), these dependencies are for the attimer(4) 
> and pckbd(4) drivers.  (While I haven't yet gone searching, I'd be willing to 
> wager that there are other similar examples in other drivers.)
> 
> These #if constructs make it very difficult to modularize these drivers.
> 
> I'd like to propose the following new kernel mechanism that will allow us to 
> remove these #if dependencies.
> 
> 1. Extend the struct cfattach to have an additional member, and create
>  a new CFATTACH_DECL4_NEW macro to initialize it (and updates to the
>  existing CFATTACH_* family to default the value to NULL).
> 
>       int     (*ca_callback)(device_t, int, void *);
> 
>  (This will require a kernel version bump.)

Ewww.  Gross.

It might be better to use weak symbols and then fix them up later.

Reply via email to