1 bool布尔型
C++中bool是标准数据类型,单独占1个字节,可取的值为true/false。C中没有bool。如果出现,就是用户自定义的数据类型,可以通过sizeof(bool)来确定bool所占的数据类型。
kernel遇到的实例exp1,定义了多个bool成员在结构
体DAC960_V2_LogicalDeviceInfo中,成员变量名后的 :1表示该成员仅占用1位。也就是说:bool a:1; //只定义变量a占用1位,不非浪费7位。
-
exp1:
-
typedef struct DAC960_V2_LogicalDeviceInfo
-
{
-
............................
-
/* Logical Device Operations Status */
-
bool ConsistencyCheckInProgress:1; /* Byte 9 Bit 0 */
-
bool RebuildInProgress:1; /* Byte 9 Bit 1 */
-
bool BackgroundInitializationInProgress:1; /* Byte 9 Bit 2 */
-
bool ForegroundInitializationInProgress:1; /* Byte 9 Bit 3 */
-
bool DataMigrationInProgress:1; /* Byte 9 Bit 4 */
-
bool PatrolOperationInProgress:1; /* Byte 9 Bit 5 */
-
unsigned char :2; /* Byte 9 Bits 6-7 */
-
unsigned char RAID5WriteUpdate; /* Byte 10 */
-
unsigned char RAID5Algorithm; /* Byte 11 */
-
unsigned short LogicalDeviceNumber; /* Bytes 12-13 */
-
..................
-
unsigned char Reserved2[64]; /* Bytes 192-255 */
-
}
-
DAC960_V2_LogicalDeviceInfo_T;
2 EXPORT_SYMBOL()
EXPORT_SYMBOL有2种应用场景,一种是应用于内核函数符号结构体中,记录函数地址或者函数名称;另一种是导出函数符号,用于保存函数地址和名称。例如分别定义模块1中函数fun1()和模块2中函数fun2()。使用模块2时函数fun2需要调用模块1中的函数fun1,则需要:
在模块1中导出函数:EXPORT_SYMBOL(fun1);
在模块2中:extern int fun1();
这样就可以在模块2/函数fun2中调用fun1了。
exp2:
kmem_cache_create 303 ~/linux/kernel/fork.c:EXPORT_SYMBOL(kmem_cache_create);
阅读(1740) | 评论(0) | 转发(0) |