定时中断键盘灯闪烁
在学习完《趣味定时器》后,是不是只在 dmesg 里看到效果很没劲,这次来点更实际的,我们让键盘灯闪起来。
对于定时器,就不多说了,接下来了解下键盘的基本内容。键盘在 Linux 里是属于TTY(TeleTYpe)设备,既然我们要用到键盘,那先找其通用驱动代码,在 Linux Kernel 源码drivers/tty/vt/keyboard.c 文件,我们找到需要的 LED 灯控制函数:
void setledstate(struct kbd_struct *kbd, unsigned int led);
该函数被在同一文件的 vt_do_kdskled()函数调用,而这函数又被 drivers/tty/vt/vt_ioctl.c 文件的 vt_ioctl()函数调用,这函数是 drivers/tty/vt/vt.c 里struct tty_operations con_ops 的 ioctl 成员,在同一文件 vty_init()函数里有如下语句:
tty_set_operations(console_driver, &con_ops);
将 console_driver->ops 赋值为&con_ops,而 console_driver 是如下类型:
struct tty_driver *console_driver;</