lkml.org 
[lkml]   [2005]   [Jan]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 6/8] lib/sort: Replace insertion sort in exception tables
    Replace exception table insertion sort with lib/sort

    Signed-off-by: Matt Mackall <mpm@selenic.com>

    Index: mm2/lib/extable.c
    ===================================================================
    --- mm2.orig/lib/extable.c 2005-01-30 20:33:18.000000000 -0800
    +++ mm2/lib/extable.c 2005-01-30 20:40:53.000000000 -0800
    @@ -13,6 +13,7 @@
    #include <linux/config.h>
    #include <linux/module.h>
    #include <linux/init.h>
    +#include <linux/sort.h>
    #include <asm/uaccess.h>

    extern struct exception_table_entry __start___ex_table[];
    @@ -25,26 +26,17 @@
    * This is used both for the kernel exception table and for
    * the exception tables of modules that get loaded.
    */
    +static int cmp_ex(const void *a, const void *b)
    +{
    + const struct exception_table_entry *x = a, *y = b;
    + return x->insn - y->insn;
    +}
    +
    void sort_extable(struct exception_table_entry *start,
    struct exception_table_entry *finish)
    {
    - struct exception_table_entry el, *p, *q;
    -
    - /* insertion sort */
    - for (p = start + 1; p < finish; ++p) {
    - /* start .. p-1 is sorted */
    - if (p[0].insn < p[-1].insn) {
    - /* move element p down to its right place */
    - el = *p;
    - q = p;
    - do {
    - /* el comes before q[-1], move q[-1] up one */
    - q[0] = q[-1];
    - --q;
    - } while (q > start && el.insn < q[-1].insn);
    - *q = el;
    - }
    - }
    + sort(start, finish - start, sizeof(struct exception_table_entry),
    + cmp_ex, 0);
    }
    #endif

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 14:10    [W:0.035 / U:0.052 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site