dev 目录文件通过udev的创建

static struct class_interface rtc_alarm_interface = {
 .add_dev = &rtc_alarm_add_device,
 .remove_dev = &rtc_alarm_remove_device,
};

1,-----------》

static int __init alarm_init(void)
{
 int err;
 int i;

 for (i = 0; i < ANDROID_ALARM_SYSTEMTIME; i++) {
  hrtimer_init(&alarm_timer[i], CLOCK_REALTIME, HRTIMER_MODE_ABS);
  alarm_timer[i].function = alarm_timer_triggered;
 }
 hrtimer_init(&alarm_timer[ANDROID_ALARM_SYSTEMTIME],
       CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
 alarm_timer[ANDROID_ALARM_SYSTEMTIME].function = alarm_timer_triggered;
 err = platform_driver_register(&alarm_driver);
 if (err < 0)
  goto err1;
 wake_lock_init(&alarm_wake_lock, WAKE_LOCK_SUSPEND, "alarm");
 wake_lock_init(&alarm_rtc_wake_lock, WAKE_LOCK_SUSPEND, "alarm_rtc");
 rtc_alarm_interface.class = rtc_class;
 err = class_interface_register(&rtc_alarm_interface);
 if (err < 0)
  goto err2;

 return 0;

err2:
 wake_lock_destroy(&alarm_rtc_wake_lock);
 wake_lock_destroy(&alarm_wake_lock);
 platform_driver_unregister(&alarm_driver);
err1:
 return err;
}

 

2,-------->

int class_interface_register(struct class_interface *class_intf)
{
 struct class *parent;
 struct class_dev_iter iter;
 struct device *dev;

 if (!class_intf || !class_intf->class)
  return -ENODEV;

 parent = class_get(class_intf->class);
 if (!parent)
  return -EINVAL;

 mutex_lock(&parent->p->class_mutex);
 list_add_tail(&class_intf->node, &parent->p->class_interfaces);
 if (class_intf->add_dev) {
  class_dev_iter_init(&iter, parent, NULL, NULL);
  while ((dev = class_dev_iter_next(&iter)))
   class_intf->add_dev(dev, class_intf);
  class_dev_iter_exit(&iter);
 }
 mutex_unlock(&parent->p->class_mutex);

 return 0;
}
3,--------->

class_intf->add_dev(dev, class_intf);

4,--------》

static int rtc_alarm_add_device(struct device *dev,
    struct class_interface *class_intf)

 

5,---------》

 err = misc_register(&alarm_device);
6,--------》

misc->this_device = device_create(misc_class, misc->parent, dev, NULL,
       "%s", misc->name);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值