2016-10-12 2 views
1

Я пишу простой драйвер устройства символов для Linux с блокировкой read() и write().Linux driver set Отмена

Что я хочу сделать, это установить их как точки отмены, так что вызов pthread_cancel в потоке, приостановленном на этих функциях, приведет к его завершению.

Как можно установить их в качестве пунктов отмены?

Заранее спасибо.

ответ

2

Если вы пишете драйвер ядра, все, что вам нужно сделать, чтобы убедиться, что read() и write() правильно функционируют в качестве точек отмены для пользовательского пространства, должны убедиться, что они немедленно возвращаются, если сигнал поднят на процессе во время ожидания в пространстве ядра (либо с коротким количеством элементов, либо с ошибкой EINTR).

Это обычно означает использование wait_event_interruptible() с последующей проверкой на if (signal_pending(current)).

Смежные вопросы