Home
last modified time | relevance | path

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

12345678

/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/drivers/dma-buf/
H A Ddma-heap.c12 #include <linux/dma-heap.h>
21 #include <uapi/linux/dma-heap.h>
28 * struct dma_heap - represents a dmabuf heap in the system
30 * @ops: ops struct for this heap
31 * @priv: private data for this heap
32 * @heap_devt: heap device node
34 * @heap_cdev: heap char device
36 * Represents a heap of memory from which buffers can be made.
56 "Enable cgroup-based memory accounting for dma-buf heap allocations (default=false).");
61 struct dma_heap *heap; in dma_heap_open() local
[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()
460 struct amdxdna_gem_obj *heap; in amdxdna_hwctx_expand_heap() local
468 xa_for_each_range(&client->dev_heap_xa, heap_id, heap, in amdxdna_hwctx_expand_heap()
470 drm_gem_object_get(to_gobj(heap)); in amdxdna_hwctx_expand_heap()
471 ret = amdxdna_gem_pin(heap); in amdxdna_hwctx_expand_heap()
473 drm_gem_object_put(to_gobj(heap)); in amdxdna_hwctx_expand_heap()
477 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/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/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/tools/perf/util/
H A Dpowerpc-vpadtl.c27 struct auxtrace_heap heap; member
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
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.heap_array[0].ordinal + 1; in powerpc_vpadtl_process_queues()
[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/security/
H A DKconfig.hardening160 bool "Enable heap memory zeroing on allocation by default"
167 many kinds of "uninitialized heap memory" flaws, especially
168 heap content exposures. The performance impact varies by
173 bool "Enable heap memory zeroing on free by default"
180 when freed, eliminating many kinds of "uninitialized heap memory"
181 flaws, especially heap content exposures. The primary difference
228 are larger than the specified heap object, span multiple
231 of heap overflow exploits and similar kernel memory exposures.
/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()

12345678