首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux内核中spinlock_t的定义

linux内核中spinlock_t的定义
EN

Stack Overflow用户
提问于 2017-01-19 16:34:33
回答 1查看 2.7K关注 0票数 1

在include/linux/spinlock_types.h中

spinlock_t的定义如下

代码语言:javascript
复制
typedef struct spinlock {
        union {
                struct raw_spinlock rlock;
                struct {
                        u8 __padding[];
                        struct lockdep_map dep_map;
                };
        };
} spinlock_t;

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

但不只是像下面这样吗?

代码语言:javascript
复制
typedef struct spinlock {
        union {
                struct raw_spinlock rlock;
                u8 __padding[];
                struct lockdep_map dep_map;
        };
} spinlock_t;

有什么特别的意思吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-06-15 18:11:30

因为它是两个结构的联合,而另一个结构在调试期间被启用。你要做的是创建在all.And中不需要的结构成员,你应该理解,在两个结构的联合中,我们可以一次使用一个。

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41737182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档