Как очистить/сбросить буфер очереди сообщений в VxWorks?

Я хотел бы знать, есть ли способ сбросить все сообщения, которые передаются по конвейеру на 1 msgQId?????


person Pratik    schedule 27.07.2012    source источник


Ответы (1)


Не существует встроенного API для удаления всех сообщений из очереди сообщений.
Если все, что вы хотите сделать, это удалить все сообщения из очереди, вот быстрый способ сделать это:

void discardQMessages(MSG_Q_ID id) {
  while(
        msgQReceive(id, NULL, 0, NO_WAIT) != ERROR
       )    ;

  if {errno != S_objLib_OBJ_UNAVAILABLE)
     /* Uh oh... got some problem */
}

Вы должны всегда проверять errno, когда получаете сообщение об ошибке при любом вызове OS API.

person Benoit    schedule 27.07.2012
comment
Спасибо за вашу информацию. я тоже думал только в этом ключе. - person Pratik; 30.07.2012