请问2.6内核的pc键盘驱动在哪个目录?
我知道2.4内核的pc键盘驱动PC_keyb.c是在/driver/char/pc_keyb.c目录下,
但是2.6内核/driver/char/目录下面没有pc键盘驱动,然后在/driver/input/keyboard/目录下面只有
amikbd.c atkbd.o happs2atkbd.h lkkbd.c maple_keyb.c sunkbd.c
atkbd.c built-in.o Kconfig Makefile newtonkbd.c xtkbd.c
几个文件。
我的内核是2.6.8.1的,启动后可以使用键盘的,我就是不知道这个pc键盘的驱动文件放在哪里了,
请各位大侠知道的帮帮忙,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
drivers/input/keyboard/atkbd.c
谢谢richardhesidu,还有就是,键盘驱动是不是要依赖于/driver/char/keyboard.c?因为键盘驱动是分为上层驱动跟下层驱动的,
下层驱动要调用keyboard.c的吧,那drivers/input/keyboard/atkbd.c是怎么跟keyboard.c联系起来的?
atkbd.c与keyboard.c他们又不在同一个目录下。
你去看一下源代码,/driver/char/keyboard.c和/drivers/input/keyboard/atkbd.c没有直接联系。
Linux提供很多驱动框架,比如input设备,serio设备。这些框架提供相应的接口来支持这里类设备。keyboard.c和atkbd.c都是
最底层的驱动,它们并不为其它驱动提供接口。你可以看到keyboard.c使用了input设备框架中的接口,而atkbd.c同时使用了input和
serio设备驱动框架中的接口。
谢谢了,我在网上看到别人说的是PC键盘的驱动程序由keyboard.c和pc_keyb.c两个程序组成。其中:keyboard.c是键盘的高层驱动,与硬件不直接相关;pc_keyb.c是键盘的底层驱动,与键盘硬件直接相关。pc_keyb.c需要调用keyboard.c里面的handle_scancode()等函数。
我看了代码确实有handle_scancode()这样的函数调用等,不知道keyboard.c和pc_keyb.c是怎么联系起来的?
在2.4内核中,keyboard.c和pc_keyb.c的确有联系。keyboard.c中导出的handle_scancode和keyboard_tasklet这两个内核符号被pc_keyb.c所用。这两个程序并不直接关联。pc_keyb.c通过keyboard.c导出的内核符号获得后者提供的支持。这是由内核的机制来完成的。
2.4内核是这样的,不知道2.6内核是怎么联系起来的?它们又不在同一个目录下,编译的时候会
去/driver/char/kerboard.c调用里面的函数吗?
在2.6内核里,从代码上看keyboard.c和atkbd.c没有像2.4内核那样有直接的函数调用关系。因为在2.6内核中,keyboard.c没有导出任何内核符号。不过两者还是有间接关系的。keyboard.c向input子系统注册回调函数,而atkbd.c通过input子系统指向这些回调函数。
谢谢天使版主,我再去学习学习,非常感谢你的回答!
还想麻烦下天使版主,你说的keyboard.c向input子系统注册回调函数,而atkbd.c通过input子系统指向这些回调函数。这些操作是体现在哪里呢?那些回调函数是怎么注册的?atkbd.c又是怎么指向这些回调函数的?
麻烦你再帮我回答一下好吗