input_allocate_device浅析

一.input_allocate_device分析,看看这个东西,到底完成了什么样的工作,应该不是简单的kmalloc

struct input_dev *input_allocate_device(void)
{
    struct input_dev *dev;             //一个input_dev的指针

    dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL);  //分配工作
    if (dev) {
        dev->dev.type = &input_dev_type;    //对input_dev继成的device结构的初始化
*******************************************************************************8
static struct device_type input_dev_type = {
    .groups        = input_dev_attr_groups, //设备属性的初始化
    .release    = input_dev_release,    //设备释放函数,应该是个回调函数
    .uevent        = input_dev_uevent,    //设备所支持的事件
#ifdef CONFIG_PM
    .pm        = &input_dev_pm_ops,    //电源管理
#endif
};

*******************************************************************************
            
        dev->dev.class = &input_class;   //这个不太明白
        device_initialize(&dev->dev);
******************************************************************************
void device_initialize(struct device *dev)
{
    dev->kobj.kset = devices_kset;  //将这个对象属于这个device_kset集
    kobject_init(&dev->kobj, &device_ktype);  //kobj的初始化,计数为1
    INIT_LIST_HEAD(&dev->dma_pools);    //初始化DMA链表
    init_MUTEX(&dev->sem);            //信号量的初始化。互斥访问
    spin_lock_init(&dev->devres_lock);
    INIT_LIST_HEAD(&dev->devres_head);    
    device_init_wakeup(dev, 0);    //如果可以被唤醒,则唤醒
    device_pm_init(dev);        //初始化电源管理
    set_dev_node(dev, -1);        
*****************************************
//static inline void set_dev_node(struct device *dev, int node)
{
    dev->numa_node = node;//这个不明白有什么作用
}
*****************************************
}

*****************************************************************************
        mutex_init(&dev->mutex);
        spin_lock_init(&dev->event_lock);
        INIT_LIST_HEAD(&dev->h_list);   //handler链表初始化
        INIT_LIST_HEAD(&dev->node);    //input_dev链表初始化

        __module_get(THIS_MODULE);
    }

    return dev;

}

不对之处,望大家多多指教

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值