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

Newque()


Функция newque() размещает в памяти новый дескриптор очереди сообщений () и вызывает , которая резервирует элемент массива очередей сообщений за новым дескриптором. Дескриптор очереди сообщений инициализируется следующим образом:

  • Инициализируется структура .
  • В поля q_stime и q_rtime

    дескриптора заносится число 0. В поле q_ctime

    заносится CURRENT_TIME.

  • Максимальный размер очереди в байтах (q_qbytes) устанавливается равным MSGMNB, текущий размер очереди в байтах (q_cbytes) устанавливается равным нулю.
  • Очередь ожидающих сообщений (q_messages), очередь ожидания процессов-получателей (q_receivers) и очередь ожидания процессов-отправителей (q_senders) объявляются пустыми.
  • Все действия, следующие за вызовом , выполняются под глобальной блокировкой очереди сообщений. После снятия блокировки вызывается msg_buildid(), которая является отображением . Функция возвращает уникальный ID очереди сообщений, построенный на основе индекса дескриптора. Результатом работы newque() является ID очереди.



    Содержание раздела