|
OpenBSD可加载内核模块编程完全指南(8) struct proc *p; { printf("device opened, hi!n"); return(0); }
/* * 以下动作在设备被关闭的时候执行,这里打印一段信息 */
int ourdevclose(dev, fflag, devtype, p) dev_t dev; int fflag, devtype; struct proc *p; { printf("device closed! bye!n"); return(0); }
/* * 定义我们设备执行的read动作,这里它把存储在内部结构ourdev_io里的string的当前值读出来 */
int ourdevread(dev, uio, ioflag) dev_t dev; struct uio *uio; int ioflag; { int resid = MAXMSGLEN; int error = 0;
do { if (uio->uio_resid < resid) resid = uio->uio_resid;
error = uiomove(dio.msg, resid, uio);
} while (resid > 0 && error == 0);
return(error); }
/* * ioctl操作的代码.这里定义了两个操作,一个负责从ourdev_io中读取当前值,一个负责设置当前值. */
int ourdevioctl(dev, cmd, data, fflag, p)
|