创建一个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/下
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/下
相关文章推荐
- 创建一个简单的debugfs文件系统节点
- AIX link ln 将一个目录链接到另外一个文件系统的目录 -- ln link 创建与删除
- 一个经过改良的XMLHelper(包含了序列化,反序列化,创建xml文件,读取节点,C#对象与xml文件的相互转换等等。)
- devtmpfs文件系统创建设备节点
- 创建一个简单的device_create_file文件节点
- 在一个文件里创建一个文件系统,将是一个新的磁盘,有木有!!!
- (转)FindFirstChangeNotification,创建一个文件通知对象,该对象用于监视文件系统发生的变化
- devtmpfs文件系统创建设备节点
- 把一个文件创建为文件系统
- 关于《创建组件**失败。错误消息为**未能加载文件或程序集**或它的某一个依赖。系统找不到指定文件。》的解决方案
- 判断本地系统目录下是否存在XML文件,如果不存在就创建一个XMl文件,若存在就在里面执行添加数据
- 如何在邮件中创建一个链接指向文件系统中的文件
- FindFirstChangeNotification,创建一个文件通知对象,该对象用于监视文件系统发生的变化
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一个依赖项。系统找不到指定的文件的解决办法
- solaris下创建一个 UFS 文件系统在文件上
- Linux文件系统的的实现:创建一个文件的过程
- 内容输出Linux文件系统的的实现:创建一个文件的过程
- centos系统中的root用户下的文件不小心删除了而且当时只创建了一个root用户,这个怎么恢复?
- devtmpfs文件系统创建设备节点
- Windows 2003 server中创建一个分布式文件系统