2012-01-16 8 views
3

В домашнем задании нам было предложено добавить системный вызов в ядро ​​Linux (Red Hat 2.4.18). Согласно присваиванию, возвращаемое значение нового системного вызова должно быть недействительным. Системный вызов сам по себе довольно прост (всего одно задание), и нет ошибки для ошибки. Из того, что я прочитал и узнал системные вызовы, обычно возвращают отрицательное значение, указывающее на отказ, или 0 для указания успеха. Мой вопрос заключается в том, является ли это обычной практикой или необходимостью? Может ли системный вызов возвращать пустоту?Системные вызовы Linux возвращают значение

+1

В целом считается плохой практикой не возвращать ничего из функций, где есть вероятность отказа ... – mtahmed

+0

Класс Леонида? – cha0site

ответ

4

В Linux все системные вызовы возвращаются долго, если они вообще возвращаются. Допустим, вы объявить системный вызов с помощью:

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

Это приводит к:

asmlinkage long sys_mycall(void) 

Если вы не имеете никакого полезного возвращения и вызов не может потерпеть неудачу, просто возвращает 0, каждый раз, чтобы сигнализировать успех.

Смежные вопросы