// 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中
本文介绍了一个名为globalfifo的Linux设备驱动模块的初始化过程。该模块通过注册字符设备区域并分配主设备号来实现设备的加载。此外还涉及内存分配、互斥锁初始化及等待队列头的初始化等内容。
&spm=1001.2101.3001.5002&articleId=81637296&d=1&t=3&u=f07c560e29924b438daa3fc66a793e27)
1289

被折叠的 条评论
为什么被折叠?



