]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
lib/sort: Move swap, cmp and cmp_r function types for wider use
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 7 Oct 2019 13:56:54 +0000 (16:56 +0300)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Thu, 14 Nov 2019 18:15:11 +0000 (13:15 -0500)
The function types for swap, cmp and cmp_r functions are already
being in use by modules.

Move them to types.h that everybody in kernel will be able to use
generic types instead of custom ones.

This adds more sense to the comment in bsearch() later on.

Link: http://lkml.kernel.org/r/20191007135656.37734-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
include/linux/sort.h
include/linux/types.h
lib/sort.c

index 61b96d0ebc4404895cb519ee97b8f0a49bf275e5..b5898725fe9db1b8ac3bb7a9760506203ec4824c 100644 (file)
@@ -5,12 +5,12 @@
 #include <linux/types.h>
 
 void sort_r(void *base, size_t num, size_t size,
-           int (*cmp)(const void *, const void *, const void *),
-           void (*swap)(void *, void *, int),
+           cmp_r_func_t cmp_func,
+           swap_func_t swap_func,
            const void *priv);
 
 void sort(void *base, size_t num, size_t size,
-         int (*cmp)(const void *, const void *),
-         void (*swap)(void *, void *, int));
+         cmp_func_t cmp_func,
+         swap_func_t swap_func);
 
 #endif
index 05030f608be32224779a399360d407a84d396201..85c0e7b18153d95d3e4c2fe437bf0bba82277c4b 100644 (file)
@@ -225,5 +225,10 @@ struct callback_head {
 typedef void (*rcu_callback_t)(struct rcu_head *head);
 typedef void (*call_rcu_func_t)(struct rcu_head *head, rcu_callback_t func);
 
+typedef void (*swap_func_t)(void *a, void *b, int size);
+
+typedef int (*cmp_r_func_t)(const void *a, const void *b, const void *priv);
+typedef int (*cmp_func_t)(const void *a, const void *b);
+
 #endif /*  __ASSEMBLY__ */
 #endif /* _LINUX_TYPES_H */
index d54cf97e9548a93d7e7940ab2d0b2857d259a529..3ad454411997adc1aaf4c70df3b30cfd693c96b4 100644 (file)
@@ -117,8 +117,6 @@ static void swap_bytes(void *a, void *b, size_t n)
        } while (n);
 }
 
-typedef void (*swap_func_t)(void *a, void *b, int size);
-
 /*
  * The values are arbitrary as long as they can't be confused with
  * a pointer, but small integers make for the smallest compare
@@ -144,12 +142,9 @@ static void do_swap(void *a, void *b, size_t size, swap_func_t swap_func)
                swap_func(a, b, (int)size);
 }
 
-typedef int (*cmp_func_t)(const void *, const void *);
-typedef int (*cmp_r_func_t)(const void *, const void *, const void *);
 #define _CMP_WRAPPER ((cmp_r_func_t)0L)
 
-static int do_cmp(const void *a, const void *b,
-                 cmp_r_func_t cmp, const void *priv)
+static int do_cmp(const void *a, const void *b, cmp_r_func_t cmp, const void *priv)
 {
        if (cmp == _CMP_WRAPPER)
                return ((cmp_func_t)(priv))(a, b);
@@ -202,8 +197,8 @@ static size_t parent(size_t i, unsigned int lsbit, size_t size)
  * it less suitable for kernel use.
  */
 void sort_r(void *base, size_t num, size_t size,
-           int (*cmp_func)(const void *, const void *, const void *),
-           void (*swap_func)(void *, void *, int size),
+           cmp_r_func_t cmp_func,
+           swap_func_t swap_func,
            const void *priv)
 {
        /* pre-scale counters for performance */
@@ -269,8 +264,8 @@ void sort_r(void *base, size_t num, size_t size,
 EXPORT_SYMBOL(sort_r);
 
 void sort(void *base, size_t num, size_t size,
-         int (*cmp_func)(const void *, const void *),
-         void (*swap_func)(void *, void *, int size))
+         cmp_func_t cmp_func,
+         swap_func_t swap_func)
 {
        return sort_r(base, num, size, _CMP_WRAPPER, swap_func, cmp_func);
 }