Внутреннее устройство ядра Linux 2.4


Newary()


newary() обращается к для распределения памяти под новый набор семафоров. Она распределяет объем памяти достаточный для размещения дескриптора набора и всего набора семафоров. Распределенная память очищается и адрес первого элемента набора семафоров передается в . Функция резервирует память под массив элементов нового набора семафоров и инициализирует ( ) набор. Глобальная переменная used_sems увеличивается на количество семафоров в новом наборе и на этом инициализация данных ( ) для нового набора завершается. Дополнительно выполняются следующие действия:

  • В поле sem_base заносится адрес первого семафора в наборе.
  • Очередь sem_pending объявляетяс пустой.

Все операции, следующие за вызовом , выполняются под глобальной блокировкой семафоров. После снятия блокировки вызывается (через sem_buildid()). Эта функция создает уникальный ID (используя индекс дескриптора набора семафоров), который и возвращается в вызывающую программу.




- Начало -  - Назад -  - Вперед -