造成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问题的测试代码的主要内容,如果未能解决你的问题,请参考以下文章