@Fen1xL

Синхронизация ресурсов в драйвере при системных вызовах?

Допустим есть драйвер, который реализует read и write. Функция read блокирует выполнение пока не произойдет прерывание от устройства и не скопируются принятые данные в очередь. В момент, когда функция read блокирована (по факту системный вызов (syscall) не вернул результат в пользовательское пространство), то при вызове другого системного вызова того же драйвера, например, write, необходимо ли в самом драйвере синхронизировать общие данные, которые используются и в read и в write? Или выполнение системных вызовов как-то гарантировано регламентировано и прерывания отключены (к примеру, если прерывание случилось, данные скопированы и системный вызов read готов разблокироваться, а в этот момент выполняется системный вызов write, то write может прерваться)?
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
В момент, когда функция read блокирована (по факту системный вызов (syscall) не вернул результат в пользовательское пространство), то при вызове другого системного вызова того же драйвера, например, write, необходимо ли в самом драйвере синхронизировать общие данные, которые используются и в read и в write?

Да.

Или выполнение системных вызовов как-то гарантировано регламентировано и прерывания отключены

Нет, вообще никак не регламентировано.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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