Когда использовать mutex_lock_interruptible?

Оглавление:

Когда использовать mutex_lock_interruptible?
Когда использовать mutex_lock_interruptible?

Видео: Когда использовать mutex_lock_interruptible?

Видео: Когда использовать mutex_lock_interruptible?
Видео: ОС #2-8. Примитивы синхронизации Linux 2024, Ноябрь
Anonim

Используйте функцию mutex_lock_interruptible , чтобы ваш драйвер мог быть прерван любым сигналом. Это означает, что ваш системный вызов должен быть написан так, чтобы его можно было перезапустить. (Также см. ERESTARTSYS.)

Могу ли я заблокировать спин-блокировку на одном ЦП и разблокировать ее на другом ЦП?

Использование спин-блокировок в одноядерной/однопроцессорной системе обычно не имеет смысла, поскольку пока опрос спин-блокировки блокирует единственное доступное ядро ЦП, ни один другой поток не может выполняться, а поскольку никакой другой поток не может выполняться, замок тоже не откроется.

Могу ли я вызвать Kmalloc Gfp_kernel, удерживая спин-блокировку?

Вы не можете, однако, делать что-либо, что будет засыпать, удерживая спин-блокировку. Например, никогда не вызывайте любую функцию, которая касается пользовательской памяти, kmalloc с флагом GFP_KERNEL, любые функции семафора или любые функции расписания, удерживая спин-блокировку. … Семафоры в Linux - это спящие блокировки.

Что такое Spinlock_t?

int spin_trylock(spinlock_t lock) Блокирует спин-блокировку , если она еще не заблокирована. Если не удается получить блокировку, она завершается с ошибкой и не закрывает блокировку. spin_lock_irq: spin_lock_irq(spinlock_t lock)

Что такое мьютекс ядра?

В ядре Linux мьютексы относятся к конкретному блокирующему примитиву, обеспечивающему сериализацию в системах с разделяемой памятью, а не только к общему термину, относящемуся к «взаимному исключению», найденному в академические круги или аналогичные теоретические учебники.

Рекомендуемые: