首页 > 其他 > 详细

kernel中对文件的读写【学习笔记】【原创】

时间:2018-01-09 21:55:55      阅读:143      评论:0      收藏:0      [点我收藏+]
/*1. 头文件 */
#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/fs.h>
#include <linux/uaccess.h>

MODULE_PARM_DESC(ivar, "module kernel list");



static char buf[] = "aa:aa:aa:aa:aa:aa";
static char readbuf[128];
/* 2.模块的加载函数*/
static int __init hello_init(void)
{
    struct file *fp;
    mm_segment_t fs;
    loff_t pos;


    fp = filp_open("/sys/kernel/pax_ethernet/mac",O_RDWR|O_CREAT,0644);
    if(IS_ERR(fp)){
        printk("create file error\r\n");
        return -1;
    }

    fs = get_fs();
    set_fs(KERNEL_DS);
    pos = 0;
    vfs_write(fp,buf,sizeof(buf),&pos);
    pos = 0;
    vfs_read(fp,readbuf,sizeof(readbuf),&pos);
    printk("Read:%s\r\n",readbuf);
    filp_close(fp,NULL);
    set_fs(fs);
    


    return 0;
}

/* 3.模块的卸载函数*/
static void __exit hello_exit(void)
{
  printk("Bye, drivers!\n");    
}

/*4. 模块的入口和出口*/
module_init(hello_init);
module_exit(hello_exit);

/*5.模块的许可声明*/
MODULE_LICENSE("GPL");

Makefile

ifeq ($(KERNELRELEASE),)
KERNELDIR ?=/home/zhuangzb/project/rk3288-e810-android6.0/kernel #内核路径
PWD :=$(shell pwd)   #当前路径

modules:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
    #cp hello.ko /opt/fs210/filesystem/drivers/ -f
modules_install:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
    rm -rf *.o *~core *.ko *.mod.c .tmp_versions Module.symvers modules.order
else
        obj-m :=kernel_file.o        #生成hello.ko

 

kernel中对文件的读写【学习笔记】【原创】

原文:https://www.cnblogs.com/zzb-Dream-90Time/p/8253714.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!