在家庭作业中,我们被要求向Linux内核添加系统调用(Red Hat 2.4.18)。根据赋值,新系统调用的返回值应该是无效的。系统调用本身很简单(只有一个赋值),没有错误的机会。 从我读取和学习的系统调用通常返回负值表示失败或0表示成功。我的问题是,这只是一种常见的做法还是必须的?系统调用可以返回void吗?
答案 0 :(得分:4)
在Linux中,如果它们完全返回,则所有系统调用都会返回很长时间。假设您使用以下方式声明系统调用:
SYSCALL_DEFINE0(mycall)
{
/* ... */
}
这导致:
asmlinkage long sys_mycall(void)
如果您没有任何有用的回报并且呼叫不会失败,则每次只返回0表示成功。