Глядя на workqueue.c, кажется, что только части, которые заблокированы должным образом, находятся между публично открытыми API и внутренним потоком, который выполняется. Кажется, что есть некоторые вещи за пределами критического раздела (что для моего неподготовленного глаза), что может быть небезопасным?Безопасна ли рабочая_точка?
Правильно ли я или от основания?
Не могли бы вы быть более конкретными? – pmdj
В ядре нет критических разделов. Существуют только семафоры, спин-блокировки, вариант чтения-записи обоих, доработки, irqsave, атомные операции, барьеры памяти, тщательная упорядоченность и структуры данных каждого процессора. Каждый из них имеет точно определенный набор случаев, в которых он решает и точно определяет набор контекстов, где он может быть использован, поэтому даже невозможно использовать одну вещь для блокировки всего. –