linux内核 平台资源相关
2010-07-19 20:53
197 查看
linux-2.6.24/arch/arm/mach-*/platform-devices.c
linux-2.6.24/drivers/base/platform.c
而接下来,在驱动初始化的时候,经常会使用下面的调用来得到相关的资源,IRQ,MEN等等:
s3c2410_rtc_tickno = platform_get_irq(pdev, 1);传入的NUM是1, 也就是[ 2 ]
s3c2410_rtc_alarmno = platform_get_irq(pdev, 0);传入的NUM是0, 也就是[ 1 ]
这两句最终的结果是:
static struct resource s3c_rtc_resource[] = { [0] = { .start = S3C2410_PA_RTC, //IO设备的物理地址 .end = S3C2410_PA_RTC + 0xff, .flags = IORESOURCE_MEM, }, [1] = { .start = IRQ_RTC, .end = IRQ_RTC, .flags = IORESOURCE_IRQ, }, [2] = { .start = IRQ_TICK, .end = IRQ_TICK, .flags = IORESOURCE_IRQ } };
linux-2.6.24/drivers/base/platform.c
struct resource *platform_get_resource(struct platform_device *dev, unsigned int type,unsigned int num) { int i; for (i = 0; i < dev->num_resources; i++) //num_resource 的个数 { struct resource *r = &dev->resource; //resource应该s3c2410_rtc_resource是通过下标来对resource赋值 if ((r->flags & (IORESOURCE_IO|IORESOURCE_MEM|IORESOURCE_IRQ|IORESOURCE_DMA))== type) if (num-- == 0) return r; } return NULL; }
而接下来,在驱动初始化的时候,经常会使用下面的调用来得到相关的资源,IRQ,MEN等等:
s3c2410_rtc_tickno = platform_get_irq(pdev, 1);传入的NUM是1, 也就是[ 2 ]
s3c2410_rtc_alarmno = platform_get_irq(pdev, 0);传入的NUM是0, 也就是[ 1 ]
这两句最终的结果是:
s3c2410_rtc_tickno =IRQ_TICK s3c2410_rtc_alarmno= IRQ_RTC
int platform_get_irq(struct platform_device *dev, unsigned int num) { struct resource *r = platform_get_resource(dev, IORESOURCE_IRQ, num); return r ? r->start : 0; }
相关文章推荐
- Linux内核相关资源和书籍
- JEECG微云快速开发平台相关资源下载
- Linux内核(5) - 内核学习的相关资源
- Intel Centrino 2 vPro平台上的Intel AMT 4.0技术相关资源
- 构建位置(地图)服务平台的相关开源资源
- linux驱动平台相关资源
- Wince 或Windows平台 C#调用Bitmap对象后资源应该如何释放
- 在自已的程序中操作moss相关资源时提示System.Security.SecurityException
- 蝉知门户系统迁移到SAE平台-日志相关
- 安卓SDK相关资源下载
- Latex相关资源汇总
- 树定义相关资源
- Solaris10平台资源过度使用案例:JBoss控制台报JMS消息服务器无法连接
- QT 相关资源(书籍、论坛、博客等。。。)整理...
- JSP开发入门(五)--JSP其他相关资源
- Linux内核中内存相关的操作函数
- C#在WinCE平台上的相关技巧
- Spring 的优秀工具类盘点,第 1 部分: 文件资源操作和 Web 相关工具类
- NET中使用Memcached的相关资源整理