device_create_file函数

1. device_create_file

    int device_create_file(struct device *, struct device_attribute *);

        在/sys/devices/xxx/目录下创建device属性文件

    void device_remove_file(struct device *, struct device_attribute *);

        移除/sys/devices/xxx/目录下的device属性文件

 

2. driver_sysfs_add

from link:http://blog.csdn.net/yj4231/article/details/7799245(Linux设备模型——设备驱动模型和sysfs文件系统解读)

static int driver_sysfs_add(struct device *dev)  
{  
    int ret;  
    /* 在/sys/bus/platform/drivers/s3c2410-spi目录下建立symlink,链接名为kobj->name(s3c2410-spi.0), 
       链接指向/sys/devices/platform/s3c2410-spi.0 */  
    ret = sysfs_create_link(&dev->driver->p->kobj, &dev->kobj,  
              kobject_name(&dev->kobj));  
    if (ret == 0) {  
        /* 在/sys/devices/platform/s3c2410-spi.0/下建立symlink,链接名为driver, 
          指向/sys/bus/drivers/s3c2410-spi */  
        ret = sysfs_create_link(&dev->kobj, &dev->driver->p->kobj,  
                    "driver");  
        if (ret)  
            sysfs_remove_link(&dev->driver->p->kobj,  
                    kobject_name(&dev->kobj));  
    }  
    return ret;  
}

 

 

static int driver_sysfs_add(struct device *dev)
{
	int ret;
	/* 在/sys/bus/XXX/drivers/XXX目录下建立symlink,链接名为kobj->name,
	   链接指向/sys/devices/platform/XXX */
	ret = sysfs_create_link(&dev->driver->p->kobj, &dev->kobj,
			  kobject_name(&dev->kobj));
	if (ret == 0) {
		/* 在/sys/devices/platform/XXX/下建立symlink,链接名为driver,
		  指向/sys/bus/xxx/drivers目录下的某个目录*/
		ret = sysfs_create_link(&dev->kobj, &dev->driver->p->kobj,
					"driver");
		if (ret)
			sysfs_remove_link(&dev->driver->p->kobj,
					kobject_name(&dev->kobj));
	}
	return ret;
}
 * sysfs_create_link - create symlink between two objects.
 * @kobj: object whose directory we're creating the link in.
 * @target: object we're pointing to.
 * @name:  name of the symlink.

int sysfs_create_link(struct kobject *kobj, struct kobject *target, const char *name)

第一个参数是要创建连接的对象(就是链接文件所在的目录),第二个参数是指向的对象(就是链接中实实在在的文件或者目录),第三个参数是链接文件名字。


执行完以后,建立了两个链接。

这样就在用户空间呈现出驱动和设备的关系了。我们来验证下。

[root@yj423 s3c2410-spi]#pwd
/sys/bus/platform/drivers/s3c2410-spi
[root@yj423 s3c2410-spi]#ll s3c2410-spi.0
lrwxrwxrwx    1 root     root             0 Jan  1 02:28 s3c2410-spi.0 -> ../../../../devices/platform/s3c2410-spi.0

[root@yj423 s3c2410-spi.0]#pwd
/sys/devices/platform/s3c2410-spi.0
[root@yj423 s3c2410-spi.0]#ll driver
lrwxrwxrwx    1 root     root             0 Jan  1 02:26 driver -> ../../../bus/platform/drivers/s3c2410-spi

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值