zoukankan      html  css  js  c++  java
  • 操作系统实验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命令,发现所有的字符回显均变成了*号,实验结果符合预期。

  • 相关阅读:
    iOS开发UIKit框架-可视化编程-XIB
    ios swift例子源码网址总结
    两个单链表相交问题
    库函数atoi
    C++类型萃取
    【Swift】iOS导航栏错乱的原因
    【Swift】iOS裁剪或者压缩后出现的白边问题
    Linux进程调度分析
    【scala】可变与不可变的理解
    【scala】模式匹配
  • 原文地址:https://www.cnblogs.com/mirage-mc/p/13035029.html
Copyright © 2011-2022 走看看