在读到linux驱动模型注册一个platform平台设备的时候,有struct device platform={.bus_id="platform",}; 其他成员变量并没有初始化,想求证一下,其他成员变量是不是被gcc自动初始化为 0 或者null或者在其他我没看见的地方对他们有初始化操作。 如果没有初始化 类似下面的操作可能会出错:if (dev->init_name) dev_set_name(dev, "%s", dev->init_name); 如果没初始化dev->init_name相当于一个野指针。 请大侠指点
by hidiy - 驱动开发 - 2010-05-13 11:02:27 阅读(1392) 回复(0)
本帖最后由 hidiy 于 2010-05-12 21:58 编辑 在阅读linux驱动源码的时候,看见在注册一个平台设备的时候,有如下语句error = device_register(&platform_bus); 发现内核在注册platform这个设备的时候,struct device platform={.bus_id="platform"}只有初始化了一个成员变量。 device_add(dev);函数中有调用到if (dev->init_name)dev_set_name(dev, "%s", dev->init_name); 和parent = get_device(dev->parent);这样的函数。...
2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:l 代码重复最小化。l 提供诸如引用计数这样的统一机制。l 可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。l 可以将系统中的全部设备结构以树的形式完整、有效的展 现出来——包括所有的总线和内部连接。...
驱动,设备,类,总线这几个类的关系! 我一直迷惑!再就是对我们驱动开发时,有时注册的方式都不一样,是不是要根据你的设备要求来的! 如:字符注册,总线注册,设备注册,类注册。 但是,从内核的拓扑看的话,又好像是相互归属。设备,驱动,又是总线下面,设备又归属到某一类的设备。而设备统一一个归属。相互链接!!真是比较麻烦! 前辈!!! 讨教几抬有关这方面的内容知识! 谢谢!!!
linux 2.6内核的一个重要特色是提供了统一的内核设备模型。随着技术的不断进步,系统的拓扑结构越来越复杂,对智能电源管理、热插拔以及plug and play的支持要求也越来越高,2.4内核已经难以满足这些需求。为适应这种形势的需要,2.6内核开发了全新的设备模型。 1. Sysfs文件系统 Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其顶层目...
1 平台设备和驱动初识 platform是一个虚拟的地址总线,相比pci,usb,它主要用于描述SOC上的片上资源,比如s3c2410上集成的控制器(lcd,watchdog,rtc等),platform所描述的资源有一个共同点,就是在cpu的总线上直接取址。 平台设备会分到一个名称(用在驱动绑定中)以及一系列诸如地址和中断请求号(IRQ)之类的资源. struct platform_device { const char * name; int id; struct device dev; u32 ...