我正在为输入设备构建一个内核模块,我注意到在模块源代码中,有几个调用input_get_keycode(data->input_dev, scancode, &keycode);
当我编译时我收到错误,该原型没有函数。
查看input/input.c
源代码,这是以下定义input_get_keycode
:
int input_get_keycode(struct input_dev *dev, struct input_keymap_entry *ke)
我尝试在网上查找,发现了一些关于更改内核以便能够更好地处理大型键盘映射的模糊参考,显然这个函数已被更改以更好地处理这个问题。查看 input/input.c 中的旧源代码,该input_get_keycode
函数定义为
int input_get_keycode(struct input_dev *dev, unsigned int scancode, unsigned int *keycode)
我的问题是,这是什么时候改变的。有改动说明吗?我正在从 git 构建ubuntu natty
内核,这是我对分支的理解2.6.37-rc3
。
这是 ubuntu 特有的更改吗?或者这是主线内核的变化。我还有maverick
来自 git 的源代码,它具有旧式(3 个输入)功能。
答案1
如果您正在开发内核模块,我强烈建议您获取 git 树。显然 Linus 的树是强制性的 - 我也得到了稳定的树。由于您正在使用 Ubuntu,我会检查他们是否有一个树,其中包含您可以从中提取的更改。
使用 git 树,我能够签出master
并运行git blame drivers/input/input.c
以查看函数签名input_get_keycode
最后一次在提交中更改8613e4c2
。
运行会git show 8613e4c2
向我提供该更改的提交消息(您想要的注释)以及实现该更改的补丁。我可以看到更改是在 2010-09-09 进行的。
启动gitk
(图形 git 查看器)并告诉它转到该提交,我可以看到该提交在 v2.6.37-rc1 之前,告诉我它已合并到该版本中。跟踪该分支直到 Linus 合并它时,我可以看到它于 2010 年 10 月 26 日合并到提交 3a99c631 中。
这都是主线,没有查看 Ubuntu 补丁,所以看起来这个更改与 Ubuntu 无关。