- 论坛徽章:
- 0
|
device_create(my_class, NULL, dev, NULL, "DEVICENAME%d" );// , LED_MINOR );
:em12:
你第五个参数"DEVICENAME%d"是个格式化的字符串,既然带了%d,后面的参数就不可省略。
device_create(my_class, NULL, dev, NULL, "DEVICENAME%d" , LED_MINOR);
与printf类似..
你省略掉后,device_create里面调用的vsnprintf不出错才怪了.内核当然认为%d对应的变量地址是NULL
Unable to handle kernel NULL pointer dereference at virtual address 00000000
你甚至可以这样写这个函数
char * str = "abcde";
int inta = 10;
device_create(my_class, NULL, dev, NULL, "DEVICENAME%d%s%d", LED_MINOR, str, inta);
记住:格式化串必须对应参数.
:em12: |
|