Lines Matching refs:pool

7 kstat_t krhino_mblk_pool_init(mblk_pool_t *pool, const name_t *name,  in krhino_mblk_pool_init()  argument
14 NULL_PARA_CHK(pool); in krhino_mblk_pool_init()
31 krhino_spin_lock_init(&pool->blk_lock); in krhino_mblk_pool_init()
33 pool->pool_name = name; in krhino_mblk_pool_init()
34 pool->pool_start = (uintptr_t)pool_start; in krhino_mblk_pool_init()
35 pool->pool_end = (uintptr_t)(pool_start + pool_size); in krhino_mblk_pool_init()
36 pool->slice_cnt = 0; in krhino_mblk_pool_init()
38 memset(pool->slice_type, 0, sizeof(pool->slice_type)); in krhino_mblk_pool_init()
41 blk_list = &pool->blk_list[blk_type]; in krhino_mblk_pool_init()
46 TRACE_MBLK_POOL_CREATE(krhino_cur_task_get(), pool); in krhino_mblk_pool_init()
51 void *krhino_mblk_alloc_nolock(mblk_pool_t *pool, uint32_t size) in krhino_mblk_alloc_nolock() argument
57 if (pool == NULL) { in krhino_mblk_alloc_nolock()
66 blk_list = &(pool->blk_list[blk_type]); in krhino_mblk_alloc_nolock()
77 if (pool->slice_cnt == MM_BLK_SLICE_NUM) { in krhino_mblk_alloc_nolock()
83 blk_list->slice_addr = pool->pool_start + pool->slice_cnt * MM_BLK_SLICE_SIZE; in krhino_mblk_alloc_nolock()
84 pool->slice_type[pool->slice_cnt] = blk_type; in krhino_mblk_alloc_nolock()
86 pool->slice_cnt++; in krhino_mblk_alloc_nolock()
103 kstat_t krhino_mblk_free_nolock(mblk_pool_t *pool, void *blk) in krhino_mblk_free_nolock() argument
109 NULL_PARA_CHK(pool); in krhino_mblk_free_nolock()
112 slice_idx = ((uintptr_t)blk - pool->pool_start) >> MM_BLK_SLICE_BIT; in krhino_mblk_free_nolock()
117 blk_type = pool->slice_type[slice_idx]; in krhino_mblk_free_nolock()
122 blk_list = &(pool->blk_list[blk_type]); in krhino_mblk_free_nolock()
132 kstat_t krhino_mblk_info_nolock(mblk_pool_t *pool, mblk_info_t *info) in krhino_mblk_info_nolock() argument
140 NULL_PARA_CHK(pool); in krhino_mblk_info_nolock()
146 blk_list = &(pool->blk_list[idx]); in krhino_mblk_info_nolock()
154 info->pool_name = pool->pool_name; in krhino_mblk_info_nolock()
155 info->pool_size = pool->pool_end - pool->pool_start; in krhino_mblk_info_nolock()
163 void *krhino_mblk_alloc(mblk_pool_t *pool, uint32_t size) in krhino_mblk_alloc() argument
168 if (pool == NULL) { in krhino_mblk_alloc()
172 krhino_spin_lock_irq_save(&pool->blk_lock, flags_cpsr); in krhino_mblk_alloc()
174 avail_blk = (uintptr_t)krhino_mblk_alloc_nolock(pool, size); in krhino_mblk_alloc()
176 krhino_spin_unlock_irq_restore(&pool->blk_lock, flags_cpsr); in krhino_mblk_alloc()
181 kstat_t krhino_mblk_free(mblk_pool_t *pool, void *blk) in krhino_mblk_free() argument
186 NULL_PARA_CHK(pool); in krhino_mblk_free()
189 krhino_spin_lock_irq_save(&pool->blk_lock, flags_cpsr); in krhino_mblk_free()
191 ret = krhino_mblk_free_nolock(pool, blk); in krhino_mblk_free()
193 krhino_spin_unlock_irq_restore(&pool->blk_lock, flags_cpsr); in krhino_mblk_free()
198 kstat_t krhino_mblk_info(mblk_pool_t *pool, mblk_info_t *info) in krhino_mblk_info() argument
203 NULL_PARA_CHK(pool); in krhino_mblk_info()
206 krhino_spin_lock_irq_save(&pool->blk_lock, flags_cpsr); in krhino_mblk_info()
208 ret = krhino_mblk_info_nolock(pool, info); in krhino_mblk_info()
210 krhino_spin_unlock_irq_restore(&pool->blk_lock, flags_cpsr); in krhino_mblk_info()