信号量和等待队列需要在module_init指定的函数中初始化,在初始化之前,一定要为包含信号量和等待队列的结构体分配内存空间kmalloc,否则就会出现insmod后KILLED。
DEMO_devices = kmalloc(sizeof(struct DEMO_dev), GFP_KERNEL);
init_waitqueue_head(&DEMO_devices->wq);
本文介绍在module_init函数中正确初始化信号量和等待队列的方法,强调了分配内存空间的重要性,并通过DEMO展示了如何避免insmod后出现KILLED的问题。
信号量和等待队列需要在module_init指定的函数中初始化,在初始化之前,一定要为包含信号量和等待队列的结构体分配内存空间kmalloc,否则就会出现insmod后KILLED。
DEMO_devices = kmalloc(sizeof(struct DEMO_dev), GFP_KERNEL);
init_waitqueue_head(&DEMO_devices->wq);
3698
932
2212
6068
1万+

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