Managing and Developing Dynamically Loadable Kernel Modules
Managing and Developing Dynamically Loadable Kernel Modules
Developing Dynamically Loadable Kernel Modules
Chapter 12 565
extern int (*dev_init)(void);
/* Link my init function into chain */
dlclass_saved_init = dev_init;
dev_init = (int (*)()) &dlclass_linked_init;
/* Register driver with WSIO */
return ( wsio_install_driver(&dlclass_wsio_info) );
}
/*
* Device initialization Link
* Called only for statically linked drivers to link init
* routine into list.
*/
static void
dlclass_linked_init (void)
{
/* Perform driver-specific initialization */
(void) dlclass_init ();
/* Call next init function in chain */
(void) (*dlclass_saved_init)();
}
/*
* Device initialization
* This is common code for both statically linked and
* dynamically loaded modules.
*/
static int
dlclass_init (void)
{
/* This driver has no initialization code. But if it did,
* it would go here!
*/
return 0; /* return value is ignored. */
}
/*
* OPEN
*/
static int
dlclass_open(dev_t dev, int flag, intptr_t dummy, int mode)
{