| /linux/Documentation/core-api/ |
| H A D | min_heap.rst | 4 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 D | dma-heap.c | 12 #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 D | lprops.c | 22 * 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 D | find.c | 45 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 D | amdxdna_gem.c | 28 * 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 D | aie2_ctx.c | 109 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 D | amdxdna_ctx.c | 67 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 D | base.c | 255 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 D | tee_heap.c | 7 #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 D | mm.h | 12 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 D | mm.c | 99 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 D | gpuobj.c | 180 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 D | stdlib.h | 94 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 D | mmu.c | 35 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 D | rheap.h | 4 * 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 D | powerpc-vpadtl.c | 27 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 D | deftree.c | 85 * 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 D | defutil.h | 30 /* 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 D | Kconfig.hardening | 160 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 D | cpudeadline.c | 111 * @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 D | head.S | 32 PTR_LA a0, (.heap) /* heap address */ 51 .comm .heap,BOOT_HEAP_SIZE,4
|
| /linux/include/uapi/drm/ |
| H A D | pvr_drm.h | 258 * 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 D | kfence.h | 41 * 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 D | util.h | 39 #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 D | lima_gp.c | 37 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()
|