【发布时间】:2016-03-03 04:52:02
【问题描述】:
//Init Module
...
set_bit(EV_ABS, joystick_dev->evbit);
set_bit(ABS_X, joystick_dev->absbit);
set_bit(ABS_Y, joystick_dev->absbit);
set_bit(ABS_Z, joystick_dev->absbit);
...
//Kernel Thread
...
int g[3];
g[0] = -1;
g[1] = 0;
g[2] = 0;
input_report_abs(joystick_dev, ABS_X, g[0]);
input_report_abs(joystick_dev, ABS_Y, g[1]);
input_report_abs(joystick_dev, ABS_Z, g[2]);
input_sync(joystick_dev);
...
执行突然停止在
input_report_abs(joystick_dev, ABS_Y, g[1]);
执行后
input_report_abs(joystick_dev, ABS_X, g[0]);
并抛出以下异常 -
BUG: unable to handle kernel NULL pointer dereference...
可能是什么错误?谢谢。
【问题讨论】:
-
请显示
input_report_abs()的原型、g[]的声明以及分配给g[0 .. 2]的位置。 -
首先,您需要发布MCVE。其次,问题正是它听起来的样子:您正在使用一个 NULL 指针并尝试使用它,就好像它指向有效数据一样,但事实并非如此。我们也不知道除了名称之外还有什么东西,这不一定能说明它们所拥有的实际内容。
标签: c linux input linux-kernel linux-device-driver