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

📄 proc_module.c~

📁 动态加载模块
💻 C~
字号:
#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/proc_fs.h>#include <linux/sched.h>#include <asm/uaccess.h>#define MODULE_NAME "proc"#define FOOBAR_LEN 255static struct proc_dir_entry *example_dir,*jiffies_file;static int proc_read_jiffies(char *page, char **start,off_t off,int count,int *eof, void *data){	int len;	try_module_get(THIS_MODULE);	struct timespec aa;	aa=current_kernel_time();	len=sprintf(page,"%ld\t%ld\n",(long)aa.tv_sec,aa.tv_nsec);	module_put(THIS_MODULE);	return len;}static int proc_init(void){	int rv = 0;	example_dir = proc_mkdir(MODULE_NAME,NULL);	if(example_dir == NULL){		rv = -ENOMEM;		goto out;	}	example_dir->owner = THIS_MODULE;	jiffies_file = create_proc_read_entry("xtime",0444,example_dir,proc_read_jiffies,NULL);	if(jiffies_file == NULL){		rv = -ENOMEM;		goto no_jiffies;	}	jiffies_file->owner = THIS_MODULE;	return 0;	no_jiffies:		remove_proc_entry(MODULE_NAME,NULL);	out:		return rv;}static void proc_exit(void){	remove_proc_entry("xtime",example_dir);	remove_proc_entry(MODULE_NAME,NULL);	printk("%s removed\n",MODULE_NAME);}module_init(proc_init);module_exit(proc_exit);MODULE_LICENSE("Dual BSD/GPL");MODULE_DESCRIPTION("PROC");

⌨️ 快捷键说明

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