2012-01-16 5 views
3

숙제에서 우리는 리눅스 커널 (Red Hat 2.4.18)에 시스템 콜을 추가하라는 요청을 받았습니다. 할당에 따라 새 시스템 호출의 반환 값은 무효화되어야합니다. 시스템 호출 자체는 매우 간단하며 (단 하나의 과제) 오류가 발생할 가능성은 없습니다. 내가 읽고 배운 것에서 시스템 호출은 일반적으로 실패를 나타내는 음수 값 또는 성공을 나타내는 0을 반환합니다. 내 질문은 이것이 단지 일반적인 관행인가 아니면 꼭 필요한 것인가? 시스템 호출이 void를 반환 할 수 있습니까?리눅스 시스템 콜백 리턴 값

+1

일반적으로 실패 할 가능성이있는 함수에서 아무 것도 반환하지 않는 것으로 간주되는 나쁜 사례 ... – mtahmed

+0

Leonid의 수업입니까? – cha0site

답변

4

Linux에서 모든 시스템 호출은 반환되는 경우 long을 반환합니다. 당신이 사용하여 시스템 호출을 선언 말 :

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

이 결과 : 당신이 실패 할 수없는 유용한 반환 및 호출이없는 경우

asmlinkage long sys_mycall(void) 

, 단순히 0의 성공을 신호하기 위해 모든 시간을 반환합니다.