文件节点创建


1创建文件节点文件夹:
struct proc_dir_entry *proc_test_dir;
proc_test_dir = proc_mkdir("proc_test", NULL);
proc_test:文件夹名字

NULL:父文件夹指针,NULL表示proc_test在proc文件夹下


2创建文件节点:
proc_create("proc_gpio", S_IRUGO | S_IWUSR, proc_test_dir, &proc_gpio_fops);
printk("proc_create proc_gpio_fops\n");
proc_gpio:文件名
IRUGO | S_IWUSR:文件权限
proc_test_dir:父文件夹指针,表示proc_gpio在proc_test文件夹下

proc_gpio_fops:操作函数


3编写文件节点操作函数
static const struct file_operations proc_gpio_fops = {
        .owner          = THIS_MODULE,
        .open           = proc_gpio_open,
        .read           = proc_gpio_read,
        .write          = proc_gpio_write,
        .llseek         = seq_lseek,
        .release        = single_release,
};
seq跟single开头的是在kernel内部实现的函数,可以不写
具体的操作函数示例如下:
static ssize_t proc_gpio_write(struct file *file, const char __user *buffer, size_t count, loff_t *data)
{
       if (copy_from_user(&proc_gpio_write_flag, buffer, count))
                return -EFAULT;
      
        return count;
}


static ssize_t proc_gpio_read(struct file *flip, char __user *user_buf, size_t count, loff_t *ppos)
{      
        int len = 0;


        len = simple_read_from_buffer(user_buf, count, ppos, &proc_gpio_read_flag, 1);


        return len;
}


static int proc_gpio_show(struct seq_file *m, void *v)
{
        return 0;
}


static int proc_gpio_open(struct inode *inode, struct file *file)
{
        return single_open(file, proc_gpio_show, NULL);
}

这是一个文件节点创建的框架,操作函数中的具体内容还需要按自己需求去写。


4对文件节点进行操作(节点位置)
adb shell打开shell终端
通过echo xxx > /proc/proc_gpio写入proc_gpio文件,进行控制



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值