Subject: Re: bus space macros for structures
To: Michael Richardson <>
From: Matthias Drochner <>
List: tech-kern
Date: 02/04/1997 10:27:17
In a couple of drivers I did the following:

struct amcc593xreg{
  u_int intcsr;
struct pcivic_softc{
  bus_chipset_tag_t sc_bc;
  bus_mem_handle_t amccbase;
#define ofs(what, elem) ((int)&(((what *)0)->elem))
#define readamcc(sc, reg) (bus_mem_read_4(sc->sc_bc, sc->amccbase, \
                           ofs(struct amcc593xreg, reg)))
intcsr = readamcc(sc, intcsr);

Is this good because it keeps the namespace clean, or
is it bad because it combines the complexity of
bus_space_xxx() with the non-portability of structs?
Other ideas how to accomplish the clean namespace
(and some consistency checks).

best regards
Matthias Drochner