首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写linux系统调用

编写linux系统调用
EN

Stack Overflow用户
提问于 2009-11-12 00:07:23
回答 1查看 2.8K关注 0票数 1

我试着写一个系统调用。我遵循了以下步骤:

linux/arch/x86/kernel/syscall_table_32.S ->。长sys mycall

linux/include/linux/syscalls.h -> asmlinkage int sys mycall (int i,int j );

linux/arch/x86/include/asm/unistd_32.h ->#定义NR mycall 333

我将linux/Makefile更改为+= -y+=内核/ mm/ fs/ ipc/ security/ crypto/ block/ mycall/

我创建了一个名为mycall的目录。->linux/mycall

在该文件中,我放置了mycall.c:

代码语言:javascript
复制
#include <linux/kernel.h>
asmlinkageintsysmcall(int i,int j )
{
return i + j ;
}

6)我创建Makefile。-> linux/mycall/Makefile。

代码语言:javascript
复制
obj−y := mycall.o

然后,当我尝试这个系统调用时,它总是返回-1。这几行是我在Desktop中的测试代码。testmycall.c

代码语言:javascript
复制
#include <stdio.h>
#include <sys/syscall.h>
#define __NR_mycall 333

int main(void)
{
int x1=10, x2=20, y ;
y = syscall (__NR_mycall, x1, x2 );
printf (”%d\n”,y );
return 0 ;
}

然后我重新编译内核。如果我编译代码,没有任何错误。当我运行这个程序时,它不会将两个值相加。它总是返回-1。我的系统调用有什么问题?(当我重新编译内核时,系统浪费的时间不超过3秒。我认为在这里,可能会有问题)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-12 00:09:47

重新编译内核并重新启动。或者它是一个内核模块?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1716200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档