Lines Matching refs:size
33 static bool is_aligned(const void *base, size_t size, unsigned char align) in is_aligned() argument
35 unsigned char lsbits = (unsigned char)size; in is_aligned()
120 typedef void (*swap_func_t)(void *a, void *b, int size);
135 static void do_swap(void *a, void *b, size_t size, swap_func_t swap_func) in do_swap() argument
138 swap_words_64(a, b, size); in do_swap()
140 swap_words_32(a, b, size); in do_swap()
142 swap_bytes(a, b, size); in do_swap()
144 swap_func(a, b, (int)size); in do_swap()
178 static size_t parent(size_t i, unsigned int lsbit, size_t size) in parent() argument
180 i -= size; in parent()
181 i -= size & -(i & lsbit); in parent()
204 void sort_r(void *base, size_t num, size_t size, in sort_r() argument
206 void (*swap_func)(void *, void *, int size), in sort_r() argument
210 size_t n = num * size, a = (num/2) * size; in sort_r()
211 const unsigned int lsbit = size & -size; /* Used to find parent */ in sort_r()
217 if (is_aligned(base, size, 8)) in sort_r()
219 else if (is_aligned(base, size, 4)) in sort_r()
236 a -= size; in sort_r()
237 else if (n -= size) /* Sorting: Extract root to --n */ in sort_r()
238 do_swap(base, base + n, size, swap_func); in sort_r()
254 for (b = a; c = 2*b + size, (d = c + size) < n;) in sort_r()
261 b = parent(b, lsbit, size); in sort_r()
264 b = parent(b, lsbit, size); in sort_r()
265 do_swap(base + b, base + c, size, swap_func); in sort_r()
271 void sort(void *base, size_t num, size_t size, in sort() argument
273 void (*swap_func)(void *, void *, int size)) in sort() argument
275 return sort_r(base, num, size, _CMP_WRAPPER, swap_func, cmp_func); in sort()