Cpumask

Cpumask 可以理解为一个变量,其中的每个 bit 记录了当前 CPU 的状态信息(online/offline)。

    typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;  

    #define DECLARE_BITMAP(name,bits) \  

        unsignedlong name[BITS_TO_LONGS(bits)]  

    #define BITS_TO_LONGS(nr)   DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))  

    #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))  

简化之后:

    struct cpumask{

        unsigned long bits[n];

    };

假如有CPU 有 24个核,那么 n 就为 1。一个 8 字节的变量存储 24 个 bits 信息是很充足的。

你可能感兴趣的:(Cpumask)