void usb_freemem(usbd_bus_handle bus, usb_dma_t *p) { struct usb_frag_dma *f; int s; if (p->block->fullblock) { DPRINTFN(1, ("usb_freemem: large free\n")); usb_block_freemem(p->block); return; } f = KERNADDR(p, 0); f->block = p->block; f->offs = p->offs; s = splusb(); LIST_INSERT_HEAD(&usb_frag_freelist, f, next); splx(s); DPRINTFN(5, ("usb_freemem: frag=%p\n", f)); }
void usb_freemem(usbd_bus_handle bus, usb_dma_t *p) { struct usb_frag_dma *f; if (p->block->fullblock) { DPRINTFN(1, ("usb_freemem: large free\n")); usb_block_freemem(p->block); logmemory(free_full, p, bus, (size_t)0, (size_t)0); return; } logmemory(free_frag, p, bus, (size_t)0, (size_t)0); f = KERNADDR(p, 0); f->block = p->block; f->offs = p->offs; crit_enter(); LIST_INSERT_HEAD(&usb_frag_freelist, f, next); crit_exit(); DPRINTFN(5, ("usb_freemem: frag=%p\n", f)); }