root/lib/test_sort.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. cmpint
  2. test_sort_init
  3. test_sort_exit

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 #include <linux/sort.h>
   3 #include <linux/slab.h>
   4 #include <linux/module.h>
   5 
   6 /* a simple boot-time regression test */
   7 
   8 #define TEST_LEN 1000
   9 
  10 static int __init cmpint(const void *a, const void *b)
  11 {
  12         return *(int *)a - *(int *)b;
  13 }
  14 
  15 static int __init test_sort_init(void)
  16 {
  17         int *a, i, r = 1, err = -ENOMEM;
  18 
  19         a = kmalloc_array(TEST_LEN, sizeof(*a), GFP_KERNEL);
  20         if (!a)
  21                 return err;
  22 
  23         for (i = 0; i < TEST_LEN; i++) {
  24                 r = (r * 725861) % 6599;
  25                 a[i] = r;
  26         }
  27 
  28         sort(a, TEST_LEN, sizeof(*a), cmpint, NULL);
  29 
  30         err = -EINVAL;
  31         for (i = 0; i < TEST_LEN-1; i++)
  32                 if (a[i] > a[i+1]) {
  33                         pr_err("test has failed\n");
  34                         goto exit;
  35                 }
  36         err = 0;
  37         pr_info("test passed\n");
  38 exit:
  39         kfree(a);
  40         return err;
  41 }
  42 
  43 static void __exit test_sort_exit(void)
  44 {
  45 }
  46 
  47 module_init(test_sort_init);
  48 module_exit(test_sort_exit);
  49 
  50 MODULE_LICENSE("GPL");

/* [<][>][^][v][top][bottom][index][help] */