Я работаю с пользовательским устройством char char, которое иногда возвращает большие отрицательные значения (около тысяч, скажем, -2000) для своего ioctl()
.Linux ioctl возвращаемое значение, интерпретируемое кем?
В пользовательском пространстве я не получаю эти значения, возвращенные из вызова ioctl. Вместо этого я получаю возвращаемое значение -1 обратно с errno
, установленным на отрицательное значение из модуля ядра (+2000).
Насколько я могу читать и google, __syscall_return()
- это макрос, который должен интерпретировать отрицательные значения возврата как ошибки. Но, похоже, он ищет только значения от -1 до -125. Поэтому я не ожидал перевода этих больших отрицательных значений.
Где эти возвращаемые значения переведены? Ожидается ли поведение?
Я нахожусь на Linux 2.6.35.10 с EGLIBC 2.11.3-4 + deb6u6.
Может ли кто-то перенести этот вопрос на SO? –