Запретить Linux переходить к другой задаче во время выполнения определенной функции
Я сделал реализацию протокола 1-wire для Raspberry Pi, адаптированную из этой книги. Он использует битовые удары для реализации протокола связи. Функция bcm2835_delayMicroseconds() из библиотеки BCM2835 используется для получения требуемых задержек.
Это работает довольно хорошо, но не совсем надежно: иногда я не получаю ответ от датчика. Я использовал осциллограф, чтобы отследить проблему. Вот скриншот осциллографа с интерпретацией сигнала зеленым цветом. Красным цветом обозначена неисправность: бит начального низкого импульса удлинился, в результате чего был введен мошенник "0". Это привело к тому, что датчик не распознал команду и не ответил на нее (последующие 1).
Я полагаю, что это произошло потому, что во время передачи этого бита ОС выгрузилась (переключилась на другую задачу / поток / процесс). Так можно ли сказать Linux не выгружать во время выполнения определенной функции (для записи и чтения одного бита в этом случае)? Или, может быть, есть другое решение этой проблемы?