⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oops.c

📁 linux下记录系统日志代码以及记录内核日志代码
💻 C
字号:
/* * Loadable driver which provides the ability to generate a kernel * protection fault.  Mainly useful for testing the address translation * capabilities of klogd. * * Fri Oct 27 14:34:27 CDT 1995:  Dr. Wettstein * *	Initial version. */#define NEW_MODULES/* Kernel includes. */#include <linux/kernel.h>#include <linux/config.h>#include <linux/errno.h>#include <linux/fs.h>/* Standard module stuff. */#if defined(NEW_MODULES)#include <linux/module.h>#else#include <linux/module.h>#include <linux/version.h>char kernel_version[] = UTS_RELEASE;#endifstatic int major = 32;#ifdef MODULEstatic int oops_ioctl(struct inode *, struct file *, unsigned int cmd, unsigned long arg);static int oops_open(struct inode * node, struct file * file);static void oops(void);static struct symbol_table these_symbols = {#include <linux/symtab_begin.h>	X(oops_open),	X(oops_ioctl),	X(oops),#include <linux/symtab_end.h>};/* driver specific module definitions */static struct file_operations oops_fops1 = {	NULL,		/* hw_lseek */	NULL,		/* hw_read */	NULL,		/* write */	NULL,		/* hw_readdir */	NULL,		/* hw_select */	oops_ioctl,	/* hw_ioctl */	NULL,		/* mmap */	oops_open,	/* hw_open */	NULL,		/* hw_release */	NULL		/* fsync */};static int oops_open(struct inode * node, struct file * file){	printk("Called oops_open.\n");	return(0);}static int oops_ioctl(struct inode * node, struct file * file, \		      unsigned int cmd, unsigned long arg){		printk("Called oops_ioctl.\n");	printk("Cmd: %d, Arg: %ld\n", cmd, arg);	if ( cmd == 1 )	{		oops();	}			return(0);}static void oops(){	auto unsigned long *p = (unsigned long *) 828282828;	*p = 5;	return;}	intinit_module(void){	printk("oops: Module initilization.\n");	if (register_chrdev(major, "oops", &oops_fops1)) {		printk("register_chrdev failed.");		return -EIO;	}	printk("oops: Registering symbols.\n");  	register_symtab(&these_symbols);		return 0;}voidcleanup_module(void){	/* driver specific cleanups, ususally "unregister_*()" */	printk("oops: Module unloadeding.\n");	if (unregister_chrdev(major, "oops") != 0)		printk("cleanup_module failed\n");	else		printk("cleanup_module succeeded\n");	return;}#endif /* MODULE */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -