Книга: Разработка ядра Linux
Создание и инициализация семафоров
Создание и инициализация семафоров
Реализация семафоров зависит от аппаратной платформы и определена в файле <asm/semaphore.h>
. Структура struct semaphore
представляет объекты типа семафор. Статическое определение семафоров выполняется следующим образом.
static DECLARE_SEMAPHORE_GENERIC(name, count);
где name
— имя переменной семафора, a count
— счетчик семафора. Более короткая запись для создания взаимоисключающей блокировки (mutex), которая используются наиболее часто, имеет следующий вид.
static DECLARE_MUTEX(name);
где name
— это снова имя переменной типа семафор. Чаще всего семафоры создаются динамически, как часть больших структур данных. В таком случае для инициализации семафора, который создается динамически и на который есть только непрямая ссылка через указатель, необходимо использовать функцию
sema_init(sem, count);
где sem
— это указатель, a count
— счетчик использования семафора. Аналогично для инициализации динамически создаваемой взаимоисключающей блокировки можно использовать функцию
init_MUTEX(sem);
Неизвестно, почему слово "mutex" в имени функции init_MUTEX()
выделено большими буквами и почему слово "init" идет перед ним, в то время как имя функции sema_init()
таких особенностей не имеет. Тем не менее ясно, что это выглядит не логично, и я приношу свои извинения за это несоответствие. Надеюсь, что после прочтения главы 7 ни у кого уже не будет вызывать удивление то, какие имена придумывают символам ядра.
- 5.2.4. Отладка семафоров
- Инициализация
- 5.2.2. Инициализация семафоров
- Создание файлов с блокировкой
- Создание свободно позиционируемых элементов
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание объектов Collection
- 7.4.2.4. Создание своего первого LiveCD
- 4.2. Создание трехмерной модели и построение горизонтальной проекции детали
- 7.4.2. Создание собственного LiveCD
- Создание пользователя и группы на рабочей станции
- Создание корня документа: