/* Methods that maintains DMAable pools according to user allocations. New pools are created on the fly when a new pool id is provided. They are deleted on the fly when they get emptied.  */
static void* ___get_dma_mem_cluster(m_pool_p mp)
/* Methods that maintains DMAable pools according to user allocations. New pools are created on the fly when a new pool id is provided. They are deleted on the fly when they get emptied.  */
static void* ___get_dma_mem_cluster(m_pool_p mp)
{
	m_vtob_p vbp;
	void *vaddr;
	vbp = __sym_calloc(&mp0, sizeof(*vbp), "VTOB");
	if (!vbp)
		goto out_err;
	vaddr = sym_m_get_dma_mem_cluster(mp, vbp);
	if (vaddr) {
		int hc = VTOB_HASH_CODE(vaddr);
		vbp->next = mp->vtob[hc];
		mp->vtob[hc] = vbp;
		++mp->nump;
	}
	return vaddr;
out_err:
	return NULL;
}