Сообщение Плавающая арифметика в системных потоках от 10.06.2019 20:57
Изменено 10.06.2019 20:58 Евгений Музыченко
Плавающая арифметика в системных потоках
Приспичило задействовать плавающую арифметику для умножения/деления 64-разрядных чисел, которое в целочисленной арифметике дает или переполнение, или слишком большую погрешность. Использовать хочу исключительно в системных потоках, создаваемых через PsCreateSystemThread. Можно ли в таких условиях избежать обертывания каждой группы операций в KeSaveFloatingPointState/KeRestoreFloatingPointState, чтобы не блокировать переключение контекста? То есть, сохраняет ли ядро состояние FPU/SSE при переключении контекста с пользовательского потока на системный? В документации MS на эту тему навскидку ничего не нашел. 
Плавающая арифметика в системных потоках
Приспичило задействовать плавающую арифметику для умножения/деления 64-разрядных чисел, которое в целочисленной арифметике дает или переполнение, или слишком большую погрешность. Использовать хочу исключительно в системных потоках, создаваемых через PsCreateSystemThread, и только на PASSIVE_LEVEL. Можно ли в таких условиях избежать обертывания каждой группы операций в KeSaveFloatingPointState/KeRestoreFloatingPointState, чтобы не блокировать переключение контекста? То есть, сохраняет ли ядро состояние FPU/SSE при переключении контекста с пользовательского потока на системный? В документации MS на эту тему навскидку ничего не нашел. 