orange's学习--第七章:键盘显示器处理程序总结

键盘显示器的处理过程分成了好几个模块,重要的2个缓冲区全局变量解耦了程序。

键盘扫描码缓冲区,让keyboard_handler将每次收到的扫描码放入这个缓冲区,然后建立一个新的任务专门用来解析它们并做相应处理。  PUBLIC void keyboard_handler(int irq)   把键盘扫描码不加区分的存储到了键盘扫描码缓冲区,PUBLIC void keyboard_read(TTY* p_tty)从键盘扫描码缓冲区解析了make code 和break code ,并且把键盘扫码码解析成了一个U32类型的整数来表示所有的按键情况,从而把拆分出来键盘中断处理程序和tty程序。

在task_tty ()中,通过循环来处理每一个TTY的读和写操作,读写操作全都放在了tty_do_read()和tty_do_write()两个函数中,这样就让task_tty ()很简洁,而且逻辑清晰。tty_do_read()读操作会调用keyboard_read(),tty_do_write()写操作会调用out_char (),它会将字符写入指定的CONSOLE。 为了让输入和输出分离,被keyboard_read(  )调用的in_process(  )不应该再直接回显字符,而应该将回显的任务交给TTY来完成,这样,我们就需要为每个TTY建立一块缓冲区,用以放置将被回显的字符。

tty缓冲区,解耦了tty的输入和输出,把输出拆分出来了单独的console.c。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值