Commit b53907c0100a353a7ac53bed260e735e5ccbbbcc

Authored by Wu Fengguang
Committed by Linus Torvalds
1 parent b67445fc17

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

... ... @@ -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 }