随想录(内核模块的测试方法)

来源:互联网 发布:怎样制作app软件 编辑:程序博客网 时间:2024/06/01 21:10

 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】


    今天,在网上无意看到kernel里面有内核模块的测试代码,觉得很有意思,放到这里和大家一起学习一下。

#include <linux/sort.h>#include <linux/slab.h>#include <linux/module.h>/* a simple boot-time regression test */#define TEST_LEN 1000static 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");


    这段代码不是我写的,原来地址在这。代码的内容不复杂,主要就是测试sort函数,整个函数就test_sort_init就搞定了。首先,函数先生成一个数组a,接着用sort对它进行排序,最后验证sort函数排序后的结果是否正确。


    很多同学其实不喜欢写测试函数,这是不正确的。一般来说,不管是驱动代码、上层代码,甚至是内核代码,这些都是要进行测试的。好的代码不光要有好的逻辑、好的维护性,它还要有好的测试性、好的可调性和好的扩展性。


    一份好的代码不是那么容易写出来的。


原创粉丝点击