用宏初始化结构体

本文探讨了在Linux 3.0.4内核中如何使用宏来初始化结构体`struct pid`。结构体包含原子计数器、级别、任务链表和RCU头,以及一个upid数组。通过宏,可以方便地与结构体定义保持一致,实现结构体成员的初始化。
摘要由CSDN通过智能技术生成

#define INIT_STRUCT_PID {                        \
    .count         = ATOMIC_INIT(1),                \
    .tasks        = {                        \
        { .first = NULL },                    \
        { .first = NULL },                    \
        { .first = NULL },                    \
    },                                \
    .level        = 0,                        \
    .numbers    = { {                        \
        .nr        = 0,                    \
        .ns        = &init_pid_ns,                \
        .pid_chain    = { .next = NULL, .pprev = NULL },    \
    }, }                                \

}


在3.0.4内核中可以找到。

pid的定义是:

struct pid
{
    atomic_t count;
    unsigned int level;
    /* lists of tasks that use this pid */
    struct hlist_head tasks[PIDTYPE_MAX];
    struct rcu_head rcu;
    struct upid numbers[1];
};


可见定义的宏的结构和结构体struct的结构是一致的,便完成了结构体的初始化。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值