随想录(内核模块的测试方法)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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函数排序后的结果是否正确。
很多同学其实不喜欢写测试函数,这是不正确的。一般来说,不管是驱动代码、上层代码,甚至是内核代码,这些都是要进行测试的。好的代码不光要有好的逻辑、好的维护性,它还要有好的测试性、好的可调性和好的扩展性。
一份好的代码不是那么容易写出来的。
随想录(内核模块的测试方法)相关推荐
- 存储--IT打桩测试方法
存储–IT打桩测试方法一 转载注明出处 : http://blog.csdn.net/xhz1234/article/details/44257293 Copyright 徐洪志(Macrosan). ...
- 代码质量随想录(四):排版,不只是为了漂亮
代码质量随想录(四):排版,不只是为了漂亮 作者: 爱飞翔 发布时间: 2012-06-15 21:18 阅读: 1433 次 原文链接 全屏阅读 [收藏] 写了前三篇(一.二.三)之后 ...
- linux内核添加c代码,如何从C代码加载Linux内核模块?
Ciro Santill.. 19 最小的可运行示例 使用这个简单的参数打印机模块在QEMU + Buildroot VM和Ubuntu 16.04主机上进行了测试. 我们使用init_module/ ...
- linux中断共享程序实现,如何在非实时linux上实现实时应用程序与内核模块之间共享存储器...
linux并不是严格意义上的实时操作系统,为了实际需要,工程师们必须想尽办法来祢补这一不足,于是出现了rtlinux和rtai等并不强调商业性的软件.免费的rtlinux显然庞大而并不兼容大部分的嵌入 ...
- centos 自定义内核模块 编译运行
简单记录一下 centos 自定义内核模块的一些编译运行记录,代码如下: 主要功能是通过rdtsc 指令直接从 CPU MSR 寄存器中获取时钟,尝试获取两次,两次之间会做一些赋值操作什么的,并记录一 ...
- Linux内核模块编程入门
针对2.6内核的Linux系统,需要你的机器上已经安装了kernel-devel这个包,也就是编译模块所必须的东西:内核的头文件和一些Makefile. 一,Hello World程序: [code: ...
- 接口设计文档_app端接口用例设计方法和测试方法(一)
前言 接口测试作为测试的重要一环,重点关注的是数据层面的输入输出,今天小编介绍一种常用的接口测试用例设计方法和测试方法,希望对大家有所帮助,由于内容较多,分三次给大家讲解,今天先介绍"请求层 ...
- 14 集成测试方法之自底向上集成方法
自底向上集成方法 前言 自底向上集成方法 前言 集成测试方法没有好坏之分,只有哪个更适合. 自底向上集成方法 自底向上集成方法是从调用的底层开始逐级的向上集成,每测试完一个族群就将其挂到上一层的模块上 ...
- 别再写 main 方法测试了,太 Low!这才是专业 Java 测试方法!
欢迎关注方志朋的博客,回复"666"获面试宝典 作者:Richard_Yi 来源:juejin.cn/post/6844903936869007368 前言 "If yo ...
最新文章
- jedis操作set_在Java中使用jedis操作Set类型
- ASP.NET WebForm中用async/await实现异步
- php接口前端安全,前端js的ajax 调用PHP写的API接口,如何卡主安全性,防止非法调用呢?...
- Android含文档server结束(client UI接口异步请求的一部分)三
- Pytorch:线性代数
- 计算机网络学习(七)—集线器与交换机
- linux 系统基础知识 - vgextend命令
- Android 直播礼物动画实现之SVGA动画
- Warship+NPOI导入导出组件介绍【对象化】
- 骁龙神经处理引擎(Snapdragon Neural Processing Engine)
- word文档下面有红色波浪线如何解决
- 公有云与私有云的概念解读与优势分析
- Marlin固件的欢迎界面
- CryEngine事件监听器概览
- 如何从菜鸟程序员成长为高手
- 机器学习(一)- feature scaling
- 北航计算机考研小黑书,不会真有人以为四川大学分数低吧?川大最高分比北航南大最高分还高...
- 编译原理实验报告一:PL0语言编译器分析(PL0,词法分析,语法分析,中间代码生成)
- android 您的手机上未安装应用程序的解决方法
- 学习代码要先学会“学习”
热门文章
- hadoop1.2.1的安装
- 为了分析WebRTC, 重学Windows开发
- SpringMVC中获得HttpRequest对象的方法
- [置顶] Python编程-混合编程(C++,python,opencv)实现
- C#基础知识整理:基础知识(11) 值类型,引用类型
- C++数据类型与C#对应关系 c#调用WINDWOS API时,非常有用
- Nginx安装及配置反向代理
- [BZOJ4521][Cqoi2016]手机号码 (数位dp)
- ArcGIS中,一个点集里的点两两连线,比如有4个点,就连6条线
- C#语言-NPOI.dll导入Excel功能的实现