Функция mq_getattr

Функция mq_getattr

В листинге 5.22 приведен текст функции mq_getattr, которая возвращает текущее значение атрибутов очереди.

Листинг 5.22. Функция mq_getattr

//my_pxmsg_mmap/mq_getattr.с

1  #include "unpipc.h"

2  #include "mqueue.h"

3  int

4  mymq_getattr(mymqd_t mqd, struct mymq_attr *mqstat)

5  {

6   int n;

7   struct mymq_hdr *mqhdr;

8   struct mymq_attr *attr;

9   struct mymq_info *mqinfo;

10  mqinfo = mqd;

11  if (mqinfo->mqi_magic != MQI_MAGIC) {

12   errno = EBADF;

13   return(-1);

14  }

15  mqhdr = mqinfo->mqi_hdr;

16  attr = &mqhdr->mqh_attr;

17  if ((n = pthread_mutex_lock(&mqhdr->mqh_lock)) != 0) {

18   errno = n;

19   return (-1);

20  }

21  mqstat->mq_flags = mqinfo->mqi_flags; /* для каждого open */

22  mqstat->mq_maxmsg = attr->mq_maxmsg; /* оставшиеся три – для очереди */

23  mqstat->mq_msgsize = attr->mq_msgsize;

24  mqstat->mq_curmsgs = attr->mq_curmsgs;

25  pthread_mutex_unlock(&mqhdr->mqh_lock);

26  return(0);

27 }

Блокирование взаимного исключения

17-20 Мы должны заблокировать соответствующее взаимное исключение для работы с очередью, в частности для получения атрибутов, поскольку какой-либо другой поток может в это время их изменить.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Функция SUM

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Функция SUM Ваши возможности в подведении итогов не ограничены простым подсчетом записей. Используя функцию SUM, можно генерировать итоговые результаты для всех возвращаемых записей по любым числовым полям. Например, для создания запроса, который генерирует итоги по


Функция uni()

Из книги Fiction Book Designer Краткое руководство автора Автор неизвестен

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Функция uni()

Из книги Fiction Book Designer 3.2. Краткое руководство автора Izekbis

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Функция px_ipc_name

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард


5.3. Функции mq_getattr и mq_setattr

Из книги Технология XSLT автора Валиков Алексей Николаевич

5.3. Функции mq_getattr и mq_setattr У каждой очереди сообщений имеются четыре атрибута, которые могут быть получены функцией mq_getattr и установлены (по отдельности) функцией mq_setattr: #include <mqueue.h>int mq_getattr(mqd_t mqdes, struct mq_attr *attr);int mq_setattr(mqd_t mqdes, const struct mq_attr *attr, struct mq_attr *oattr);/* Обе функции


5.6. Функция mq_notify

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

5.6. Функция mq_notify Один из недостатков очередей сообщений System V, как мы увидим в главе 6, заключается в невозможности уведомить процесс о том, что в очередь было помещено сообщение. Мы можем заблокировать процесс при вызове msgrcv, но тогда мы не сможем выполнять другие действия


Функция signal_rt

Из книги Fiction Book Designer 3.2. Руководство по созданию книг автора

Функция signal_rt В книге [24, с. 120] мы привели пример собственной функции signal, вызывавшей функцию sigaction стандарта Posix для установки обработчика сигнала, обеспечивающего надежную семантику Posix. Изменим эту функцию, чтобы обеспечить поддержку реального времени. Новую функцию мы


Функция mq_open

Из книги Введение в криптографию автора Циммерманн Филипп

Функция mq_open В листинге 5.17 приведен текст первой части функции mq_open, создающей новую очередь сообщений или открывающей существующую.Листинг 5.17. Функция mq_open: первая часть//my_pxmsg._mmap/mq_open. с1  #include "unpipc.h"2  #include "mqueue.h"3  #include <stdarg.h>4  #define MAX_TRIES 105  struct mymq_attr defattr =6   { 0, 128, 1024, 0


Хэш-функция.

Из книги автора

Хэш-функция. Еще одно важное преимущество использования PGP состоит в том, что PGP применяет так называемую «хэш-функцию», которая действует таким образом, что в том случае какого-либо изменения информации, пусть даже на один бит, результат «хэш-функции» будет совершенно


Функция uni()

Из книги автора

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Хэш-функция

Из книги автора

Хэш-функция Однако описанная выше схема имеет ряд существенных недостатков. Она крайне медлительна и производит слишком большой объём данных — по меньшей мере вдвое больше объёма исходной информации. Улучшением такой схемы становится введение в процесс преобразования