parisc: use sort() instead of home-made implementation
Helge Deller
maintainerPATCH 1/1 parisc: use sort() instead of home-made implementation
Signed-off-by Helge Deller <[email protected]>
arch/parisc/kernel/unwind.c +7 -1
@@ -13,6 +13,7 @@#include <linux/sched.h> #include <linux/slab.h> #include <linux/kallsyms.h> +#include <linux/sort.h> #include <asm/uaccess.h> #include <asm/assembly.h>
@@ -115,24 +116,21 @@ unwind_table_init(struct unwind_table *table, const char *name, } } +static int cmp_unwind_table_entry (const void *a,const void *b) +{ +return ((const struct unwind_table_entry *)a)->region_start + - ((const struct unwind_table_entry *)b)->region_start; +} +static void unwind_table_sort (struct unwind_table_entry *start,struct unwind_table_entry *finish) { -struct unwind_table_entry el, *p, *q;
Quoted 1 line · Helge Deller
Signed-off-by Helge Deller <[email protected]>
Excellent. sort() was not there when this was coded up, but always good to stop replicating code :)
Signed-off-by Randolph Chung <[email protected]>
randolph
Quoted 50 lines
arch/parisc/kernel/unwind.c +12
-14@@ -13,6 +13,7 @@#include <linux/sched.h> #include <linux/slab.h> #include <linux/kallsyms.h> +#include <linux/sort.h> #include <asm/uaccess.h> #include <asm/assembly.h> @@ -115,24 +116,21 @@ unwind_table_init(struct unwind_table *table, const char *name, } } +static int cmp_unwind_table_entry (const void *a,const void *b) +{ +return ((const struct unwind_table_entry *)a)->region_start + - ((const struct unwind_table_entry *)b)->region_start; +} +static void unwind_table_sort (struct unwind_table_entry *start,struct unwind_table_entry *finish) { -struct unwind_table_entry el, *p, *q; - -for (p = start +1 ; p < finish; ++p) { -if (p[0 ].region_start < p[-1 ].region_start) { - el = *p; - q = p; -do { - q[0 ] = q[-1 ]; - --q; - }while (q > start && - el.region_start < q[-1 ].region_start); - *q = el; - } - } +int len; + + len = (finish - start) /sizeof (struct unwind_table_entry ); +sort (start, len,sizeof (struct unwind_table_entry ), + cmp_unwind_table_entry,NULL ); } struct unwind_table *