Системные вызовы Linux возвращают значение - PullRequest
3 голосов
/ 16 января 2012

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

1 Ответ

4 голосов
/ 16 января 2012

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

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

В результате:

asmlinkage long sys_mycall(void)

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

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