如何用它来比较定义x x和按位运算?

时间:2016-07-07 16:04:14

标签: c linux-kernel

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

#define IFF_PROMISC                     IFF_PROMISC

在Linux / include / uapi / linux / if.h,我应该看到类似于

#define IFF_PROMISC                     (unsigned long)12     //0xC
的内容。请解释这种定义的含义以及哪些位将由该句子上方的预处理器替换。

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;

1 个答案:

答案 0 :(得分:1)

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 跟随:

{{1}}