Date: Mon, 25 Aug 1997 17:44:48 -0700 (PDT) From: Pat Bozeman <peb@george.lbl.gov> To: freebsd-hackers@FreeBSD.ORG Subject: lkm.h MOD_DEV & DISPATCH Message-ID: <Pine.SOL.3.95.970825173548.22258E-100000@george.lbl.gov> In-Reply-To: <199708252325.AAA14034@awfulhak.org>
index | next in thread | previous in thread | raw e-mail
Why does MOD_DEV concatinate the name of the device with _module when
none of the other module types do? This leads to a conflict with DISPATCH
which does not expect the name to be concatinated to _module.
Here is the relevant code. The static struct lkm_* is the part I am
talking about, notice the differnce in the naming of the lkm_* structure.
#define MOD_DEV(name,devtype,devslot,devp) \
MOD_DECL(name); \
static struct lkm_dev name ## _module = { \
LM_DEV, \
LKM_VERSION, \
#name ## "_mod", \
devslot, \
devtype, \
(void *)devp \
}
#define MOD_EXEC(name,execslot,execsw) \
MOD_DECL(name); \
static struct lkm_exec _module = { \
LM_EXEC, \
LKM_VERSION, \
#name ## "_mod", \
execslot, \
execsw \
}
MOD_DEV and DISPATCH do not get along because dispatch just uses
_module on fisrt line of the 'case LKM_E_LOAD' block.
#define DISPATCH(lkmtp,cmd,ver,load,unload,stat) \
if (ver != LKM_VERSION) \
return EINVAL; /* version mismatch */ \
switch (cmd) { \
int error; \
case LKM_E_LOAD: \
lkmtp->private.lkm_any = (struct lkm_any *)&_module; \
if (lkmexists(lkmtp)) /* !!! */ \
return EEXIST; \
if ((error = load(lkmtp, cmd))) \
return error; \
break;
(rest of macro cut)
Is there a reason that this is like this?
--
Patrick Bozeman
PBozeman@lbl.gov
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.SOL.3.95.970825173548.22258E-100000>
