On Mon, Apr 05, 2010 at 09:02:53PM -0500, David Young wrote: > On Fri, Apr 02, 2010 at 07:42:43PM +0000, Andrew Doran wrote: > > On Fri, Apr 02, 2010 at 12:51:26PM -0500, David Young wrote: > > > > > I would like to add some function prototypes to <sys/bus.h> for all > > > architectures to share. Today, <sys/bus.h> is little more than this: > > > > > > #include <machine/bus.h> > > > > > > I would like to add the MI function prototypes underneath the > > > #include: > > > > > > #include <machine/bus.h> > > > > > > /* MI function prototypes */ > > > bus_space_tag_t bus_space_tag_create(bus_space_tag_t, /* TBD */); > > > void bus_space_tag_destroy(bus_space_tag_t); > > > > > > According to the manual page, drivers should #include <machine/bus.h> > > > for bus_space(9) definitions. Many #include <sys/bus.h>, instead. ISTM > > > that the doco should be corrected to say <sys/bus.h>. > > > > sys/bus.h is correct. The intent behind having a sys/bus.h was to > > eventually eliminate the pasteware so please go for it. Did you > > miss bus_proto.h? > > What if I re-work the bus_space(9) header files along these lines: > > 1 Each architecture provides <machine/bus_defs.h> with > the typedefs (bus_space_tag_t, bus_space_handle_t, et cetera) > > 2 Each architecture provides <machine/bus_funcs.h> with > any and all macro and/or inline implementations of > > 3 <machine/bus.h> goes away, because its content is splits between > bus_defs.h and bus_funcs.h. > > 4 sys/bus.h turns to this: > > #include <machine/bus_defs.h> > #include <sys/bus_proto.h> > #include <machine/bus_funcs.h> > > /* MI function declarations */ > > Now, is there any reliable way to declare routines that may or may not > be macros or "static inline"?
Do you see a reason not to include contents of bus_proto.h in bus.h? Most of the bus_space functions have no business being inline/macro. I can see a potential case for the simpletons like bus_space_write_4 on certain architectures but it's a flimsy one.. Thanks.