Managing and Developing Dynamically Loadable Kernel Modules

Managing and Developing Dynamically Loadable Kernel Modules
Developing Dynamically Loadable Kernel Modules
Chapter 12566
if (dlclass_debug)
printf("dlclass> OPEN -- write buffer size = %d\n",
dlclass_bufsz);
return (0);
}
/*
* CLOSE
*/
static int
dlclass_close(dev_t dev, int flag, int mode)
{
if (dlclass_debug)
printf("dlclass> CLOSE\n");
return (0);
}
/*
* READ
*/
static int
dlclass_read(dev_t dev, struct uio *uio)
{
if (dlclass_debug)
printf("dlclass> READ\n");
if (uio->uio_offset == sizeof(dlclass_msg))
return (0);
if (uio->uio_offset > sizeof(dlclass_msg))
return (ENXIO);
/* copy out my message */
return ( uiomove((caddr_t)(dlclass_msg
+uio->uio_offset),
sizeof(dlclass_msg)-uio->uio_offset,
UIO_READ, uio) );
}
/*
* This code could have problems if uio->uio_offset
* is negative (a page boundary is crossed)
*/
/*