2012-01-16 26 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。