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