📄 cpumask_up.h
字号:
#ifndef __ASM_GENERIC_CPUMASK_UP_H#define __ASM_GENERIC_CPUMASK_UP_H#define cpus_coerce(map) (map)#define cpu_set(cpu, map) do { (void)(cpu); cpus_coerce(map) = 1UL; } while (0)#define cpu_clear(cpu, map) do { (void)(cpu); cpus_coerce(map) = 0UL; } while (0)#define cpu_isset(cpu, map) ((void)(cpu), cpus_coerce(map) != 0UL)#define cpu_test_and_set(cpu, map) ((void)(cpu), test_and_set_bit(0, &(map)))#define cpus_and(dst, src1, src2) \ do { \ if (cpus_coerce(src1) && cpus_coerce(src2)) \ cpus_coerce(dst) = 1UL; \ else \ cpus_coerce(dst) = 0UL; \ } while (0)#define cpus_or(dst, src1, src2) \ do { \ if (cpus_coerce(src1) || cpus_coerce(src2)) \ cpus_coerce(dst) = 1UL; \ else \ cpus_coerce(dst) = 0UL; \ } while (0)#define cpus_clear(map) do { cpus_coerce(map) = 0UL; } while (0)#define cpus_complement(map) \ do { \ cpus_coerce(map) = !cpus_coerce(map); \ } while (0)#define cpus_equal(map1, map2) (cpus_coerce(map1) == cpus_coerce(map2))#define cpus_empty(map) (cpus_coerce(map) == 0UL)#define cpus_addr(map) (&(map))#define cpus_weight(map) (cpus_coerce(map) ? 1UL : 0UL)#define cpus_shift_right(d, s, n) do { cpus_coerce(d) = 0UL; } while (0)#define cpus_shift_left(d, s, n) do { cpus_coerce(d) = 0UL; } while (0)#define first_cpu(map) (cpus_coerce(map) ? 0 : 1)#define next_cpu(cpu, map) 1/* only ever use this for things that are _never_ used on large boxen */#define cpus_promote(map) \ ({ \ cpumask_t __tmp__; \ cpus_coerce(__tmp__) = map; \ __tmp__; \ })#define cpumask_of_cpu(cpu) ((void)(cpu), cpus_promote(1))#define any_online_cpu(map) (cpus_coerce(map) ? 0 : 1)/* * um, these need to be usable as static initializers */#define CPU_MASK_ALL 1UL#define CPU_MASK_NONE 0UL#endif /* __ASM_GENERIC_CPUMASK_UP_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -