Managing and Developing Dynamically Loadable Kernel Modules

Managing and Developing Dynamically Loadable Kernel Modules
Developing Dynamically Loadable Kernel Modules
Chapter 12 561
Sample Component Files
dlclass.c
/*
* Loadable/Unloadable Test Driver - dlclass
*/
#include <sys/types.h>
#include <sys/param.h>
#include <sys/errno.h>
#include <sys/malloc.h>
#include <sys/mod_conf.h>
#include <sys/moddefs.h>
#include <sys/io.h>
#include <sys/wsio.h>
/* Entry Points */
int dlclass_install(void);
static int dlclass_load(void *drv_infop);
static int dlclass_unload(void *drv_infop);
static int dlclass_open(dev_t dev, int flags, intptr_t dummy,
int mode);
static int dlclass_close(dev_t dev, int flags, int mode);
static int dlclass_read(dev_t dev, struct uio *uio);
static int dlclass_write(dev_t dev, struct uio *uio);
/* Local functions */
static int dlclass_init (void);
static void dlclass_linked_init (void);
/* Tunable Parameters */
extern int dlclass_no_unload;
extern int dlclass_debug;
extern int dlclass_bufsz;
/* message for dlclass_read() */
static char dlclass_msg[] = "Reading from loadable WSIO driver
’dlclass’.\n";
/*
* Wrapper Table
*/
extern struct mod_operations gio_mod_ops;
static drv_info_t dlclass_drv_info;
extern struct mod_conf_data dlclass_conf_data;