HIT oslab之实验8 终端设备的控制

一、实验内容

修改Linux-0.11的终端设备处理代码,对键盘输入和字符显示进行非常规的控制。

所谓非常规,即:在初始状态,一切如常。用户按一次F12后,把应用程序向终端输出所有字母都替换为*。用户再按一次F12,又恢复正常。
在这里插入图片描述

二、实验过程

0.HIT oslab之设备管理 (显示器 + 键盘)
1.整体思路
①按下F12,产生键盘中断,而键盘中断的相应函数为keyboard_interrupt
keyboard_interrupt被调用后,会将键盘扫描码做为下标,调用数组 key_table 保存的与F12对应的响应函数。
③在响应函数中,设置是否“把应用程序向终端输出所有字母都替换为*”的标志flag。

2.先要找到与F12对应的响应函数
(1)根据1.②可知,得先研读下keyboard_interrupt(在文件 kernel/chr_drv/keyboard.S中实现。)

注意:扩展名是大写的 S

(2)找到了与F12相关的子程序
在这里插入图片描述

①在原始代码中,按下 F12,中断响应后,中断服务程序会调用 func?它实现的是什么功能?
答:call show_stat,即调用显示各个任务状态函数,打印出进程状态信息。
②判断是功能键F12吗?如果是则执行③ok_func

(3)增加响应函数,设置是否“把应用程序向终端输出所有字母都替换为*”的标志。

既然可以call show_stat,那么也可以call change_flag;
change_flag函数的功能就是通过修改flag,然后在回显字符时,根据flag,判断要不要将所有字母替换为*

在这里插入图片描述
kernel/chr_drv/console.c中实现change_flag函数
在这里插入图片描述
(4)李治军老师讲过,con_write函数才是真正写显示器的函数
在写显示器的时候,根据flag来判断是否“把应用程序向终端输出所有字母都替换为*”。
在这里插入图片描述

con_write函数也在kernel/chr_drv/console.c

3.验证
(1)make all
在这里插入图片描述
(2)结果截图
在这里插入图片描述

三、参考资料

1.HIT oslab之实验8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值