小编bud*_*ack的帖子

结构体内部只有一个成员的联合的目的

我在 Linux 内核源代码中的纯代码中看到了这样的联合内部结构定义struct cma_multicast(它不是唯一的一个地方。似乎这是一些常见的做法):

struct cma_multicast {
    struct rdma_id_private *id_priv;
    union {
        struct ib_sa_multicast *ib;
    } multicast;
    struct list_head    list;
    void            *context;
    struct sockaddr_storage addr;
    struct kref     mcref;
};
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚在结构中只有一个成员的联合的目的是什么?为什么我们不能直接输入struct ib_sa_multicast *ib;

我读过这篇文章,但它没有使用说明,只有 C++ 特异性。

UPD:
发布的示例来自 Linux 内核而不是专有代码。

c union struct linux-kernel data-structures

9
推荐指数
1
解决办法
163
查看次数

Linux 内核“BUG:进程中的页面状态错误..”理解

我有一些专有的内核模块。
突然我的系统在 kdb 中崩溃了,并出现这样的错误:

BUG: bad page state in process <kworker_name> pfn:37751
page:<page_address> count:-1 mapcount:0 mapping:00000000 index:0x0
...
page dumped because: nonzero _count
Run Code Online (Sandbox Code Playgroud)

那么应该如何理解它的确切含义呢?不幸的是我在互联网上找不到有关此错误的任何信息。和
是什么意思?可以得出什么结论? 抱歉,如果很明显的话。pfn:37751count:-1

linux debugging kernel-module linux-device-driver linux-kernel

7
推荐指数
0
解决办法
7192
查看次数