Linux系统调用返回值

时间:2012-01-16 09:15:16

标签: c linux linux-kernel

在家庭作业中,我们被要求向Linux内核添加系统调用(Red Hat 2.4.18)。根据赋值,新系统调用的返回值应该是无效的。系统调用本身很简单(只有一个赋值),没有错误的机会。 从我读取和学习的系统调用通常返回负值表示失败或0表示成功。我的问题是,这只是一种常见的做法还是必须的?系统调用可以返回void吗?

1 个答案:

答案 0 :(得分:4)

在Linux中,如果它们完全返回,则所有系统调用都会返回很长时间。假设您使用以下方式声明系统调用:

SYSCALL_DEFINE0(mycall)
{
    /* ... */
}

这导致:

asmlinkage long sys_mycall(void)

如果您没有任何有用的回报并且呼叫不会失败,则每次只返回0表示成功。