__atribute__使用:关于_attribute__ ((used,__section__(".xxxx")))的理解

从etherboot代码中发现有一个__attribute__的使用,#define __pci_driver __attribute__ ((used,__section__(".drivers.pci")))
/* Defined by the linker... */
extern const struct pci_driver pci_drivers[];
extern const struct pci_driver pci_drivers_end[]; 

这部分代码是etherboot搜索相应网卡驱动用到的。

for(driver = pci_drivers; driver < pci_drivers_end; driver++) {

/*scan driver*/

}

__section__是把相应的结构放到指定的段.drivers.pci

在 src/arch/i386/core/etherboot.lds中有下面描述

SECTIONS {

......
 .drivers.pci : {
                pci_drivers = . ;
                *(.drivers.pci);
                pci_drivers_end = . ;
        }

......

}

说明所有的驱动都放在pci_drivers 和pci_drivers_end两个地址之间,这样可以通过上面的for循环一次查找相应的驱动程序。

unused

属性 unused 用于函数和变量,表示该函数或变量可能不使用,这个属性可以避免
编译器产生警告信息。used反之 。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值