Home
last modified time | relevance | path

Searched full:heap (Results 1 – 25 of 167) sorted by relevance

1234567

/linux/Documentation/core-api/
H A Dmin_heap.rst4 Min Heap API
12 The Min Heap API provides a set of functions and macros for managing min-heaps
13 in the Linux kernel. A min-heap is a binary tree structure where the value of
17 This document provides a guide to the Min Heap API, detailing how to define and
36 Min-Heap Definition
39 The core data structure for representing a min-heap is defined using the
41 you to define a min-heap with a preallocated buffer or dynamically allocated
50 size_t nr; /* Number of elements in the heap */
52 _type *data; /* Pointer to the heap data */
58 A typical heap structure will include a counter for the number of elements
[all …]
/linux/fs/ubifs/
H A Dlprops.c22 * get_heap_comp_val - get the LEB properties value for heap comparisons.
39 * move_up_lpt_heap - move a new heap entry up as far as possible.
41 * @heap: LEB category heap
45 * New entries to a heap are added at the bottom and then moved up until the
50 static void move_up_lpt_heap(struct ubifs_info *c, struct ubifs_lpt_heap *heap, in move_up_lpt_heap() argument
57 return; /* Already top of the heap */ in move_up_lpt_heap()
59 /* Compare to parent and, if greater, move up the heap */ in move_up_lpt_heap()
63 val2 = get_heap_comp_val(heap->arr[ppos], cat); in move_up_lpt_heap()
67 heap->arr[ppos]->hpos = hpos; in move_up_lpt_heap()
68 heap->arr[hpos] = heap->arr[ppos]; in move_up_lpt_heap()
[all …]
H A Dfind.c45 struct ubifs_lpt_heap *heap; in valuable() local
51 heap = &c->lpt_heap[cat - 1]; in valuable()
52 if (heap->cnt < heap->max_cnt) in valuable()
130 struct ubifs_lpt_heap *heap; in scan_for_dirty() local
134 /* There may be an LEB with enough dirty space on the free heap */ in scan_for_dirty()
135 heap = &c->lpt_heap[LPROPS_FREE - 1]; in scan_for_dirty()
136 for (i = 0; i < heap->cnt; i++) { in scan_for_dirty()
137 lprops = heap->arr[i]; in scan_for_dirty()
145 * A LEB may have fallen off of the bottom of the dirty heap, and ended in scan_for_dirty()
199 * dirty index heap, and it falls-back to LPT scanning if the heaps are empty
[all …]
/linux/drivers/accel/amdxdna/
H A Damdxdna_gem.c28 * The dev BO could be across multiple heap BO chunks. The heap chunks should
37 struct amdxdna_gem_obj *heap; in amdxdna_init_dev_bo() local
42 XDNA_DBG(xdna, "Empty heap xa"); in amdxdna_init_dev_bo()
47 heap = xa_load(&client->dev_heap_xa, heap_id); in amdxdna_init_dev_bo()
48 if (!heap) { in amdxdna_init_dev_bo()
49 XDNA_ERR(xdna, "Failed to load heap %d", heap_id); in amdxdna_init_dev_bo()
52 heap_addr = amdxdna_gem_dev_addr(heap); in amdxdna_init_dev_bo()
58 heap = xa_load(&client->dev_heap_xa, heap_id); in amdxdna_init_dev_bo()
59 exp_heap_uva = amdxdna_gem_uva(heap); in amdxdna_init_dev_bo()
60 heap_addr = amdxdna_gem_dev_addr(heap); in amdxdna_init_dev_bo()
[all …]
H A Daie2_ctx.c109 struct amdxdna_gem_obj *heap = hwctx->priv->heap; in aie2_hwctx_restart() local
120 amdxdna_obj_dma_addr(heap), in aie2_hwctx_restart()
121 heap->mem.size); in aie2_hwctx_restart()
127 xa_for_each_range(&hwctx->client->dev_heap_xa, heap_id, heap, 1, in aie2_hwctx_restart()
130 amdxdna_obj_dma_addr(heap), in aie2_hwctx_restart()
131 heap->mem.size); in aie2_hwctx_restart()
133 XDNA_ERR(xdna, "Add heap %ld failed ret %d", heap_id, ret); in aie2_hwctx_restart()
678 struct amdxdna_gem_obj *heap; in aie2_hwctx_init() local
687 heap = xa_load(&client->dev_heap_xa, 0); in aie2_hwctx_init()
688 if (!heap) { in aie2_hwctx_init()
[all …]
H A Damdxdna_ctx.c67 struct amdxdna_gem_obj *heap; in amdxdna_hwctx_release_expanded_heap() local
72 xa_for_each_range(&client->dev_heap_xa, heap_id, heap, 1, in amdxdna_hwctx_release_expanded_heap()
74 amdxdna_gem_unpin(heap); in amdxdna_hwctx_release_expanded_heap()
75 drm_gem_object_put(to_gobj(heap)); in amdxdna_hwctx_release_expanded_heap()
458 struct amdxdna_gem_obj *heap; in amdxdna_hwctx_expand_heap() local
466 xa_for_each_range(&client->dev_heap_xa, heap_id, heap, in amdxdna_hwctx_expand_heap()
468 drm_gem_object_get(to_gobj(heap)); in amdxdna_hwctx_expand_heap()
469 ret = amdxdna_gem_pin(heap); in amdxdna_hwctx_expand_heap()
471 drm_gem_object_put(to_gobj(heap)); in amdxdna_hwctx_expand_heap()
475 ret = xdna->dev_info->ops->hwctx_heap_expand(hwctx, heap); in amdxdna_hwctx_expand_heap()
[all …]
/linux/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/
H A Dbase.c255 nvkm_mmu_type(struct nvkm_mmu *mmu, int heap, u8 type) in nvkm_mmu_type() argument
257 if (heap >= 0 && !WARN_ON(mmu->type_nr == ARRAY_SIZE(mmu->type))) { in nvkm_mmu_type()
258 mmu->type[mmu->type_nr].type = type | mmu->heap[heap].type; in nvkm_mmu_type()
259 mmu->type[mmu->type_nr].heap = heap; in nvkm_mmu_type()
268 if (!WARN_ON(mmu->heap_nr == ARRAY_SIZE(mmu->heap))) { in nvkm_mmu_heap()
269 mmu->heap[mmu->heap_nr].type = type; in nvkm_mmu_heap()
270 mmu->heap[mmu->heap_nr].size = size; in nvkm_mmu_heap()
282 int heap; in nvkm_mmu_host() local
285 heap = nvkm_mmu_heap(mmu, NVKM_MEM_HOST, ~0ULL); in nvkm_mmu_host()
286 nvkm_mmu_type(mmu, heap, type); in nvkm_mmu_host()
[all …]
/linux/drivers/tee/
H A Dtee_heap.c7 #include <linux/dma-heap.h>
18 struct dma_heap *heap; member
29 struct tee_dma_heap *heap; member
153 buf->heap->pool->ops->free(buf->heap->pool, &buf->table); in tee_heap_buf_free()
154 mutex_lock(&buf->heap->mu); in tee_heap_buf_free()
155 put_tee_heap(buf->heap); in tee_heap_buf_free()
156 mutex_unlock(&buf->heap->mu); in tee_heap_buf_free()
168 static struct dma_buf *tee_dma_heap_alloc(struct dma_heap *heap, in tee_dma_heap_alloc() argument
172 struct tee_dma_heap *h = dma_heap_get_drvdata(heap); in tee_dma_heap_alloc()
197 buf->heap = h; in tee_dma_heap_alloc()
[all …]
/linux/drivers/gpu/drm/nouveau/include/nvkm/core/
H A Dmm.h12 u8 heap; member
34 int nvkm_mm_init(struct nvkm_mm *, u8 heap, u32 offset, u32 length, u32 block);
36 int nvkm_mm_head(struct nvkm_mm *, u8 heap, u8 type, u32 size_max,
38 int nvkm_mm_tail(struct nvkm_mm *, u8 heap, u8 type, u32 size_max,
44 nvkm_mm_heap_size(struct nvkm_mm *mm, u8 heap) in nvkm_mm_heap_size() argument
49 if (node->heap == heap) in nvkm_mm_heap_size()
/linux/drivers/gpu/drm/nouveau/nvkm/core/
H A Dmm.c99 b->heap = a->heap; in region_head()
111 nvkm_mm_head(struct nvkm_mm *mm, u8 heap, u8 type, u32 size_max, u32 size_min, in nvkm_mm_head() argument
122 if (unlikely(heap != NVKM_MM_HEAP_ANY)) { in nvkm_mm_head()
123 if (this->heap != heap) in nvkm_mm_head()
175 b->heap = a->heap; in region_tail()
186 nvkm_mm_tail(struct nvkm_mm *mm, u8 heap, u8 type, u32 size_max, u32 size_min, in nvkm_mm_tail() argument
198 if (unlikely(heap != NVKM_MM_HEAP_ANY)) { in nvkm_mm_tail()
199 if (this->heap != heap) in nvkm_mm_tail()
240 nvkm_mm_init(struct nvkm_mm *mm, u8 heap, u32 offset, u32 length, u32 block) in nvkm_mm_init() argument
277 node->heap = heap; in nvkm_mm_init()
H A Dgpuobj.c180 ret = nvkm_mm_head(&parent->heap, 0, 1, size, size, in nvkm_gpuobj_ctor()
183 ret = nvkm_mm_tail(&parent->heap, 0, 1, size, size, in nvkm_gpuobj_ctor()
211 return nvkm_mm_init(&gpuobj->heap, 0, 0, gpuobj->size, 1); in nvkm_gpuobj_ctor()
220 nvkm_mm_free(&gpuobj->parent->heap, &gpuobj->node); in nvkm_gpuobj_del()
221 nvkm_mm_fini(&gpuobj->heap); in nvkm_gpuobj_del()
/linux/tools/include/nolibc/
H A Dstdlib.h94 struct nolibc_heap *heap; in free() local
99 heap = container_of(ptr, struct nolibc_heap, user_p); in free()
100 munmap(heap, heap->len); in free()
131 struct nolibc_heap *heap; in malloc() local
134 len = sizeof(*heap) + len; in malloc()
136 heap = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, in malloc()
138 if (__builtin_expect(heap == MAP_FAILED, 0)) in malloc()
141 heap->len = len; in malloc()
142 return heap in malloc()
165 struct nolibc_heap *heap; realloc() local
[all...]
/linux/arch/powerpc/include/asm/
H A Drheap.h4 * Header file for the implementation of a remote heap.
49 /* Create a remote heap dynamically */
52 /* Destroy a remote heap, created by rh_create() */
65 /* Allocate the given size from the remote heap (with alignment) */
69 /* Allocate the given size from the remote heap */
83 /* Simple dump of remote heap info */
/linux/drivers/gpu/drm/nouveau/nvif/
H A Dmmu.c35 kfree(mmu->heap); in nvif_mmu_dtor()
53 mmu->heap = NULL; in nvif_mmu_ctor()
72 mmu->heap = kmalloc_objs(*mmu->heap, mmu->heap_nr); in nvif_mmu_ctor()
74 if (ret = -ENOMEM, !mmu->heap || !mmu->type) in nvif_mmu_ctor()
89 mmu->heap[i].size = args.size; in nvif_mmu_ctor()
109 mmu->type[i].heap = args.heap; in nvif_mmu_ctor()
/linux/tools/perf/util/
H A Dpowerpc-vpadtl.c27 struct auxtrace_heap heap;
366 * of perf record with timestamp of top element in the auxtrace heap.
367 * Process the auxtrace queue if the timestamp of element from heap is
370 * Update the timestamp of the auxtrace heap with the timestamp in powerpc_vpadtl_process_queues()
383 if (!vpa->heap.heap_cnt) in powerpc_vpadtl_process_queues()
386 if (vpa->heap.heap_array[0].ordinal >= timestamp) in powerpc_vpadtl_process_queues()
389 queue_nr = vpa->heap.heap_array[0].queue_nr; in powerpc_vpadtl_process_queues()
393 auxtrace_heap__pop(&vpa->heap); in powerpc_vpadtl_process_queues()
395 if (vpa->heap.heap_cnt) { in powerpc_vpadtl_process_queues()
396 ts = vpa->heap in powerpc_vpadtl_process_queues()
26 struct auxtrace_heap heap; global() member
[all...]
/linux/lib/zlib_deflate/
H A Ddeftree.c85 * need for the L_CODES extra codes used during heap construction. However
289 /* Index within the heap array of least frequent node in the Huffman tree */
293 * Remove the smallest element from the heap and recreate the heap with
294 * one less element. Updates heap and heap_len.
298 top = s->heap[SMALLEST]; \
299 s->heap[SMALLEST] = s->heap[s->heap_len--]; \
312 * Restore the heap property by moving down the tree starting at node k,
314 * when the heap property is re-established (each father smaller than its
323 int v = s->heap[k]; in pqdownheap()
328 smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { in pqdownheap()
[all …]
H A Ddefutil.h30 /* maximum heap size */
181 int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ member
182 int heap_len; /* number of elements in the heap */
184 /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
185 * The same heap array is used to build all trees.
/linux/kernel/sched/
H A Dcpudeadline.c111 * @cp: the cpudl max-heap context
166 * cpudl_clear - remove a CPU from the cpudl max-heap
167 * @cp: the cpudl max-heap context
209 * cpudl_set - update the cpudl max-heap
210 * @cp: the cpudl max-heap context
246 * @cp: the cpudl max-heap context
272 * @cp: the cpudl max-heap context
/linux/arch/mips/boot/compressed/
H A Dhead.S32 PTR_LA a0, (.heap) /* heap address */
51 .comm .heap,BOOT_HEAP_SIZE,4
/linux/include/uapi/drm/
H A Dpvr_drm.h258 * enum drm_pvr_heap_id - Array index for heap info data returned by
266 /** @DRM_PVR_HEAP_GENERAL: General purpose heap. */
268 /** @DRM_PVR_HEAP_PDS_CODE_DATA: PDS code and data heap. */
270 /** @DRM_PVR_HEAP_USC_CODE: USC code heap. */
272 /** @DRM_PVR_HEAP_RGNHDR: Region header heap. Only used if GPU has BRN63142. */
274 /** @DRM_PVR_HEAP_VIS_TEST: Visibility test heap. */
276 /** @DRM_PVR_HEAP_TRANSFER_FRAG: Transfer fragment heap. */
291 * struct drm_pvr_heap - Container holding information about a single heap.
296 /** @base: Base address of heap. */
299 /** @size: Size of heap, in bytes. Will be 0 if the heap is not present. */
[all …]
/linux/include/linux/
H A Dkfence.h41 * with regular heap objects (e.g. KFENCE objects must never be added to the
42 * allocator freelists). Failing to do so may and will result in heap
113 * kfence_alloc() should be inserted into the heap allocation fast path,
134 * @addr: pointer to a heap object
161 * __kfence_free() - release a KFENCE heap object to KFENCE pool
171 * kfence_free() - try to release an arbitrary heap object to KFENCE pool
/linux/drivers/md/bcache/
H A Dutil.h39 #define init_heap(heap, _size, gfp) \ argument
42 (heap)->used = 0; \
43 (heap)->size = (_size); \
44 _bytes = (heap)->size * sizeof(*(heap)->data); \
45 (heap)->data = kvmalloc(_bytes, (gfp) & GFP_KERNEL); \
46 (heap)->data; \
49 #define free_heap(heap) \ argument
51 kvfree((heap)->data); \
52 (heap)->data = NULL; \
/linux/drivers/gpu/drm/lima/
H A Dlima_gp.c37 dev_dbg(dev->dev, "%s out of heap irq status=%x\n", in lima_gp_irq_handler()
137 /* update real heap buffer size for GP */ in lima_gp_task_run()
148 task->heap = bo; in lima_gp_task_run()
253 if (fail_size == task->heap->heap_size) { in lima_gp_task_recover()
256 ret = lima_heap_alloc(task->heap, task->vm); in lima_gp_task_recover()
266 f[LIMA_GP_PLBU_ALLOC_START_ADDR >> 2] + task->heap->heap_size; in lima_gp_task_recover()
/linux/arch/x86/realmode/rm/
H A Dstack.S3 * Common heap and stack allocations
9 SYM_DATA(HEAP, .long rm_heap)
/linux/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/
H A Dnv04.c32 struct nvkm_mm heap; member
104 nvkm_mm_free(&iobj->imem->heap, &iobj->node); in nv04_instobj_dtor()
137 ret = nvkm_mm_head(&imem->heap, 0, 1, size, size, align ? align : 1, &iobj->node); in nv04_instobj_new()
210 ret = nvkm_mm_init(&imem->heap, 0, 0, imem->base.reserved, 1); in nv04_instmem_oneinit()
248 nvkm_mm_fini(&imem->heap); in nv04_instmem_dtor()

1234567