您的位置:首页 > 其它

创建一个procfs文件系统的节点

2016-12-28 09:32 357 查看
下面是一个创建简单的procfs文件节点的例子:

static ssize_t usb_hnp_show(struct file *file, char __user *user_buf,
size_t count, loff_t *ppos)
{
// char *buf;
ssize_t ret;
struct usb_device *udev = global_usb_device;

if (udev == NULL)
{
printk(KERN_ERR "%s:the usb_device is NULL\n", __func__);
return -EFAULT;
}

dev_err(&udev->dev, "zsm %s\n", __func__);

return ret;
}

static ssize_t usb_hnp_store(struct file *file,
const char __user *user_buf, size_t count,
loff_t *ppos)
{
char buf[32];
ssize_t buf_size;
struct usb_device *udev = global_usb_device;

if (udev == NULL)
{
printk(KERN_ERR "%s:the usb_device is NULL\n", __func__);
return -EFAULT;
}

dev_err(&udev->dev, "zsm %s\n", __func__);

buf_size = min(count, (size_t)(sizeof(buf)-1));
if (copy_from_user(buf, user_buf, buf_size)) {
dev_err(&udev->dev, "Failed to copy from user\n");
return -EFAULT;
}
buf[buf_size] = 0;

return buf_size;
}

static const struct file_operations usb_hnp_node_fops = {
.owner = THIS_MODULE,
.open = simple_open,
.read = usb_hnp_show,
.write = usb_hnp_store,
};

注册如下:

struct proc_dir_entry *usb_hnp_dentry;

usb_hnp_dentry = proc_create("enable_usb_hnp",
S_IRUGO, NULL, &usb_hnp_node_fops);


对应生成的文件节点位置如下:
在/proc/下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐