📄 ipage3.htm
字号:
宋体"><font size="2">打开源文件</font><span lang="EN-US"><font size="2">*/</font></span></span></font></p>
<p class="MsoNormal"><font color="#3D5063">
<span lang="EN-US" style="font-family:宋体"><font size="2"> printk("can</font></span><span style="font-family:宋体"><font size="2">’</font><span lang="EN-US"><font size="2">t
open infile!\n");</font></span></span></font></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> return (1);</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> }</font></span></p>
<p class="MsoNormal"><font color="#3D5063">
<span lang="EN-US" style="font-family:宋体"><font size="2"> if((outfile=sys_open(out,O_RDWR
| O_CREAT,S_IRWXU))==NULL){ /*</font></span><span style="font-family:宋体"><font size="2">打开目的文件</font><span lang="EN-US"><font size="2">*/</font></span></span></font></p>
<p class="MsoNormal"><font color="#3D5063">
<span lang="EN-US" style="font-family:宋体"><font size="2"> printk("can</font></span><span style="font-family:宋体"><font size="2">’</font><span lang="EN-US"><font size="2">t
open outfile!\n");</font></span></span></font></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> return (-1);</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> }</font></span></p>
<p class="MsoNormal"><font color="#3D5063">
<span lang="EN-US" style="font-family:宋体"><font size="2"> while((n=sys_read(infile,buf,count))>0){
/*</font></span><span style="font-family:
宋体"><font size="2">从源文件读内容</font><span lang="EN-US"><font size="2">*/</font></span></span></font></p>
<p class="MsoNormal"><font color="#3D5063">
<span lang="EN-US" style="font-family:宋体"><font size="2">
if((sys_write(outfile,buf,n))!=n){ /*</font></span><span style="font-family:
宋体"><font size="2">把内容写到目的文件</font><span lang="EN-US"><font size="2">*/</font></span></span></font></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> printk("copy err!\n");</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> return (3);</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> }</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> }</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> kfree(buf);</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> sys_close(infile);</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> sys_close(outfile);</font></span></p>
<p class="MsoNormal"><font color="#3D5063">
<span lang="EN-US" style="font-family:宋体"><font size="2"> set_fs(fs);
/*</font></span><span style="font-family:宋体"><font size="2">返回初态</font><span lang="EN-US"><font size="2">*/</font></span></span></font></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> printk("sys_myCopy done!\n");</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> return(0);</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063">}</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span style="font-family:宋体">
<font size="2" color="#3D5063">调试记录:为了测试新增的系统调用能否正常工作,使用以下的<span lang="EN-US">testsys.c</span>程序进行测试:</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063">#include<linux/unistd.h> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063">#include<stdio.h> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063">#include<stdlib.h> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063">#include<errno.h> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><font color="#3D5063">
<span lang="EN-US" style="font-family:宋体"><font size="2">
_syscall2(int,filecopy,char*,argv1,char*,argv2) </font></span>
<span style="font-family:宋体"><font size="2"> <span lang="EN-US">/*</span>声明新增的系统调用</font><span lang="EN-US"><font size="2">*/
</font></span></span></font></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063">int main(int argc,char* argv[]){ </font></span>
</p>
<p class="MsoNormal" style="text-indent: 21.0pt">
<span lang="EN-US" style="font-family:宋体"><font size="2" color="#3D5063">int i;
</font></span></p>
<p class="MsoNormal" style="text-indent: 21.0pt"><font color="#3D5063">
<span lang="EN-US" style="font-family:宋体"><font size="2">i=filecopy("/root/test.c","/root/test1.c");
</font></span><span style="font-family:宋体"><font size="2"> <span lang="EN-US">
/*</span>调用新增的系统调用</font><span lang="EN-US"><font size="2">*/</font></span></span></font></p>
<p class="MsoNormal" style="text-indent: 21.0pt">
<span lang="EN-US" style="font-family:宋体"><font size="2" color="#3D5063">if(i==0)
printf("\nfile copy accomplished!!\n"); </font></span></p>
<p class="MsoNormal" style="text-indent: 21.0pt">
<span lang="EN-US" style="font-family:宋体"><font size="2" color="#3D5063">else
printf("i=%d,error!\n",i); </font></span></p>
<p class="MsoNormal" style="text-indent: 21.0pt">
<span lang="EN-US" style="font-family:宋体"><font size="2" color="#3D5063">
exit(0); </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063">}</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span style="font-family:宋体">
<font size="2" color="#3D5063">进入新编的内核后,使用命令<span lang="EN-US">gcc –o testsys
testsys.c</span>调试测试程序并执行之。结果证明成功添加了新的系统调用。</font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋体">
<font size="2" color="#3D5063"> </font></span></p>
<font size="2" color="#3D5063">
</font></TD></TR>
<TR>
<TD height=12 vAlign=bottom width=855>
<P align=right><FONT color=#3D5063 size=2><SPAN> <a href="ipage4.htm"><font color="#3D5063">实验三
</font></a> </SPAN><b>
</b></FONT><B><FONT color=#3D5063 size="2"> </FONT></B><A href="../index.htm"><FONT color=#3D5063 style="FONT-FAMILY: 宋体; FONT-STYLE: normal; FONT-WEIGHT: normal" size="2">返回目录页</FONT></A></P></TD>
<TD height=12 vAlign=bottom width=0></TD></TR>
</TBODY></TABLE></CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -