Linux proc_mkdir和proc_create的用法

//功能:在proc中建立一个文件夹函数

//参数1:建立的文件夹名称spa

//参数2:建立的文件夹路径,就是在哪一个文件夹中建立,若是是proc根目录,此参数为NULLcode

//返回值:建立的文件夹路径orm

struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent);blog

 

//功能:在proc中建立一个文件rem

//参数1:建立的文件的名称it

//参数2:文件的读写权限io

//参数3:建立的文件路径,即在哪一个文件夹中建立,若是是proc根目录,此参数为NULLform

//参数4:此文件的操做函数file_operationsclass

//返回值:建立的文件路径

static inline struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops);

 

//功能:删除proc中的文件或文件夹

//参数:删除的文件或文件夹路径

//返回:无

void proc_remove(struct proc_dir_entry *de);

 

#define BASE_DIR_NAME     "led"

struct file_operations led_ops = { .owner = THIS_MODULE, .open = led_ctl_open, .release = led_ctl_release, .write = led_ctl_write, }; static int led_ctl_probe(struct platform_device *pdev) { printk("%s\n", __func__); // 在 proc 根目录建立 led 文件夹
    base = proc_mkdir(BASE_DIR_NAME, NULL); if(base == NULL){ printk("%s proc create %s failed\n", __func__, BASE_DIR_NAME); return -EINVAL; } // 在 led 文件夹中建立文件 led_ctl,文件操做函数为 led_ops
    led_ctl = proc_create("led_ctl", 0777, base, &led_ops); if (led_ctl == NULL) { printk("proc_create failed!\n"); // led_ctl 文件建立失败,删除上一步建立的文件夹 led
        proc_remove(base); return -EINVAL; } return 0; } static int led_ctl_remove(struct platform_device *pdev) { printk("%s\n", __func__); // 删除 led_ctl 文件
 proc_remove(led_ctl); // 删除 led 文件夹
    proc_remove(base); return 0; }
相关文章
相关标签/搜索