当前位置: 技术问答>linux和unix
在linux下的终端下使用自定义的系统调用(紧急~~)
来源: 互联网 发布时间:2016-04-21
本文导语: 各位大虾 偶是linux菜鸟,现在正忙着做操作系统课程设计 我的问题具体是这样的: 我自定义了一个系统调用: asmlinkage void sys_mycall(void){ ...
各位大虾
偶是linux菜鸟,现在正忙着做操作系统课程设计
我的问题具体是这样的:
我自定义了一个系统调用:
asmlinkage void sys_mycall(void){
printk("you are my life ..");
}
完成了注册,编译通过,也能够进入自己修改的linux内核
现在,我要使用该系统调用,编了一个测试程序(zhuzhu.c):
#include
_syscall0(void,mycall);
main(){
mycall();
}
然后编译该测试程序
gcc -o test zhuzhu.c
编译通过
执行test 。/test
没有任何输出,也没报告错误
这是为什么??
希望大虾们支招~~
谢谢~~
偶是linux菜鸟,现在正忙着做操作系统课程设计
我的问题具体是这样的:
我自定义了一个系统调用:
asmlinkage void sys_mycall(void){
printk("you are my life ..");
}
完成了注册,编译通过,也能够进入自己修改的linux内核
现在,我要使用该系统调用,编了一个测试程序(zhuzhu.c):
#include
_syscall0(void,mycall);
main(){
mycall();
}
然后编译该测试程序
gcc -o test zhuzhu.c
编译通过
执行test 。/test
没有任何输出,也没报告错误
这是为什么??
希望大虾们支招~~
谢谢~~
|
o 看错了
你应该去看看 /var/log/messages 有没有打印信息
你应该去看看 /var/log/messages 有没有打印信息
|
系统调用要通过int 0x80进入,而且将系统调用号放入eax寄存器中,这里你要写汇编才行
其实平时用的glibc的内部就是这样做的
其实平时用的glibc的内部就是这样做的
|
参考 Linux Kernel Development 2nd这本书的 System Call Context 一节 看看 有没有什么遗漏了。