Managing and Developing Dynamically Loadable Kernel Modules

Managing and Developing Dynamically Loadable Kernel Modules
Developing Dynamically Loadable Kernel Modules
Chapter 12562
/* module type specific data */
static struct mod_type_data dlclass_drv_link = {
"dlclass - Loadable/Unloadable Test Module",
(void *)NULL
};
static struct modlink dlclass_mod_link[] = {
{ &gio_mod_ops, (void *)&dlclass_drv_link }, /* WSIO */
{ NULL, (void *)NULL }
};
struct modwrapper dlclass_wrapper = {
MODREV,
dlclass_load,
dlclass_unload,
(void (*)())NULL,
(void *)&dlclass_conf_data,
dlclass_mod_link
};
/*
* Driver Header
*/
static drv_info_t dlclass_drv_info = {
"dlclass", /* type */
"pseudo", /* class */
DRV_CHAR|DRV_PSEUDO|DRV_SAVE_CONF|DRV_MP_SAFE,/* flags */
-1, /* b_major */
-1, /* c_major */
NULL, /* cdio */
NULL, /* gio_private */
NULL, /* cdio_private */
};
static drv_ops_t dlclass_drv_ops = {
dlclass_open, /* d_open */
dlclass_close, /* d_close */
NULL, /* d_strategy */
NULL, /* d_dump */
NULL, /* d_psize */
NULL, /* d_mount */
dlclass_read, /* d_read */
dlclass_write, /* d_write */
NULL, /* d_ioctl */
NULL, /* d_select */
NULL, /* d_option1 */