gpt4 book ai didi

c - 如何理解用它定义 x 和位运算?

转载 作者:太空宇宙 更新时间:2023-11-04 03:29:22 24 4
gpt4 key购买 nike

我正在使用 free-electrons.com 在内核源代码中导航。我想知道以下代码片段中的 IFF_PROMISC 是什么。我可以看到它被定义为

#define IFF_PROMISC                     IFF_PROMISC

在 Linux/include/uapi/linux/if.h 和我应该看到类似的东西

#define IFF_PROMISC                     (unsigned long)12     //0xC
instead. Please explain the meaning of such define and which bits will be substituted by preprocessor above this sentence.

static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notify)
{
unsigned int old_flags = dev->flags;
kuid_t uid;
kgid_t gid;

ASSERT_RTNL();

dev->flags |= IFF_PROMISC;
dev->promiscuity += inc;

最佳答案

IFF_PROMISC 的值在 enum net_device_flags 中设置,它位于同一文件 include/uapi/linux/if.h 中。它就在您引用的 #define 行之前。

如果您查看文件 include/uapi/linux/if.h,您可以看到:

enum net_device_flags {
/* */
/* Many other values - too I removed for brevity */
IFF_NOARP = 1<<7, /* sysfs */
IFF_PROMISC = 1<<8, /* sysfs */
IFF_ALLMULTI = 1<<9, /* sysfs */
/* Many other values - too I removed for brevity */
/* */
};

然后 #define 如下:

#define IFF_PROMISC                     IFF_PROMISC

关于c - 如何理解用它定义 x 和位运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38250257/

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