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