Blame src/perfctr-2.6.x/linux/drivers/perfctr/cpumask.h

Packit Service a1973e
/* $Id: cpumask.h,v 1.6.2.3 2009/01/23 17:01:02 mikpe Exp $
Packit Service a1973e
 * Performance-monitoring counters driver.
Packit Service a1973e
 * Partial simulation of cpumask_t on non-cpumask_t kernels.
Packit Service a1973e
 * Extension to allow inspecting a cpumask_t as array of ulong.
Packit Service a1973e
 * Appropriate definition of perfctr_cpus_forbidden_mask.
Packit Service a1973e
 *
Packit Service a1973e
 * Copyright (C) 2003-2004, 2009  Mikael Pettersson
Packit Service a1973e
 */
Packit Service a1973e
Packit Service a1973e
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,1)
Packit Service a1973e
Packit Service a1973e
/* 2.6.1-rc1 introduced cpus_addr() */
Packit Service a1973e
#ifdef CPU_ARRAY_SIZE
Packit Service a1973e
#define cpus_addr(map)		((map).mask)
Packit Service a1973e
#else
Packit Service a1973e
#define cpus_addr(map)		(&(map))
Packit Service a1973e
#endif
Packit Service a1973e
Packit Service a1973e
#endif
Packit Service a1973e
Packit Service a1973e
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,8) && !defined(cpus_andnot)
Packit Service a1973e
#define cpus_andnot(dst, src1, src2) \
Packit Service a1973e
do { \
Packit Service a1973e
    cpumask_t _tmp2; \
Packit Service a1973e
    _tmp2 = (src2); \
Packit Service a1973e
    cpus_complement(_tmp2); \
Packit Service a1973e
    cpus_and((dst), (src1), _tmp2); \
Packit Service a1973e
} while(0)
Packit Service a1973e
#endif
Packit Service a1973e
Packit Service a1973e
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,8) && !defined(CONFIG_SMP)
Packit Service a1973e
#undef cpu_online_map
Packit Service a1973e
#define cpu_online_map	cpumask_of_cpu(0)
Packit Service a1973e
#endif
Packit Service a1973e
Packit Service a1973e
#ifdef CPU_ARRAY_SIZE
Packit Service a1973e
#define PERFCTR_CPUMASK_NRLONGS	CPU_ARRAY_SIZE
Packit Service a1973e
#else
Packit Service a1973e
#define PERFCTR_CPUMASK_NRLONGS	1
Packit Service a1973e
#endif
Packit Service a1973e
Packit Service a1973e
/* CPUs in `perfctr_cpus_forbidden_mask' must not use the
Packit Service a1973e
   performance-monitoring counters. TSC use is unrestricted.
Packit Service a1973e
   This is needed to prevent resource conflicts on hyper-threaded P4s. */
Packit Service a1973e
#ifdef CONFIG_PERFCTR_CPUS_FORBIDDEN_MASK
Packit Service a1973e
extern cpumask_t perfctr_cpus_forbidden_mask;
Packit Service a1973e
#define perfctr_cpu_is_forbidden(cpu)	cpu_isset((cpu), perfctr_cpus_forbidden_mask)
Packit Service a1973e
#else
Packit Service a1973e
#define perfctr_cpus_forbidden_mask	CPU_MASK_NONE
Packit Service a1973e
#define perfctr_cpu_is_forbidden(cpu)	0 /* cpu_isset() needs an lvalue :-( */
Packit Service a1973e
#endif