MCPcopy Create free account
hub / github.com/F-Stack/f-stack / m_checkalignment

Function m_checkalignment

freebsd/netipsec/ipsec_mbuf.c:313–345  ·  view source on GitHub ↗

* Diagnostic routine to check mbuf alignment as required by the * crypto device drivers (that use DMA). */

Source from the content-addressed store, hash-verified

311 * crypto device drivers (that use DMA).
312 */
313void
314m_checkalignment(const char* where, struct mbuf *m0, int off, int len)
315{
316 int roff;
317 struct mbuf *m = m_getptr(m0, off, &roff);
318 caddr_t addr;
319
320 if (m == NULL)
321 return;
322 printf("%s (off %u len %u): ", where, off, len);
323 addr = mtod(m, caddr_t) + roff;
324 do {
325 int mlen;
326
327 if (((uintptr_t) addr) & 3) {
328 printf("addr misaligned %p,", addr);
329 break;
330 }
331 mlen = m->m_len;
332 if (mlen > len)
333 mlen = len;
334 len -= mlen;
335 if (len && (mlen & 3)) {
336 printf("len mismatch %u,", mlen);
337 break;
338 }
339 m = m->m_next;
340 addr = m ? mtod(m, caddr_t) : NULL;
341 } while (m && len > 0);
342 for (m = m0; m; m = m->m_next)
343 printf(" [%p:%u]", mtod(m, caddr_t), m->m_len);
344 printf("\n");
345}

Callers

nothing calls this directly

Calls 2

m_getptrFunction · 0.85
printfFunction · 0.50

Tested by

no test coverage detected