Цитата
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.
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;
}
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;
}
Как бы покрасивше поправить такое поведение?