支持阻塞操作的globalfifo设备驱动(二)

// globalfifo设备驱动模块加载函数

static int __init globalfifo_init(void)
{
int ret;
dev_t devno = MKDEV(globalfifo_major, 0);
if(globalfifo_major)
ret = register_chrdev_region(devno, 1, “globalfifo”);
else {
ret = alloc_chrdev_region(&devno, 0, 1, “globalfifo”);
globalfifo_major = MAJOR(devno);
}
if(ret < 0)
return ret;
globalfifo_devp = kzalloc(sizeof(struct globalfifo_dev), GFP_KERNEL);
if(!globalfifo_devp) {
ret = -ENOMEM;
goto fail_malloc;
}
globalfifo_setup_cdev(globalfifo_devp, 0);
mutex_init(&globalfifo_devp->mutex);
init_waitqueue_head(&globalfifo_devp->r_wait);
init_waitqueue_head(&globalfifo_devp->w_wait);
return 0;
}
在Kdev.h中

deffine MKDEV(ma,mi) (((ma)<

猜你喜欢

转载自blog.csdn.net/aaaa255116/article/details/81637296
今日推荐