реклама на сайте
подробности

 
 
> TNKernel, TN_DQUE с размером очереди 0
kosyak©
сообщение Jun 22 2013, 09:13
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



В доке к TNKernel (правда для версии 2.3) написано:

Цитата
int tn_queue_create (TN_DQUE * dque, void ** data_fifo, int num_entries )
Parameters:
dque Pointer to already allocated TN_DQUE structure of data queue to be created
data_fifo Pointer to already existing array to store data queue entries.
Each array element size equates sizeof (void*). data_fifo can be NULL.
num_entries Capacity of the data queue (max number of entries). Can be 0.


Создаю очередь с параметрами tn_queue_create(&queue, NULL, 0).
Отключаю макрос TN_CHECK_PARAM.
И падаю в ХардФаулт при вызове tn_queue_send_polling(&queue, (void*)123),

Код
//---------------------------------------------------------------------------
int  dque_fifo_write(TN_DQUE * dque, void * data_ptr)
{
   register int flag;

#if TN_CHECK_PARAM
   if(dque == NULL)
      return TERR_WRONG_PARAM;
   if(dque->num_entries <= 0)
      return TERR_OUT_OF_MEM;
#endif

   flag = ((dque->tail_cnt == 0 && dque->header_cnt == dque->num_entries - 1)
             || dque->header_cnt == dque->tail_cnt-1);
   if(flag)
      return  TERR_OVERFLOW;  //--  full

   //-- wr  data
   ------------падает ессно здесь-------------------
   dque->data_fifo[dque->header_cnt] = data_ptr;
   dque->header_cnt++;
   if(dque->header_cnt >= dque->num_entries)
      dque->header_cnt = 0;
   return TERR_NO_ERR;
}



Как бы покрасивше поправить такое поведение?


Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01331 секунд с 7
ELECTRONIX ©2004-2016