2012-01-16 74 views
3

在家庭作业中,我们被要求将系统调用添加到Linux内核(Red Hat 2.4.18)。根据分配,新系统调用的返回值应该是无效的。系统调用本身非常简单(只有一项任务),并且不会出错。 从我阅读和学习系统调用通常返回一个负值表示失败或0表示成功。我的问题是,这只是一种普遍的做法还是必须的?系统调用可以返回无效吗?Linux系统调用返回值

+1

它通常被认为是不好的做法,不返回任何有可能失败的功能...... – mtahmed 2012-01-16 09:23:51

+0

Leonid的课? – cha0site 2012-01-16 09:26:38

回答

4

在Linux中,如果所有系统调用都返回,则所有系统调用都会返回很长时间。假设你使用申报系统调用:

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

这导致:

asmlinkage long sys_mycall(void) 

如果你没有任何有用的回报和呼叫不能失败,只是每到信号成功时返回0。