mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 15:10:38 +00:00
ebd03a9aac
Patch series "lib: add module support to sort tests". This patch series allows to compile the array-based and linked list sort test code either to loadable modules, or builtin into the kernel. It's very valuable to have modular tests, so you can run them just by insmodding the test modules, instead of needing a separate kernel that runs them at boot. This patch (of 3): This reverts commit 8893f519330bb073a49c5b4676fce4be6f1be15d. It's very valuable to have modular tests, so you can run them just by insmodding the test modules, instead of needing a separate kernel that runs them at boot. Link: http://lkml.kernel.org/r/1488287219-15832-2-git-send-email-geert@linux-m68k.org Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Cc: Shuah Khan <shuah@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
44 lines
754 B
C
44 lines
754 B
C
#include <linux/sort.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/module.h>
|
|
|
|
/* a simple boot-time regression test */
|
|
|
|
#define TEST_LEN 1000
|
|
|
|
static int __init cmpint(const void *a, const void *b)
|
|
{
|
|
return *(int *)a - *(int *)b;
|
|
}
|
|
|
|
static int __init test_sort_init(void)
|
|
{
|
|
int *a, i, r = 1, err = -ENOMEM;
|
|
|
|
a = kmalloc_array(TEST_LEN, sizeof(*a), GFP_KERNEL);
|
|
if (!a)
|
|
return err;
|
|
|
|
for (i = 0; i < TEST_LEN; i++) {
|
|
r = (r * 725861) % 6599;
|
|
a[i] = r;
|
|
}
|
|
|
|
sort(a, TEST_LEN, sizeof(*a), cmpint, NULL);
|
|
|
|
err = -EINVAL;
|
|
for (i = 0; i < TEST_LEN-1; i++)
|
|
if (a[i] > a[i+1]) {
|
|
pr_err("test has failed\n");
|
|
goto exit;
|
|
}
|
|
err = 0;
|
|
pr_info("test passed\n");
|
|
exit:
|
|
kfree(a);
|
|
return err;
|
|
}
|
|
|
|
module_init(test_sort_init);
|
|
MODULE_LICENSE("GPL");
|