#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/proc_fs.h>
#include<linux/init.h>
#define profile_name "Protest"
struct proc_dir_entry* our_proc_file;
int profile_read(char* buffer,char** buffer_location,off_t off_set,int* buf_length,int* eof,void* data)
{
int ret ;
ret = sprintf(buffer,"Hello world!!\n");
return ret;
}
int proc_init()
{
our_proc_file = create_proc_entry(profile_name,0644,NULL);//NULL means it's father is Proc
if(our_proc_file == NULL)
{
remove_proc_entry(profile_name,NULL);
printk(KERN_ALERT"ERROR:could not initialize /proc/%s\n",profile_name);
return -ENOMEM;
}
our_proc_file->read_proc = profile_read;
//our_proc_file->owenr = THIS_MODULE;
our_proc_file->mode = S_IFREG | S_IRUGO;
our_proc_file->uid = 0;
our_proc_file->gid = 0;
our_proc_file->size = 37;
printk("/proc/%s created!!\n",profile_name);
return 0;
}
void proc_exit()
{
remove_proc_entry(profile_name,NULL);
printk(KERN_INFO"/proc/%s removed!!\n",profile_name);
}
module_init(proc_init);
#include<linux/kernel.h>
#include<linux/proc_fs.h>
#include<linux/init.h>
#define profile_name "Protest"
struct proc_dir_entry* our_proc_file;
int profile_read(char* buffer,char** buffer_location,off_t off_set,int* buf_length,int* eof,void* data)
{
int ret ;
ret = sprintf(buffer,"Hello world!!\n");
return ret;
}
int proc_init()
{
our_proc_file = create_proc_entry(profile_name,0644,NULL);//NULL means it's father is Proc
if(our_proc_file == NULL)
{
remove_proc_entry(profile_name,NULL);
printk(KERN_ALERT"ERROR:could not initialize /proc/%s\n",profile_name);
return -ENOMEM;
}
our_proc_file->read_proc = profile_read;
//our_proc_file->owenr = THIS_MODULE;
our_proc_file->mode = S_IFREG | S_IRUGO;
our_proc_file->uid = 0;
our_proc_file->gid = 0;
our_proc_file->size = 37;
printk("/proc/%s created!!\n",profile_name);
return 0;
}
void proc_exit()
{
remove_proc_entry(profile_name,NULL);
printk(KERN_INFO"/proc/%s removed!!\n",profile_name);
}
module_init(proc_init);
module_exit(proc_exit);
要利用makefile来编译
ifneq ($(KERNELRELEASE),)
obj-m := proc.o
else
KDIR := ../5-3-1/linux-2.6.38
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers modul*
endif