Cpumask 可以理解為一個(gè)變量,其中的每個(gè) bit 記錄了當(dāng)前 CPU 的狀態(tài)信息(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))??
簡(jiǎn)化之后:
????struct cpumask{
????????unsigned long bits[n];
????};
假如有CPU 有 24個(gè)核烧栋,那么 n 就為 1猛频。一個(gè) 8 字節(jié)的變量存儲(chǔ) 24 個(gè) bits 信息是很充足的揭蜒。