Chinaunix首页 | 论坛 | 博客
  • 博客访问: 486927
  • 博文数量: 76
  • 博客积分: 5196
  • 博客等级: 大校
  • 技术积分: 1414
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-10 18:43
个人简介

转了个圈,又回来了

文章分类

全部博文(76)

文章存档

2013年(1)

2011年(8)

2010年(9)

2009年(22)

2008年(36)

我的朋友

分类: 嵌入式

2010-01-03 13:59:22

         Platform总线是Kernel中加入的一种虚拟总线,在最近版本的2.6的内核版本中,很多的驱动都已经用platform改写了。前面已经介绍了如何用platform总线在管理设备,下面介绍platform总线它本身是如何建立的。下面的内核代码是linux2.6.31.5版本的。 

首先可以把Platform总线看成一个设备,然后也是一个总线。Platform总线的初始化是在/drivers/base/platform.c中的platform_bus_init()中完成的。

struct device platform_bus = {

      .init_name   = "platform",

};

struct bus_type platform_bus_type = {

      .name        = "platform",

      .dev_attrs   = platform_dev_attrs,

      .match        = platform_match,

      .uevent       = platform_uevent,

      .pm      = PLATFORM_PM_OPS_PTR,

};

int __init platform_bus_init(void)

{

         int error;

 

         early_platform_cleanup();

 

         error = device_register(&platform_bus);

         if (error)

                   return error;

         error =  bus_register(&platform_bus_type);

         if (error)

                   device_unregister(&platform_bus);

         return error;

}

这个函数向系统注册platform_bus设备以及platform_bus_type总线。以后的platform的设备都会以此为parent,在sysfs系统中表现为,所有platform类型的设备都会添加在/sys/devices/platform下面。至于device_register bus_register以及刚才提到的sysfs系统将在以后的文章中介绍。

阅读(1212) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~