Linux设备驱动开发:schar模块详解
1. 设备注册
与hello模块类似,schar模块也有 init_module 入口点。它会执行很多操作,如分配内存、初始化定时器和变量等,这里我们主要关注设备注册。
int init_module(void)
{
int res;
if (schar_name == NULL)
schar_name = “schar”;
/* register device with kernel */
res = register_chrdev(SCHAR_MAJOR, schar_name, &schar_fops);
if (res) {
MSG(“can’t register device with kernel\n”);
}
return res;
}
schar_name 可作为参数传入模块。若未指定名称,则使用默认值“schar”。 SCHAR_MAJOR 在 schar.h 中定义为42,这是一个保留的主设备号。选择保留的主设备号进行实验是安全的,只要该编号未被其他活动设备使用。
#define SCHAR_MAJOR 42
也可以使用动态分配主设备号,示例代码如下:
超级会员免费看
订阅专栏 解锁全文
1637

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



