Я написал модуль ядра, взаимодействующий с сетевыми фильтрами. Ключи сетевого фильтра работают в контексте Softirq.
Я обращаюсь к глобальной структуре данных "Хэш-таблица" из контекста softirq, а также из контекста Process. Доступ к контексту процесса связан с файлом sysctl, который используется для изменения содержимого таблицы Hash.
Я использую spinlock_irq_save.
Является ли этот выбор spin_lock api правильным? С точки зрения производительности и стандартов блокировки.
что произойдет, если прерывание запланировано на другом процессоре? в то время как текущая блокировка процессора уже удерживается кодом процесса процесса?