Managing and Developing Dynamically Loadable Kernel Modules

Managing and Developing Dynamically Loadable Kernel Modules
Developing Dynamically Loadable Kernel Modules
Chapter 12 567
* WRITE
*/
static int
dlclass_write(dev_t dev, struct uio *uio)
{
caddr_t bufp;
char *end;
int len, err;
bufp = kmalloc(dlclass_bufsz+1, M_DYNAMIC, M_WAITOK);
len = MIN(uio->uio_resid, dlclass_bufsz);
/* print out user data */
if ( !(err = uiomove(bufp, len, UIO_WRITE, uio)) ) {
bufp[len] = 0;
printf("dlclass> ā€˜%s’", bufp);
if (len == dlclass_bufsz) {
printf(ā€œ...???\nā€);
}
}
kfree(bufp, M_DYNAMIC);
return (err);
}
master
*
* master file for "dlclass" module
*
$VERSION
1
$$$
$DRIVER_INSTALL
*
* Driver Block major Char major Required for
* minimal system
dlclass -1 -1
$$$
$LOADABLE
$$$
$INTERFACE