第12章工程中的 Linux设备驱动之基于 sysfs 的设备驱动

12.6 基于 sysfs (sys文件系统)的设备驱动

    一些设备驱动以 sysfs 结点的形式存在,其本身没有对应的/dev 结点;一些设备驱动虽然有对应的/dev 结点,也依赖于sysfs 结点进行一些工作。

    Linux 专门提供了一种类型的设备驱动,以结构体sysdev_driver 进行描述,该结构体的定义如代码清单12.22 所示。

    代码清单 12.22 sysdev_driver 

2.6内核

include/linux/sysdev.h

struct sysdev_driver {
        struct list_head        entry;
        int     (*add)(struct sys_device *);
        int     (*remove)(struct sys_device *);
        int     (*shutdown)(struct sys_device *);
        int     (*suspend)(struct sys_device *, pm_message_t state);
        int     (*resume)(struct sys_device *);
};

注册和注销此类驱动的API 为:

int sysdev_driver_register(struct sysdev_class *, struct sysdev_driver *);

void sysdev_driver_unregister(struct sysdev_class *, struct sysdev_driver *);

而此类驱动中通常会通过如下两个API 来创建和移除sysfs 的结点:

int sysdev_create_file(struct sys_device *, struct sysdev_attribute *);

void sysdev_remove_file(struct sys_device *, struct sysdev_attribute *);

drivers/base/sys.c

int sysdev_create_file(struct sys_device * s, struct sysdev_attribute * a)
{
        return sysfs_create_file(&s->kobj, &a->attr);
}

void sysdev_remove_file(struct sys_device * s, struct sysdev_attribute * a)
{
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值