header file cissvar.h has this definition:
#define CISSQ_REQUEST_QUEUE(name, index) \
static __inline void \
ciss_initq_ ## name (struct ciss_softc *sc) \
{ \
STAILQ_INIT(&sc->ciss_ ## name); \
CISSQ_INIT(sc, index); \
} \
(...)
And actual usage in ciss.c looks like this:
ciss_initq_free(sc);
ciss_initq_notify(sc);
It would be great if someone can explain how does this work.
So,
- name refers to either "free" or "notify"
- where does "index" come from?
- how does compiler do the magic binding between .h and .c here?