Проблемы с errno.h - PullRequest
       17

Проблемы с errno.h

1 голос
/ 12 ноября 2009

Я работаю с Rad Hat 8.0, пытаюсь внести изменения в ядро, и я на стадии компиляции. У меня есть заголовок в include / linux, где я определяю функции-оболочки, и они используют errno. Я включил errno.h используя #include <errno.h>. Когда я пытаюсь скомпилировать, он говорит мне «errno.h нет такого файла или каталога». Когда я пытаюсь #include <linux/errno.h> он находит его, но жалуется, что я не объявлял errno переменную перед использованием. Я посмотрел на errno.h, и он действительно не был объявлен, что сбивает с толку, потому что у меня сложилось впечатление, что это то, где оно определено.

Я смотрю не в тех местах? Как мне использовать errno?

Ответы [ 3 ]

2 голосов
/ 12 ноября 2009

Для кода ядра #include <linux/errno.h>.

Внешняя декларация для errno находится в #include <linux/unistd.h>.

1 голос
/ 04 октября 2012

В соответствии с эта , errno переменная устанавливается автоматически при возврате отрицательного значения.

Пример

asmlinkage long sys_foo() {
    ...
    if(error)
        return -(errorcode);
    ...
}

В этом случае возвращаемый результат в пользовательском пространстве будет -1, а переменная errno будет иметь значение errorcode.

0 голосов
/ 12 ноября 2009

errno определяется как extern в

/usr/src/lib/linux/errno.c

Вы должны скомпилировать этот файл с вашим

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