造成panic_oom问题的测试代码

Posted xingmuxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了造成panic_oom问题的测试代码相关的知识,希望对你有一定的参考价值。

写一个内核模块,来构造内核模块出现panic oom,主要采用vmalloc函数:

#include <linux/module.h>
#include <linux/mm.h>
#include <linux/vmalloc.h>

static int __init ko_test_init(void)

        int i;
        u64 size = 1024*1024*1024*2UL;
        for (i = 0; i < 500; i++) 
                char *p = vmalloc(size);
                memset(p, 0, size);
        
        return 0;

static void __exit ko_test_exit(void)



module_init(ko_test_init);
module_exit(ko_test_exit);
MODULE_LICENSE("GPL");

对应的Makefile文件为:

MODULE := oom
KVER := $(shell uname -r)

ifdef CUSTOM_LINUX_SRC_PATH
        KDIR := $(CUSTOM_LINUX_SRC_PATH)
else
        KDIR ?= /usr/src/kernels/$(KVER)
endif

all: clean default

default:
        $(MAKE) -C $(KDIR) M=$shell pwd   modules

clean:
        $(RM) -rf .*.cmd *.o .*.d .*.tmp .*.o *.mod.c *.ko .tmp_versions *.scc *.ld.script *.symvers *.order

install:
        cp *.ko $(DIR)

obj-m := $(MODULE).o

 

以上是关于造成panic_oom问题的测试代码的主要内容,如果未能解决你的问题,请参考以下文章

单测增量代码覆盖率统计方案

软件测试-如何做一个让开发人员看得起的测试人员

Auty自动化测试框架—垃圾代码回收添加suite支持

Java中static问题

测试的道理

Python单元测试