操作系统实验07-终端设备的控制
实验内容
- 1.本实验的基本内容就是修改Linux 0.11的终端设备处理代码,掌握如何能对键盘处理和字符显示进行适当的控制,主要包括如下三个基本任务:
- 2.创建一个显示状态DisplayState,通过键盘的某个按键来修改这个状态信息,本实验假定用F12来控制该状态,即如果DisplayState=0,则按键F12会将其改变为1;而如果DisplayState=1,则按键F12会将其改变为0。
- 3.根据显示状态DisplayState决定了字符如何显示,此处用0或1的DisplayState来控制字符的回显,即如果DisplayState=0,字符正常回显;而如果DisplayState=1,任何字符都用*回显。在此基础上再用DisplayState控制非回显到屏幕(通常就是printf,printf再调用write(1)输出到屏幕上的)上字符。
实验步骤
1.修改tty_io.c文件
进入linux-0.11/kernel/chr_drv目录,打开tty_io.c,添加如下代码,增加press_f12_handle函数。
int switch_show_char_flag = 0;
void press_f12_handle(void)
{
if (switch_show_char_flag == 0)
{
switch_show_char_flag = 1;
}
else if (switch_show_char_flag == 1)
{
switch_show_char_flag = 0;
}
}
2.修改keyboard.S文件
此文件和步骤1中的文件目录相同,增加一行代码:
.long press_f12_handle,none,none,none
3.修改console.c文件
在console.c文件中增加如下代码
if (switch_show_char_flag == 1)
{
c = '*';
}
此代码对应实验的核心要求
4.修改tty.h
此文件位于include/linux目录,添加如下代码:
extern int switch_show_char_flag;
void press_f12_handle(void);
5.编译运行Linux
在进入系统后,输入ls -l发现字符正常显示,此时再输入F12然后输入ls -l命令,发现所有的字符回显均变成了*号,实验结果符合预期。
本文作者:mirage_mc
本文链接:https://www.cnblogs.com/mirage-mc/p/13035029.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件