Код
struct pbuf *q, *pq;
char* ptr;
. . .
ptr = pq->payload;
for(q = p; q != NULL; q = q->next) {
memcpy(ptr, q->payload, q->len);
ptr += q->len;
}
. . .
char* ptr;
. . .
ptr = pq->payload;
for(q = p; q != NULL; q = q->next) {
memcpy(ptr, q->payload, q->len);
ptr += q->len;
}
. . .
Данный код используется в LwIP для расположения содержимого буферов в памяти последовательно. На его выполнение затрачивается почти половина всего времени отправки UDP-пакета (0.14мс / 0.31мс). Для каждого пакета по 1484Б происходит две итерации.
Возможно ли ускорить это действие (DMA) или как-нибудь обойти (например, заранее располагая буферы в памяти в нужном порядке) ? Спасибо.
Железо: DK-NIOS-2S60N (StratixII), стандартная сборка Nios - Full featured.