orange's学习--第七章:i 多个TTY框架

在TTY任务中执行一个循环,这个循环将轮询每一个TTY,处理它的事件,包括从键盘缓冲区读取数据、显示字符等内容。 
并非每轮询到某个TTY时,箭头所对应的全部事件都会发生,只有当某个TTY对应的控制台是当前控制台时,它才可以读取键盘缓冲区 (所以图中读取过程使用了虚线)。 

和原先程序区别:

 1.  每一个TTY都应该有自己的读和写的动作。所以在keyboard_read(  )内部,函数需要了解自己是被哪一个TTY调用。我们通过为函数传入一个参数来做到这一点,这个参数是指向当前TTY的指针。 
 2.  为了让输入和输出分离,被keyboard_read(  )调用的in_process(  )不应该再直接回显字符,而应该将回显的任务交给TTY来完成,这样,我们就需要为每个TTY建立一块缓冲区,用以放置将被回显的字符。 
3.  每个TTY回显字符时操作的CONSOLE是不同的,所以每个TTY都应该有一个成员来记载其对应的CONSOLE信息。 

在task_tty ( )中,通过循环来处理每一个TTY的读和写操作,读写操作全都放在了tty_do_read(  )和tty_do_write(  )两个函数中,这样就让task_tty (  )很简洁,而且逻辑清晰。读操作会调用keyboard_read(  ),当然此时已经多了一个参数;写操作会调用out_char (  ),它会将字符写入指定的CONSOLE。 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值