mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-02 00:24:12 +08:00
8893f51933
The Kconfig currently controlling compilation of this code is: lib/Kconfig.debug:config TEST_SORT lib/Kconfig.debug: bool "Array-based sort test" ...meaning that it currently is not being built as a module by anyone. Lets remove the couple traces of modular infrastructure use, so that when reading the code there is no doubt it is builtin-only. Since module_init translates to device_initcall in the non-modular case, the init ordering becomes slightly earlier when we change it to use subsys_initcall as done here. However, since it is a self contained test, this shouldn't be an issue and subsys_initcall seems like a better fit for this particular case. We also delete the MODULE_LICENSE tag since that information is now contained at the top of the file in the comments. Link: http://lkml.kernel.org/r/20170124225608.7319-1-paul.gortmaker@windriver.com Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Cc: Kostenzer Felix <fkostenzer@live.at> Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
45 lines
752 B
C
45 lines
752 B
C
#include <linux/sort.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/init.h>
|
|
|
|
/*
|
|
* A simple boot-time regression test
|
|
* License: GPL
|
|
*/
|
|
|
|
#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;
|
|
}
|
|
subsys_initcall(test_sort_init);
|