diff options
| author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2014-10-13 18:51:36 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-10-13 20:18:14 -0400 |
| commit | 6de8ab68bc30da75116209d818c75497bdaed09d (patch) | |
| tree | 1b91b91097523d424d060e240296ddca99095832 /lib | |
| parent | fec22908323dc56ce38b835f5a67cce30fc7b6fc (diff) | |
lib: remove prio_heap
The prio_heap code is unused since commit 889ed9ceaa97 ("cgroup: remove
css_scan_tasks()"). It should be compiled out to shrink the binary
kernel size which can be done via introducing CONFIG_PRIO_HEAD or by
removing the code.
We can simply recover the code from git when needed, so it would be
better to remove it IMO.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Ingo Molnar <mingo@kernel.org>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Francesco Fusco <ffusco@redhat.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: George Spelvin <linux@horizon.com>
Cc: Mark Salter <msalter@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Makefile | 2 | ||||
| -rw-r--r-- | lib/prio_heap.c | 70 |
2 files changed, 1 insertions, 71 deletions
diff --git a/lib/Makefile b/lib/Makefile index d6b4bc496408..eb95e0fdcca5 100644 --- a/lib/Makefile +++ b/lib/Makefile | |||
| @@ -11,7 +11,7 @@ lib-y := ctype.o string.o vsprintf.o cmdline.o \ | |||
| 11 | rbtree.o radix-tree.o dump_stack.o timerqueue.o\ | 11 | rbtree.o radix-tree.o dump_stack.o timerqueue.o\ |
| 12 | idr.o int_sqrt.o extable.o \ | 12 | idr.o int_sqrt.o extable.o \ |
| 13 | sha1.o md5.o irq_regs.o reciprocal_div.o argv_split.o \ | 13 | sha1.o md5.o irq_regs.o reciprocal_div.o argv_split.o \ |
| 14 | proportions.o flex_proportions.o prio_heap.o ratelimit.o show_mem.o \ | 14 | proportions.o flex_proportions.o ratelimit.o show_mem.o \ |
| 15 | is_single_threaded.o plist.o decompress.o kobject_uevent.o \ | 15 | is_single_threaded.o plist.o decompress.o kobject_uevent.o \ |
| 16 | earlycpio.o | 16 | earlycpio.o |
| 17 | 17 | ||
diff --git a/lib/prio_heap.c b/lib/prio_heap.c deleted file mode 100644 index a7af6f85eca8..000000000000 --- a/lib/prio_heap.c +++ /dev/null | |||
| @@ -1,70 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Simple insertion-only static-sized priority heap containing | ||
| 3 | * pointers, based on CLR, chapter 7 | ||
| 4 | */ | ||
| 5 | |||
| 6 | #include <linux/slab.h> | ||
| 7 | #include <linux/prio_heap.h> | ||
| 8 | |||
| 9 | int heap_init(struct ptr_heap *heap, size_t size, gfp_t gfp_mask, | ||
| 10 | int (*gt)(void *, void *)) | ||
| 11 | { | ||
| 12 | heap->ptrs = kmalloc(size, gfp_mask); | ||
| 13 | if (!heap->ptrs) | ||
| 14 | return -ENOMEM; | ||
| 15 | heap->size = 0; | ||
| 16 | heap->max = size / sizeof(void *); | ||
| 17 | heap->gt = gt; | ||
| 18 | return 0; | ||
| 19 | } | ||
| 20 | |||
| 21 | void heap_free(struct ptr_heap *heap) | ||
| 22 | { | ||
| 23 | kfree(heap->ptrs); | ||
| 24 | } | ||
| 25 | |||
| 26 | void *heap_insert(struct ptr_heap *heap, void *p) | ||
| 27 | { | ||
| 28 | void *res; | ||
| 29 | void **ptrs = heap->ptrs; | ||
| 30 | int pos; | ||
| 31 | |||
| 32 | if (heap->size < heap->max) { | ||
| 33 | /* Heap insertion */ | ||
| 34 | pos = heap->size++; | ||
| 35 | while (pos > 0 && heap->gt(p, ptrs[(pos-1)/2])) { | ||
| 36 | ptrs[pos] = ptrs[(pos-1)/2]; | ||
| 37 | pos = (pos-1)/2; | ||
| 38 | } | ||
| 39 | ptrs[pos] = p; | ||
| 40 | return NULL; | ||
| 41 | } | ||
| 42 | |||
| 43 | /* The heap is full, so something will have to be dropped */ | ||
| 44 | |||
| 45 | /* If the new pointer is greater than the current max, drop it */ | ||
| 46 | if (heap->gt(p, ptrs[0])) | ||
| 47 | return p; | ||
| 48 | |||
| 49 | /* Replace the current max and heapify */ | ||
| 50 | res = ptrs[0]; | ||
| 51 | ptrs[0] = p; | ||
| 52 | pos = 0; | ||
| 53 | |||
| 54 | while (1) { | ||
| 55 | int left = 2 * pos + 1; | ||
| 56 | int right = 2 * pos + 2; | ||
| 57 | int largest = pos; | ||
| 58 | if (left < heap->size && heap->gt(ptrs[left], p)) | ||
| 59 | largest = left; | ||
| 60 | if (right < heap->size && heap->gt(ptrs[right], ptrs[largest])) | ||
| 61 | largest = right; | ||
| 62 | if (largest == pos) | ||
| 63 | break; | ||
| 64 | /* Push p down the heap one level and bump one up */ | ||
| 65 | ptrs[pos] = ptrs[largest]; | ||
| 66 | ptrs[largest] = p; | ||
| 67 | pos = largest; | ||
| 68 | } | ||
| 69 | return res; | ||
| 70 | } | ||
