tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
config_init_component(), ioconf, and pseudo-devices
I'm working on turning swwdog (for now, eventually others) into a kernel
module, and I'm running into some difficulty with the autoconfig stuff.
I've got an IOCONF=swwdog.ioconf in my Makefile, and swwdog.ioconf
contains
ioconf swwdog
include "conf/files"
include "dev/sysmon/files.sysmon"
pseudo-device swwdog
In files.sysmon there is
defpseudodev swwdog: sysmon_wdog
file dev/sysmon/swwdog.c swwdog
In the swwdog_modcmd()'s init code, I am calling
config_init_component(cfdriver_ioconf_swwdog,
cfattach_ioconf_swwdog, cfdata_ioconf_swwdog);
where the arguments are all references to data structures defined in the
generated ioconf.[ch] files.
The problem occurs a bit later on when I create a local struct cfattach
cf.cf_name = "swwdog";
cf.cf_atname = "swwdog";
cf.cf_unit = 0;
cf.cf_fstate = FSTATE_STAR;
cf.cf_pspec = NULL;
cf.cf_loc = NULL;
cf.cf_flags = 0;
and attempt to call config_attach_pseudo(). config_attach_pseudo()
calls config_devalloc() to allocate memory (primarily for the softc),
and config_devalloc() in turn locates the swwdog's struct cfdriver
(which was "frobbed" into the master device list by
config_init_component()).
Next, config_devalloc() tries to find a struct cfattach in the cfdriver
list of attachments. Unfortunately, the generated ioconf.c file has
empty lists of both struct cfdata and struct cfattach, so no struct
cfattach ever got "frobbed" by config_init_component, and thus the call
to cf_attach_lookup_cd() fails.
...
static struct cfdata cfdata_ioconf_swwdog[] = {
/* driver attachment unit state loc flags pspec */
{ NULL, NULL, 0, 0, NULL, 0, NULL }
};
static const struct cfattachinit cfattach_ioconf_swwdog[] = {
{ NULL, NULL }
};
...
Am I missing something obvious here? Or is config not generating valid
ioconf.[ch] files for a defpseudodev device?
-------------------------------------------------------------------------
| Paul Goyette | PGP Key fingerprint: | E-mail addresses: |
| (Retired) | FA29 0E3B 35AF E8AE 6651 | paul at whooppee.com |
| Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd.org |
-------------------------------------------------------------------------
Home |
Main Index |
Thread Index |
Old Index