Lines Matching refs:blockpool

31 /*$FreeBSD: releng/10.2/sys/dev/vxge/vxgehal/vxgehal-blockpool.c 221167 2011-04-28 14:33:15Z gnn $*/
38 * @blockpool: Block pool to be created.
49 __hal_blockpool_t *blockpool,
72 "blockpool = 0x"VXGE_OS_STXFMT", pool_size = %d, pool_incr = %d, "
73 "pool_min = %d, pool_max = %d", (ptr_t) devh, (ptr_t) blockpool,
76 if (blockpool == NULL) {
78 "%s:%d null pointer passed. blockpool is null",
85 blockpool->hldev = devh;
86 blockpool->block_size = VXGE_OS_HOST_PAGE_SIZE;
87 blockpool->pool_size = 0;
88 blockpool->pool_incr = pool_incr;
89 blockpool->pool_min = pool_min;
90 blockpool->pool_max = pool_max;
91 blockpool->req_out = 0;
94 blockpool->dma_flags = VXGE_OS_DMA_CONSISTENT;
96 blockpool->dma_flags = VXGE_OS_DMA_STREAMING;
99 vxge_list_init(&blockpool->free_block_list);
101 vxge_list_init(&blockpool->free_entry_list);
104 vxge_os_spin_lock_init(&blockpool->pool_lock, hldev->header.pdev);
106 vxge_os_spin_lock_init_irq(&blockpool->pool_lock, hldev->header.irqh);
115 __hal_blockpool_destroy(blockpool);
124 vxge_list_insert(&entry->item, &blockpool->free_entry_list);
132 blockpool->dma_flags,
137 __hal_blockpool_destroy(blockpool);
151 blockpool->dma_flags);
157 blockpool->dma_flags,
160 __hal_blockpool_destroy(blockpool);
170 vxge_list_first_get(&blockpool->free_entry_list);
186 &blockpool->free_block_list);
187 blockpool->pool_size++;
189 __hal_blockpool_destroy(blockpool);
200 blockpool->block_size, blockpool->pool_size);
210 * @blockpool: blockpool to be deallocated
218 __hal_blockpool_t *blockpool)
223 vxge_assert(blockpool != NULL);
225 hldev = (__hal_device_t *) blockpool->hldev;
230 vxge_hal_trace_log_pool("blockpool = 0x"VXGE_OS_STXFMT,
231 (ptr_t) blockpool);
233 if (blockpool == NULL) {
235 "%s:%d null pointer passed blockpool = null",
242 vxge_list_for_each_safe(p, n, &blockpool->free_block_list) {
253 blockpool->dma_flags,
262 blockpool->pool_size--;
265 vxge_list_for_each_safe(p, n, &blockpool->free_entry_list) {
275 vxge_os_spin_lock_destroy(&blockpool->pool_lock,
278 vxge_os_spin_lock_destroy_irq(&blockpool->pool_lock,
288 * @blockpool: Block pool.
294 __hal_blockpool_t * blockpool)
299 vxge_assert(blockpool != NULL);
301 hldev = (__hal_device_t *) blockpool->hldev;
306 vxge_hal_trace_log_pool("blockpool = 0x"VXGE_OS_STXFMT,
307 (ptr_t) blockpool);
310 vxge_os_spin_lock(&blockpool->pool_lock);
312 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
314 if ((blockpool->pool_size + blockpool->req_out) <
315 blockpool->pool_min) {
316 nreq = blockpool->pool_incr;
317 blockpool->req_out += nreq;
321 vxge_os_spin_unlock(&blockpool->pool_lock);
323 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
328 ((__hal_device_t *) blockpool->hldev)->header.pdev,
329 blockpool->hldev,
331 blockpool->dma_flags);
340 * @blockpool: Block pool.
346 __hal_blockpool_t * blockpool)
351 vxge_assert(blockpool != NULL);
353 hldev = (__hal_device_t *) blockpool->hldev;
358 vxge_hal_trace_log_pool("blockpool = 0x"VXGE_OS_STXFMT,
359 (ptr_t) blockpool);
362 vxge_os_spin_lock(&blockpool->pool_lock);
364 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
366 vxge_list_for_each_safe(p, n, &blockpool->free_block_list) {
368 if (blockpool->pool_size < blockpool->pool_max)
372 ((__hal_device_t *) blockpool->hldev)->header.pdev,
379 ((__hal_device_t *) blockpool->hldev)->header.pdev,
382 blockpool->dma_flags,
388 vxge_list_insert(p, &blockpool->free_entry_list);
390 blockpool->pool_size--;
395 vxge_os_spin_unlock(&blockpool->pool_lock);
397 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
422 __hal_blockpool_t *blockpool;
441 blockpool = &hldev->block_pool;
445 vxge_os_spin_lock(&blockpool->pool_lock);
447 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
449 blockpool->req_out--;
452 vxge_os_spin_unlock(&blockpool->pool_lock);
454 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
466 blockpool->dma_flags);
472 blockpool->dma_flags,
476 vxge_os_spin_lock(&blockpool->pool_lock);
478 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
480 blockpool->req_out--;
483 vxge_os_spin_unlock(&blockpool->pool_lock);
485 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
493 vxge_os_spin_lock(&blockpool->pool_lock);
495 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
499 vxge_list_first_get(&blockpool->free_entry_list);
515 vxge_list_insert(&entry->item, &blockpool->free_block_list);
516 blockpool->pool_size++;
522 blockpool->req_out--;
524 req_out = blockpool->req_out;
527 vxge_os_spin_unlock(&blockpool->pool_lock);
529 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
559 __hal_blockpool_t *blockpool;
576 blockpool = &((__hal_device_t *) devh)->block_pool;
578 if (size != blockpool->block_size) {
583 blockpool->dma_flags |
601 blockpool->dma_flags);
607 blockpool->dma_flags |
622 vxge_os_spin_lock(&blockpool->pool_lock);
624 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
628 vxge_list_first_get(&blockpool->free_block_list);
638 &blockpool->free_entry_list);
639 blockpool->pool_size--;
643 vxge_os_spin_unlock(&blockpool->pool_lock);
645 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
649 __hal_blockpool_blocks_add(blockpool);
670 * Frees the memory allocated with __hal_blockpool_malloc to blockpool or system
681 __hal_blockpool_t *blockpool;
697 blockpool = &((__hal_device_t *) devh)->block_pool;
699 if (size != blockpool->block_size) {
710 blockpool->dma_flags |
716 vxge_os_spin_lock(&blockpool->pool_lock);
718 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
722 vxge_list_first_get(&blockpool->free_entry_list);
739 &blockpool->free_block_list);
740 blockpool->pool_size++;
747 vxge_os_spin_unlock(&blockpool->pool_lock);
749 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
752 __hal_blockpool_blocks_remove(blockpool);
773 __hal_blockpool_t *blockpool;
785 blockpool = &((__hal_device_t *) devh)->block_pool;
787 if (size == blockpool->block_size) {
789 vxge_os_spin_lock(&blockpool->pool_lock);
791 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
795 vxge_list_first_get(&blockpool->free_block_list);
799 blockpool->pool_size--;
803 vxge_os_spin_unlock(&blockpool->pool_lock);
805 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
810 __hal_blockpool_blocks_add(blockpool);
831 __hal_blockpool_t *blockpool;
844 blockpool = &((__hal_device_t *) devh)->block_pool;
846 if (entry->length == blockpool->block_size) {
848 vxge_os_spin_lock(&blockpool->pool_lock);
850 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
853 vxge_list_insert(&entry->item, &blockpool->free_block_list);
854 blockpool->pool_size++;
857 vxge_os_spin_unlock(&blockpool->pool_lock);
859 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
863 __hal_blockpool_blocks_remove(blockpool);
886 __hal_blockpool_t *blockpool;
901 blockpool = &((__hal_device_t *) devh)->block_pool;
905 "null pointer passed blockpool = 0x"VXGE_OS_STXFMT", "
906 "blocklist = 0x"VXGE_OS_STXFMT, (ptr_t) blockpool,
914 vxge_os_spin_lock(&blockpool->pool_lock);
916 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
924 vxge_list_first_get(&blockpool->free_block_list);
931 vxge_os_memzero(block_entry->memblock, blockpool->block_size);
935 blockpool->pool_size++;
939 vxge_os_spin_unlock(&blockpool->pool_lock);
941 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
951 __hal_blockpool_list_free(blockpool, blocklist);
957 __hal_blockpool_blocks_add(blockpool);
978 __hal_blockpool_t *blockpool;
992 blockpool = &((__hal_device_t *) devh)->block_pool;
996 "null pointer passed blockpool = 0x"VXGE_OS_STXFMT", "
997 "blocklist = 0x"VXGE_OS_STXFMT, (ptr_t) blockpool,
1005 vxge_os_spin_lock(&blockpool->pool_lock);
1007 vxge_os_spin_lock_irq(&blockpool->pool_lock, flags);
1016 &blockpool->free_block_list);
1018 blockpool->pool_size++;
1022 vxge_os_spin_unlock(&blockpool->pool_lock);
1024 vxge_os_spin_unlock_irq(&blockpool->pool_lock, flags);
1027 __hal_blockpool_blocks_remove(blockpool);