Lines Matching refs:dringp

1688 	ldc_dring_t *dringp;  in ldc_mem_dring_create()  local
1713 dringp = kmem_zalloc(sizeof (ldc_dring_t), KM_SLEEP); in ldc_mem_dring_create()
1716 dringp->length = len; in ldc_mem_dring_create()
1717 dringp->dsize = dsize; in ldc_mem_dring_create()
1720 dringp->size = (size & MMU_PAGEMASK); in ldc_mem_dring_create()
1722 dringp->size += MMU_PAGESIZE; in ldc_mem_dring_create()
1724 dringp->status = LDC_UNBOUND; in ldc_mem_dring_create()
1727 dringp->base = kmem_zalloc(dringp->size, KM_SLEEP); in ldc_mem_dring_create()
1730 mutex_init(&dringp->lock, NULL, MUTEX_DRIVER, NULL); in ldc_mem_dring_create()
1734 dringp->next = ldcssp->dring_list; in ldc_mem_dring_create()
1735 ldcssp->dring_list = dringp; in ldc_mem_dring_create()
1738 *dhandle = (ldc_dring_handle_t)dringp; in ldc_mem_dring_create()
1752 ldc_dring_t *dringp; in ldc_mem_dring_destroy() local
1762 dringp = (ldc_dring_t *)dhandle; in ldc_mem_dring_destroy()
1764 if (dringp->status == LDC_BOUND) { in ldc_mem_dring_destroy()
1770 mutex_enter(&dringp->lock); in ldc_mem_dring_destroy()
1775 if (tmp_dringp == dringp) { in ldc_mem_dring_destroy()
1776 ldcssp->dring_list = dringp->next; in ldc_mem_dring_destroy()
1777 dringp->next = NULL; in ldc_mem_dring_destroy()
1781 if (tmp_dringp->next == dringp) { in ldc_mem_dring_destroy()
1782 tmp_dringp->next = dringp->next; in ldc_mem_dring_destroy()
1783 dringp->next = NULL; in ldc_mem_dring_destroy()
1792 mutex_exit(&dringp->lock); in ldc_mem_dring_destroy()
1800 kmem_free(dringp->base, dringp->size); in ldc_mem_dring_destroy()
1802 mutex_exit(&dringp->lock); in ldc_mem_dring_destroy()
1805 mutex_destroy(&dringp->lock); in ldc_mem_dring_destroy()
1808 kmem_free(dringp, sizeof (ldc_dring_t)); in ldc_mem_dring_destroy()
1826 ldc_dring_t *dringp; in ldc_mem_dring_bind() local
1842 dringp = (ldc_dring_t *)dhandle; in ldc_mem_dring_bind()
1861 mutex_enter(&dringp->lock); in ldc_mem_dring_bind()
1863 if (dringp->status == LDC_BOUND) { in ldc_mem_dring_bind()
1867 mutex_exit(&dringp->lock); in ldc_mem_dring_bind()
1874 mutex_exit(&dringp->lock); in ldc_mem_dring_bind()
1880 mutex_exit(&dringp->lock); in ldc_mem_dring_bind()
1884 dringp->ldcp = ldcp; in ldc_mem_dring_bind()
1892 mutex_exit(&dringp->lock); in ldc_mem_dring_bind()
1895 dringp->mhdl = mhandle; in ldc_mem_dring_bind()
1898 err = i_ldc_mem_bind_handle(mhandle, dringp->base, dringp->size, in ldc_mem_dring_bind()
1904 mutex_exit(&dringp->lock); in ldc_mem_dring_bind()
1916 dringp->ldcp = NULL; in ldc_mem_dring_bind()
1917 dringp->mhdl = NULL; in ldc_mem_dring_bind()
1920 mutex_exit(&dringp->lock); in ldc_mem_dring_bind()
1926 dringp->ch_next = ldcp->exp_dring_list; in ldc_mem_dring_bind()
1927 ldcp->exp_dring_list = dringp; in ldc_mem_dring_bind()
1930 dringp->status = LDC_BOUND; in ldc_mem_dring_bind()
1932 mutex_exit(&dringp->lock); in ldc_mem_dring_bind()
1944 ldc_dring_t *dringp; in ldc_mem_dring_nextcookie() local
1952 dringp = (ldc_dring_t *)dhandle; in ldc_mem_dring_nextcookie()
1953 mutex_enter(&dringp->lock); in ldc_mem_dring_nextcookie()
1955 if (dringp->status != LDC_BOUND) { in ldc_mem_dring_nextcookie()
1958 "is not bound\n", dringp); in ldc_mem_dring_nextcookie()
1959 mutex_exit(&dringp->lock); in ldc_mem_dring_nextcookie()
1963 ldcp = dringp->ldcp; in ldc_mem_dring_nextcookie()
1969 mutex_exit(&dringp->lock); in ldc_mem_dring_nextcookie()
1973 rv = ldc_mem_nextcookie((ldc_mem_handle_t)dringp->mhdl, cookie); in ldc_mem_dring_nextcookie()
1974 mutex_exit(&dringp->lock); in ldc_mem_dring_nextcookie()
1985 ldc_dring_t *dringp; in ldc_mem_dring_unbind() local
1994 dringp = (ldc_dring_t *)dhandle; in ldc_mem_dring_unbind()
1996 mutex_enter(&dringp->lock); in ldc_mem_dring_unbind()
1998 if (dringp->status == LDC_UNBOUND) { in ldc_mem_dring_unbind()
2001 dringp); in ldc_mem_dring_unbind()
2002 mutex_exit(&dringp->lock); in ldc_mem_dring_unbind()
2005 ldcp = dringp->ldcp; in ldc_mem_dring_unbind()
2010 if (tmp_dringp == dringp) { in ldc_mem_dring_unbind()
2011 ldcp->exp_dring_list = dringp->ch_next; in ldc_mem_dring_unbind()
2012 dringp->ch_next = NULL; in ldc_mem_dring_unbind()
2016 if (tmp_dringp->ch_next == dringp) { in ldc_mem_dring_unbind()
2017 tmp_dringp->ch_next = dringp->ch_next; in ldc_mem_dring_unbind()
2018 dringp->ch_next = NULL; in ldc_mem_dring_unbind()
2027 mutex_exit(&dringp->lock); in ldc_mem_dring_unbind()
2034 (void) ldc_mem_unbind_handle((ldc_mem_handle_t)dringp->mhdl); in ldc_mem_dring_unbind()
2035 (void) ldc_mem_free_handle((ldc_mem_handle_t)dringp->mhdl); in ldc_mem_dring_unbind()
2037 dringp->ldcp = NULL; in ldc_mem_dring_unbind()
2038 dringp->mhdl = NULL; in ldc_mem_dring_unbind()
2039 dringp->status = LDC_UNBOUND; in ldc_mem_dring_unbind()
2041 mutex_exit(&dringp->lock); in ldc_mem_dring_unbind()
2124 ldc_dring_t *dringp; in ldc_mem_dring_info() local
2132 dringp = (ldc_dring_t *)dhandle; in ldc_mem_dring_info()
2134 mutex_enter(&dringp->lock); in ldc_mem_dring_info()
2136 if (dringp->mhdl) { in ldc_mem_dring_info()
2137 rv = ldc_mem_info(dringp->mhdl, minfo); in ldc_mem_dring_info()
2141 mutex_exit(&dringp->lock); in ldc_mem_dring_info()
2145 minfo->vaddr = dringp->base; in ldc_mem_dring_info()
2147 minfo->status = dringp->status; in ldc_mem_dring_info()
2150 mutex_exit(&dringp->lock); in ldc_mem_dring_info()
2169 ldc_dring_t *dringp; in ldc_mem_dring_map() local
2217 dringp = kmem_zalloc(sizeof (ldc_dring_t), KM_SLEEP); in ldc_mem_dring_map()
2224 dringp->length = len; in ldc_mem_dring_map()
2225 dringp->dsize = dsize; in ldc_mem_dring_map()
2229 dringp->size = (dring_size & MMU_PAGEMASK); in ldc_mem_dring_map()
2231 dringp->size += MMU_PAGESIZE; in ldc_mem_dring_map()
2233 dringp->ldcp = ldcp; in ldc_mem_dring_map()
2241 kmem_free(dringp, sizeof (ldc_dring_t)); in ldc_mem_dring_map()
2245 dringp->mhdl = mhandle; in ldc_mem_dring_map()
2246 dringp->base = NULL; in ldc_mem_dring_map()
2250 &(dringp->base), NULL); in ldc_mem_dring_map()
2251 if (err || dringp->base == NULL) { in ldc_mem_dring_map()
2255 kmem_free(dringp, sizeof (ldc_dring_t)); in ldc_mem_dring_map()
2260 mutex_init(&dringp->lock, NULL, MUTEX_DRIVER, NULL); in ldc_mem_dring_map()
2264 dringp->ch_next = ldcp->imp_dring_list; in ldc_mem_dring_map()
2265 ldcp->imp_dring_list = dringp; in ldc_mem_dring_map()
2268 dringp->status = LDC_MAPPED; in ldc_mem_dring_map()
2270 *dhandle = (ldc_dring_handle_t)dringp; in ldc_mem_dring_map()
2281 ldc_dring_t *dringp; in ldc_mem_dring_unmap() local
2290 dringp = (ldc_dring_t *)dhandle; in ldc_mem_dring_unmap()
2292 if (dringp->status != LDC_MAPPED) { in ldc_mem_dring_unmap()
2298 mutex_enter(&dringp->lock); in ldc_mem_dring_unmap()
2300 ldcp = dringp->ldcp; in ldc_mem_dring_unmap()
2306 if (tmp_dringp == dringp) { in ldc_mem_dring_unmap()
2307 ldcp->imp_dring_list = dringp->ch_next; in ldc_mem_dring_unmap()
2308 dringp->ch_next = NULL; in ldc_mem_dring_unmap()
2312 if (tmp_dringp->ch_next == dringp) { in ldc_mem_dring_unmap()
2313 tmp_dringp->ch_next = dringp->ch_next; in ldc_mem_dring_unmap()
2314 dringp->ch_next = NULL; in ldc_mem_dring_unmap()
2323 mutex_exit(&dringp->lock); in ldc_mem_dring_unmap()
2331 (void) ldc_mem_unmap(dringp->mhdl); in ldc_mem_dring_unmap()
2332 (void) ldc_mem_free_handle((ldc_mem_handle_t)dringp->mhdl); in ldc_mem_dring_unmap()
2334 dringp->status = 0; in ldc_mem_dring_unmap()
2335 dringp->ldcp = NULL; in ldc_mem_dring_unmap()
2337 mutex_exit(&dringp->lock); in ldc_mem_dring_unmap()
2340 mutex_destroy(&dringp->lock); in ldc_mem_dring_unmap()
2343 kmem_free(dringp, sizeof (ldc_dring_t)); in ldc_mem_dring_unmap()
2360 ldc_dring_t *dringp; in i_ldc_dring_acquire_release() local
2371 dringp = (ldc_dring_t *)dhandle; in i_ldc_dring_acquire_release()
2372 mutex_enter(&dringp->lock); in i_ldc_dring_acquire_release()
2374 if (dringp->status != LDC_MAPPED || dringp->ldcp == NULL) { in i_ldc_dring_acquire_release()
2377 mutex_exit(&dringp->lock); in i_ldc_dring_acquire_release()
2381 if (start >= dringp->length || end >= dringp->length) { in i_ldc_dring_acquire_release()
2384 mutex_exit(&dringp->lock); in i_ldc_dring_acquire_release()
2388 mhdl = (ldc_mhdl_t *)dringp->mhdl; in i_ldc_dring_acquire_release()
2392 mutex_exit(&dringp->lock); in i_ldc_dring_acquire_release()
2400 mutex_exit(&dringp->lock); in i_ldc_dring_acquire_release()
2405 ldcp = dringp->ldcp; in i_ldc_dring_acquire_release()
2407 copy_size = (start <= end) ? (((end - start) + 1) * dringp->dsize) : in i_ldc_dring_acquire_release()
2408 ((dringp->length - start) * dringp->dsize); in i_ldc_dring_acquire_release()
2411 soff = (start * dringp->dsize); in i_ldc_dring_acquire_release()
2416 err = i_ldc_mem_acquire_release((ldc_mem_handle_t)dringp->mhdl, in i_ldc_dring_acquire_release()
2421 mutex_exit(&dringp->lock); in i_ldc_dring_acquire_release()
2427 copy_size = ((end + 1) * dringp->dsize); in i_ldc_dring_acquire_release()
2433 err = i_ldc_mem_acquire_release((ldc_mem_handle_t)dringp->mhdl, in i_ldc_dring_acquire_release()
2438 mutex_exit(&dringp->lock); in i_ldc_dring_acquire_release()
2443 mutex_exit(&dringp->lock); in i_ldc_dring_acquire_release()