Commit b53907c0100a353a7ac53bed260e735e5ccbbbcc
Committed by
Linus Torvalds
1 parent
b67445fc17
Exists in
master
and in
4 other branches
generic swap(): lib/sort.c: rename swap to swap_func
This is to avoid name clashes for the introduction of a global swap() macro. Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 16 additions and 14 deletions Side-by-side Diff
lib/sort.c
... | ... | @@ -32,11 +32,11 @@ |
32 | 32 | * @base: pointer to data to sort |
33 | 33 | * @num: number of elements |
34 | 34 | * @size: size of each element |
35 | - * @cmp: pointer to comparison function | |
36 | - * @swap: pointer to swap function or NULL | |
35 | + * @cmp_func: pointer to comparison function | |
36 | + * @swap_func: pointer to swap function or NULL | |
37 | 37 | * |
38 | 38 | * This function does a heapsort on the given array. You may provide a |
39 | - * swap function optimized to your element type. | |
39 | + * swap_func function optimized to your element type. | |
40 | 40 | * |
41 | 41 | * Sorting time is O(n log n) both on average and worst-case. While |
42 | 42 | * qsort is about 20% faster on average, it suffers from exploitable |
43 | 43 | |
44 | 44 | |
45 | 45 | |
46 | 46 | |
47 | 47 | |
48 | 48 | |
49 | 49 | |
50 | 50 | |
... | ... | @@ -45,37 +45,39 @@ |
45 | 45 | */ |
46 | 46 | |
47 | 47 | void sort(void *base, size_t num, size_t size, |
48 | - int (*cmp)(const void *, const void *), | |
49 | - void (*swap)(void *, void *, int size)) | |
48 | + int (*cmp_func)(const void *, const void *), | |
49 | + void (*swap_func)(void *, void *, int size)) | |
50 | 50 | { |
51 | 51 | /* pre-scale counters for performance */ |
52 | 52 | int i = (num/2 - 1) * size, n = num * size, c, r; |
53 | 53 | |
54 | - if (!swap) | |
55 | - swap = (size == 4 ? u32_swap : generic_swap); | |
54 | + if (!swap_func) | |
55 | + swap_func = (size == 4 ? u32_swap : generic_swap); | |
56 | 56 | |
57 | 57 | /* heapify */ |
58 | 58 | for ( ; i >= 0; i -= size) { |
59 | 59 | for (r = i; r * 2 + size < n; r = c) { |
60 | 60 | c = r * 2 + size; |
61 | - if (c < n - size && cmp(base + c, base + c + size) < 0) | |
61 | + if (c < n - size && | |
62 | + cmp_func(base + c, base + c + size) < 0) | |
62 | 63 | c += size; |
63 | - if (cmp(base + r, base + c) >= 0) | |
64 | + if (cmp_func(base + r, base + c) >= 0) | |
64 | 65 | break; |
65 | - swap(base + r, base + c, size); | |
66 | + swap_func(base + r, base + c, size); | |
66 | 67 | } |
67 | 68 | } |
68 | 69 | |
69 | 70 | /* sort */ |
70 | 71 | for (i = n - size; i > 0; i -= size) { |
71 | - swap(base, base + i, size); | |
72 | + swap_func(base, base + i, size); | |
72 | 73 | for (r = 0; r * 2 + size < i; r = c) { |
73 | 74 | c = r * 2 + size; |
74 | - if (c < i - size && cmp(base + c, base + c + size) < 0) | |
75 | + if (c < i - size && | |
76 | + cmp_func(base + c, base + c + size) < 0) | |
75 | 77 | c += size; |
76 | - if (cmp(base + r, base + c) >= 0) | |
78 | + if (cmp_func(base + r, base + c) >= 0) | |
77 | 79 | break; |
78 | - swap(base + r, base + c, size); | |
80 | + swap_func(base + r, base + c, size); | |
79 | 81 | } |
80 | 82 | } |
81 | 83 | } |