Как убедиться, что работает только один экземпляр модуля ядра C (Singleton)? - PullRequest
0 голосов
/ 09 января 2020

Для моего задания мне нужно определить подходящие шаблоны проектирования для моего модуля ядра. Поскольку он изменяет одну критическую область кода ядра, я не могу допустить, чтобы было запущено более одного его экземпляра - измененный код можно было бы взять за исходный, и не было бы никакого способа восстановить систему в ее исходное состояние. на module_exit. Имея это в виду, я выбрал шаблон проектирования Singleton среди других. Теперь мне нужно реализовать ограничение, которое сопровождает его - программа должна гарантировать, что в данный момент активен только один его экземпляр.

Это обычная практика для модулей ядра? Я не видел, чтобы это обсуждалось. Если да, как я могу применить ограничение?

1 Ответ

1 голос
/ 10 января 2020

это не столько количество запущенных модулей, сколько несколько потоков, выполняющих один и тот же модуль.

Один из способов избежать конфликта - это заблокировать мьютекс, тем самым блокируя все другие потоки, которые пытаются выполнить тот же код во время некоторого критического раздела кода, затем «разблокирует» этот мьютекс, тем самым позволяя другому потоку выполнять тот же код.

...