gpt4 book ai didi

linux - linux内核中spinlock_t的定义

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:09 25 4
gpt4 key购买 nike

在 include/linux/spinlock_types.h 中

spinlock_t的定义如下

typedef struct spinlock {
union {
struct raw_spinlock rlock;
struct {
u8 __padding[];
struct lockdep_map dep_map;
};
};
} spinlock_t;

为什么“__padding[]”和“dep_map”变量应该放在一个没有名字的结构中

但不只是像下面这样?

typedef struct spinlock {
union {
struct raw_spinlock rlock;
u8 __padding[];
struct lockdep_map dep_map;
};
} spinlock_t;

有什么特殊意义吗?

谢谢

最佳答案

因为它是两个结构的并集,并且在调试期间启用了另一个结构。您正在尝试做的是创建根本不需要的结构成员。您应该了解我们一次可以使用一个结构的两个结构的联合。

typedef struct spinlock {
union {
struct raw_spinlock rlock;

#ifdef CONFIG_DEBUG_LOCK_ALLOC
# define LOCK_PADSIZE (offsetof(struct raw_spinlock, dep_map))
struct {
u8 __padding[LOCK_PADSIZE];
struct lockdep_map dep_map;
};
#endif
};
} spinlock_t;

关于linux - linux内核中spinlock_t的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com