Что кодирует конвенции для использования с плавающей точкой в драйверах устройств Linux?

Вы можете использовать левое соединение и добавить условие фильтра в предложении ON

select d.date,a.entry,a.exit 
from DATES d 
left join ATTENDANCE a on a.date = d.date 
  and d.name = 'Bob' and MONTH (d.date) =  MONTH('2019-01-01')

, а затем использовать условие, примененное к столбцу, относящемуся к левой объединенной таблице, в качестве внутреннего соединения ... в этом случае переместить эти условия в п.

11
задан Community 23 May 2017 в 11:52
поделиться

2 ответа

Короткий ответ: код Ядра может использовать плавающую точку, если это использование окружается kernel_fpu_begin()/kernel_fpu_end(). Они сохранение указателя на функцию и восстановление fpu контекста. Кроме того, они звонят preempt_disable()/preempt_enable(), что не означает сна, отсутствия страницы и т.д. в коде между теми функциями. Google имена функций для получения дополнительной информации.

Если я понимаю правильно, каждый раз, когда KM работает, он использует аппаратный контекст (или аппаратный поток или набор регистров - независимо от того, что Вы хотите назвать его), который был вытеснен от некоторого потока приложения.

Нет, модуль ядра может работать в пользовательском контексте также (например, когда пространство пользователя называет syscalls на устройстве обеспеченным KM). Это не имеет, однако, никакого отношения к проблеме плавающей.

Если Вы запишете свой KM в c, то компилятор правильно обеспечит, чтобы регистры общего назначения были правильно сохранены и восстановлены (как в приложении), но этого автоматически не происходит с регистрами с плавающей точкой.

Это не из-за компилятора, но из-за кода контекстного переключения ядра.

8
ответ дан 3 December 2019 в 06:23
поделиться

Ответ Линуса предоставляет эту довольно четкую цитату для использования в качестве ориентира:

Другими словами: правило состоит в том, что вам действительно не следует использовать FP в ядре.

11
ответ дан 3 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: