Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244500
  • 博文数量: 49
  • 博客积分: 2591
  • 博客等级: 少校
  • 技术积分: 515
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-15 00:03
文章分类

全部博文(49)

文章存档

2009年(3)

2008年(46)

我的朋友

分类: LINUX

2008-05-12 19:21:04

__devinit
 当内核在编译时不支持热拔插,则由__devinit修饰的函数在启动阶段结束时不再需要了(所有设备已被初始化)。因此,当不支持热拔插时__devinit变成了__init的别名。
__devexit 
PCI驱动程序被编译进内核且不支持热拔插时,pci_driver->remove所指的函数被初始化,且由__devexit标记的函数因为不需要而被丢弃。当模块被加载到不支持模块卸载的内核中时,函数也被丢弃。
__devinitdata 
当不支持热拔插时,数据也只在启动时需要。通常,在设备初始化时,设备驱动程序也用这个宏标记pci_driver->probe函数搜索到的字符串。例如:PCI设备驱动程序用__devinitdata标记pci_device_id表:一旦系统启动结束且不支持热拔插,内核将不在需要这个表。

 

__devinitdata是专门给硬件定义的宏,如果你的系统不支持热插拔的话,该宏没有任何意义,如果你是支持热插拔的系统,该宏的意义等同于__initdata

__initdata的意义应该很清楚了,就是说在设备加载启动完成后,凡是带有该标记的变量所占有的内存在初始化完成后都将被释放,这就是你为什么在linux的
内核启动完成后,经常可以看到多少多少K的memory被内核free掉的信息

阅读(1476) | 评论(0) | 转发(0) |
0

上一篇:简单的Makefile

下一篇:Redhat 常用服务介绍

给主人留下些什么吧!~~