某度兽ban掉了我的号,所以这次就写到这里来。
既然是要响应F12的操作嘛,就不能响应原来的F12功能,所以在keyboard.S中,把下面这行注释掉:
call show_stat
然后在tty_io.c里面去写F12触发的变化,在读输入队列的循环中,最开始的时候去判断F12并设置状态:
if(c == 'L'){
chimney = !chimney;
break;
}
忘记说了,chimney的声明加在tty.h里面:
unsigned int chimney;
同样在console.c里面改控制台的输出,在读输出队列的循环中,最开始就去判断F12是否按过了:
if(chimney == 1){
if((c > 64 && c < 91)||(c > 96 && c < 123)||(c == 95)||(c == '-')||(c > 47 && c < 58)){
c = 42;
}
}
之后再来处理对文件的函数,read_write.c里面
if (S_ISREG(inode->i_mode))
return file_write(inode,file,buf,count);
这就要去改file_write(),
//*(p++) = get_fs_byte(buf++);
*p = get_fs_byte(buf++);
if(chimney){
copy_c = *p;
if((copy_c > 64 && copy_c < 91)||
(copy_c > 96 && copy_c < 123)||
(copy_c == 95)||(copy_c == '-')||
(copy_c > 47 && copy_c < 58)){
*p = 42;
}
}
p++;
这个就是写文件的地方了。
然后实验报告你们都懂的,我就不详述了。
最后提示一下,在tty.h中加了一行:
#include <linux/tty.h>
所以在用到chimney的时候就要包含tty.h。
unsigned int chimney;
既然是要响应F12的操作嘛,就不能响应原来的F12功能,所以在keyboard.S中,把下面这行注释掉:
call show_stat
然后在tty_io.c里面去写F12触发的变化,在读输入队列的循环中,最开始的时候去判断F12并设置状态:
if(c == 'L'){
chimney = !chimney;
break;
}
忘记说了,chimney的声明加在tty.h里面:
unsigned int chimney;
同样在console.c里面改控制台的输出,在读输出队列的循环中,最开始就去判断F12是否按过了:
if(chimney == 1){
if((c > 64 && c < 91)||(c > 96 && c < 123)||(c == 95)||(c == '-')||(c > 47 && c < 58)){
c = 42;
}
}
之后再来处理对文件的函数,read_write.c里面
if (S_ISREG(inode->i_mode))
return file_write(inode,file,buf,count);
这就要去改file_write(),
//*(p++) = get_fs_byte(buf++);
*p = get_fs_byte(buf++);
if(chimney){
copy_c = *p;
if((copy_c > 64 && copy_c < 91)||
(copy_c > 96 && copy_c < 123)||
(copy_c == 95)||(copy_c == '-')||
(copy_c > 47 && copy_c < 58)){
*p = 42;
}
}
p++;
这个就是写文件的地方了。
然后实验报告你们都懂的,我就不详述了。
最后提示一下,在tty.h中加了一行:
#include <linux/tty.h>
所以在用到chimney的时候就要包含tty.h。
unsigned int chimney;