EDN China > 技术文章 > 嵌入式系统 > 开发工具 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

Linux内核解读入门

来源:21control?? 2006年09月03日 ?? 收藏0
nbsp;...
??? .long?SYMBOL_NAME(sys_sendfile)
??? .long?SYMBOL_NAME(sys_ni_syscall)?/*?streams1?*/
??? .long?SYMBOL_NAME(sys_ni_syscall)?/*?streams2?*/
??? .long?SYMBOL_NAME(sys_vfork)?/*?190?*/
??? /*?add?by?I?*/
??? .long?SYMBOL_NAME(sys_addtotal)
??? .rept?NR_syscalls-191
??? .long?SY
MBOL_NAME(sys_ni_syscall)
?

?? .endr

??? 3.?把增加的?sys_call_table?表项所对应的向量,在include/asm-386/unistd.h?中进行必要申明,以供用户进程和其他系统进程查询或调用:

??? 增加后的部分?/usr/src/Linux/include/asm-386/unistd.h?文件如下:
??? ...?...
??? #define?__NR_sendfile?187
??? #define?__NR_getpmsg?188
??? #define?__NR_putpmsg?189
??? #define?__NR_vfork?190
??? /*?add?by?I?*/
??? #define?__NR_addtotal?191

??? 4.测试程序(test.c)如下:

??? #include
??? #include
??? _syscall1(int,addtotal,int,?num)
??? main()
??? {
??? int?i,j;
??? do
??? printf("Please?input?a?number
??? ");
??? while(scanf("%d",&i)==EOF);
??? if((j=addtotal(i))==-1)
??? printf("Error?occurred?in?syscall-addtotal();
??? ");
??? printf("Total?from?0?to?%d?is?%d
??? ",i,j);
??? }

??? 对修改后的新的内核进行编译,并引导它作为新的操作系统,运行几个程序后可以发现一切正常;在新的系统下对测试程序进行编译(*注:由于原内核并未提供此系统调用,所以只有在编译后的新内核下,此测试程序才能可能被编译通过),运行情况如下:

??? $gcc?-o?test?test.c
??? $./test
??? Please&nbs;
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

操作系统? 内核?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈