在结构中查找未命名的联合

时间:2012-11-26 23:02:57

标签: haiku

我必须在Haiku开源项目的pthread.h中的struct _pthread_rwlock中找到一个未命名的联合。我开始使用c ++(过去的继承,多态和类)的一些知识开始这个任务,但我发现我学到的东西在我的情况下根本没有帮助。我打开了头文件和一个名为pthread_rwlock.cpp的源文件,并试图寻找未命名的联合,但是在这两个文件中似乎都没有联合。找到问题的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

pthreads.h中,您要查找的结构名称为pthread_rwlock_t。如果您向后关注包含文件,则会在sys/types.h中看到以下内容:

typedef struct  _pthread_rwlock    pthread_rwlock_t;
...
struct _pthread_rwlock {
    __haiku_std_uint32     flags;
    __haiku_std_int32      owner;
    union {
        struct {
            __haiku_std_int32    sem;
        } shared;
        struct {
            __haiku_std_int32    lock_sem;
            __haiku_std_int32    lock_count;
            __haiku_std_int32    reader_count;
            __haiku_std_int32    writer_count;
            void*                waiters[2];
        } local;
    } u;
};

我假设这里的工会是你正在寻找的工会。截至我正在查看的版本(d06f5808),联盟不再是匿名的。