dev/watchdog 下会有watchdog 和 watchdog0等等。这里先给出结论watchdog和watchdog0代表的是同一个硬件,即使他们的字符设备的major和minor 不一样
linux-hice:~ # ls /dev/watchdog
watchdog   watchdog0  watchdog1

linux-hice:/dev # ls -al | grep watchdog
crw-------   1 root root     10, 130 Jun  7 04:38 watchdog
crw-------   1 root root    252,   0 Jun  7 04:38 watchdog0
crw-------   1 root root    252,   1 Jun  7 04:38 watchdog1

一般在watchdog的probe函数中都会调用watchdog_register_device 来在dev下注册设备,就是如上面的/dev/watchdog等
watchdog_register_device->__watchdog_register_device->watchdog_dev_register
int watchdog_dev_register(struct watchdog_device *wdd)
{
    struct device *dev;
    dev_t devno;
    int ret;

devno = MKDEV(MAJOR(watchdog_devt), wdd->id);

ret = watchdog_cdev_register(wdd, devno);
    if (ret)
        return ret;
//这里就注册dev/watchdog0
    dev = device_create_with_groups(&watchdog_class, wdd->parent,
                    devno, wdd, wdd->groups,
                    "watchdog%d", wdd->id);
    if (IS_ERR(dev)) {
        watchdog_cdev_unregister(wdd);
        return PTR_ERR(dev);
    }

ret = watchdog_register_pretimeout(wdd);
    if (ret) {
        device_destroy(&watchdog_class, devno);
        watchdog_cdev_unregister(wdd);
    }

return ret;
}

static int watchdog_cdev_register(struct watchdog_device *wdd, dev_t devno)
{
    struct watchdog_core_data *wd_data;
    int err;

wd_data = kzalloc(sizeof(struct watchdog_core_data), GFP_KERNEL);
    if (!wd_data)
        return -ENOMEM;
    kref_init(&wd_data->kref);
    mutex_init(&wd_data->lock);

wd_data->wdd = wdd;
    wdd->wd_data = wd_data;

if (!watchdog_wq)
        return -ENODEV;

INIT_DELAYED_WORK(&wd_data->work, watchdog_ping_work);
//如果id是0的话,就调用misc_register 来注册/dev/watchdog,注意这个/dev/watchdog 对应的watchdog_device *wdd 和调用cdev_add 添加的字符设备用的同一个watchdog_device *wdd,所以才说他们对应的是同一个hw,以上层应用不管是打开dev/watchdog还是dev/watchdog0 都是一样的.
    if (wdd->id == 0) {
        old_wd_data = wd_data;
        watchdog_miscdev.parent = wdd->parent;
        err = misc_register(&watchdog_miscdev);
        if (err != 0) {
            pr_err("%s: cannot register miscdev on minor=%d (err=%d).\n",
                wdd->info->identity, WATCHDOG_MINOR, err);
            if (err == -EBUSY)
                pr_err("%s: a legacy watchdog module is probably present.\n",
                    wdd->info->identity);
            old_wd_data = NULL;
            kfree(wd_data);
            return err;
        }
    }

/* Fill in the data structures */
    cdev_init(&wd_data->cdev, &watchdog_fops);
    wd_data->cdev.owner = wdd->ops->owner;

/* Add the device */
    err = cdev_add(&wd_data->cdev, devno, 1);
    if (err) {
        pr_err("watchdog%d unable to add device %d:%d\n",
            wdd->id,  MAJOR(watchdog_devt), wdd->id);
        if (wdd->id == 0) {
            misc_deregister(&watchdog_miscdev);
            old_wd_data = NULL;
            kref_put(&wd_data->kref, watchdog_core_data_release);
        }
        return err;
    }

/* Record time of most recent heartbeat as 'just before now'. */
    wd_data->last_hw_keepalive = jiffies - 1;

/*
     * If the watchdog is running, prevent its driver from being unloaded,
     * and schedule an immediate ping.
     */
    if (watchdog_hw_running(wdd)) {
        __module_get(wdd->ops->owner);
        kref_get(&wd_data->kref);
        queue_delayed_work(watchdog_wq, &wd_data->work, 0);
    }

return 0;
}
之所以要注册/dev/watchog 是为来兼容老的接口

dev/watchdog和dev/watchdog0 是同一个设备相关推荐

  1. linux 触摸屏在dev的那个目录下,各硬件设备在Linux中的文件名

    原标题:各硬件设备在Linux中的文件名 选择好你的硬件设备以后,接下来得要了解一下各硬件在Linux当中扮演得角色.再次强调一下:"在Linux系统中,每个设备都被当成一个文件来对峙&qu ...

  2. 查看linux设备Ran的大小,linux – 来自/ dev / zero和/ dev / urandom的不同文件大小

    dd status=progress if=/dev/zero of=/tmp/testfile.zer bs=100M count=10 dd status=progress if=/dev/ura ...

  3. linux mtd 块设备,Linux系统中/dev/mtd与/dev/mtdblock的区别,即MTD字符设备和块设备的区别...

    转:http://www.crifan.com/linux_system_in__dev__mtd_and__dev__mtdblock_distinction_character_devices_a ...

  4. /dev/tty和/dev/console

    目录 1.串行端口终端(/dev/ttySn) 2.伪终端(/dev/pty/) 3.控制终端(/dev/tty) 4.控制台终端(/dev/ttyn, /dev/console) 5.其它类型 (1 ...

  5. /dev/random 和 /dev/urandom 的原理

    /dev/random和 /dev/urandom是 Linux 上的字符设备文件,它们是随机数生成器,为系统提供随机数 随机数的重要性 随机数在计算中很重要. TCP/IP 序列号.密码盐和 DNS ...

  6. /dev/console,/dev/tty 和 /dev/null

    UNIX和Linux中比较重要的三个设备文件是:/dev/console,/dev/tty和/dev/null. 0 /dev/console 这个设备代表的是系统控制台,错误信息和诊断信息通常会被发 ...

  7. /dev、/sys/dev 和/sys/devices 和udev的关系

    /dev,设备文件存储目录,应用程序通过对这些文件的读写和控制,可以访问实际的设备: /sys/devices目录,按照设备挂接的总线类型,组织成层次结构,保存了系统所有的设备:是文件系统管理设备的最 ...

  8. 关于 /dev/null 与 /dev/zero

    使用/dev/null 把/dev/null 看作"黑 洞" . 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /de ...

  9. linux dd devzero,makefile中ifeq与ifneq dev/null和dev/zero简介 dd命令

    ifeq语法是ifeq ";" ";"  ,功能是比较参数"arg1"和"arg2"的值是否相同,相同时为1 ifneq ...

最新文章

  1. Android外设存储设备的访问及测试
  2. 系统制成docker镜像_Docker学习以及镜像制作流程
  3. MATLAB:图像的与、或、非、异或逻辑运算(、|、~、xor)
  4. Ubuntu中update-alternatives命令(版本切换)
  5. 冒名顶替上大学罗彩霞_什么是冒名顶替综合症,您如何克服?
  6. mysql 执行计划详解,Mysql中的explain执行计划详解(1)
  7. logback指定不同包下的日志输出到不同的文件
  8. Android中在布局中写ViewPager无法渲染出来的问题
  9. linux扫描后台地址,Linux如何查看和控制进程
  10. oracle数据文件recover,又遇BUG-ORA-01148:数据文件忽然变为recover状态
  11. Beyong Compare4过期解决办法
  12. 做好数据全生命周期管理,实现数据资产化
  13. 路由器有线优先吗_如何设置有线上网优先 - 卡饭网
  14. 苹果测试充电速度软件,ChargerLAB推出iPhone 8快充测试工具POWER-Z
  15. 基于pikachu漏洞平台的 --SQL注入攻击学习与总结
  16. 宽和窄俯卧撑哪个更难_宽距俯卧撑与窄距俯卧撑,练出来的肌肉有什么差距?...
  17. linux定时任务nodejs,让Nodejs来管理定时任务later
  18. 速学堂高淇老师java作业,公用电话传递数据进行加密
  19. 手机网页html怎样阻止广告,Webview拦截广告
  20. python用禁忌搜索算法实现TSP旅行商问题

热门文章

  1. linux服务器u盘启动失败怎么办,U盘安装Linux启动失败问题(grub)
  2. OWASP TOP10 及防御手段(附加应用安全设计框架)
  3. python文件二进制加密
  4. 系统支付服务器 绑定支付宝,支付宝支付 · CRMEB 多商户系统 帮助文档 · 看云...
  5. HPLC载波模块通信单元引脚定义
  6. 三校生计算机应用基础模块,三校生高考《计算机应用基础》电子教案.doc
  7. [网络收集]为了保护您眼睛视力,请对Vista/Win7/XP作如下设置
  8. Python初学者必须会的Jupyter Notebook
  9. 【190115】VC++ 视频聊天系统源代码
  10. 渗透测试中网站代码漏洞审计服务