📄 proc_module.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 + -