Мне нужно передать целое число в модуль ядра, вычислить там sin и вернуть результат.Как вернуть отрицательное целое число как действительный результат с помощью ioctl?
Прежде всего, ядро имеет встроенный грех. fixp_t fixp_sin(unsigned int degrees)
Функция, которая возвращает номер фиксированной точки (что может быть отрицательным).
Итак, мой вопрос: если я передаю целое число, используя ioctl для модуля ядра, вычислить грех, как я могу вернуть отрицательный результат обратно?
ioctl обнаруживает отрицательные значения возврата как ошибки.
Я ожидаю возвращаемое значение 'int' из функции sine, все, что вы когда-либо получите, это' -1', '0' или' + 1'. –
@WeatherVane Я полагаю, что трюк заключается в использовании чисел с фиксированной точкой. – avasin
Возвращаемое значение ioctl всегда относится к * успеху * или * сбою * ioctl. Если у вас есть * data * для передачи или возврата из ioctl, вы всегда это делаете с помощью аргумента указателя. Хотя с учетом сказанного, скрытие функции sin() за ioctl кажется странным архитектурным выбором. –