X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/2d21ac55c334faf3a56e5634905ed6987fc787d4..04b8595b18b1b41ac7a206e4b3d51a635f8413d7:/osfmk/i386/cpu_threads.h?ds=inline diff --git a/osfmk/i386/cpu_threads.h b/osfmk/i386/cpu_threads.h index e22f231cf..31fe81779 100644 --- a/osfmk/i386/cpu_threads.h +++ b/osfmk/i386/cpu_threads.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003-2007 Apple Inc. All rights reserved. + * Copyright (c) 2003-2008 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -29,8 +29,8 @@ #define _I386_CPU_THREADS_H_ #include -#include #include +#include /* * These are defined here rather than in cpu_topology.h so as to keep @@ -42,16 +42,23 @@ #define cpu_to_logical_cpu(cpu) (cpu_to_lapic[cpu] & CPU_THREAD_MASK) #define cpu_is_core_cpu(cpu) (cpu_to_logical_cpu(cpu) == 0) -#define cpu_to_lcpu(cpu) (&cpu_datap(cpu)->lcpu) -#define cpu_to_core(cpu) (cpu_to_lcpu(cpu)->core) -#define cpu_to_package(cpu) (cpu_to_core(cpu)->package) +#define _cpu_to_lcpu(cpu) (&cpu_datap(cpu)->lcpu) +#define _cpu_to_core(cpu) (_cpu_to_lcpu(cpu)->core) +#define _cpu_to_package(cpu) (_cpu_to_core(cpu)->package) + +#define cpu_to_lcpu(cpu) ((cpu_datap(cpu) != NULL) ? _cpu_to_lcpu(cpu) : NULL) +#define cpu_to_core(cpu) ((cpu_to_lcpu(cpu) != NULL) ? _cpu_to_lcpu(cpu)->core : NULL) +#define cpu_to_die(cpu) ((cpu_to_lcpu(cpu) != NULL) ? _cpu_to_lcpu(cpu)->die : NULL) +#define cpu_to_package(cpu) ((cpu_to_lcpu(cpu) != NULL) ? _cpu_to_lcpu(cpu)->package : NULL) /* Fast access: */ #define x86_lcpu() (¤t_cpu_datap()->lcpu) #define x86_core() (x86_lcpu()->core) -#define x86_package() (x86_core()->package) +#define x86_die() (x86_lcpu()->die) +#define x86_package() (x86_lcpu()->package) #define cpu_is_same_core(cpu1,cpu2) (cpu_to_core(cpu1) == cpu_to_core(cpu2)) +#define cpu_is_same_die(cpu1,cpu2) (cpu_to_die(cpu1) == cpu_to_die(cpu2)) #define cpu_is_same_package(cpu1,cpu2) (cpu_to_package(cpu1) == cpu_to_package(cpu2)) #define cpus_share_cache(cpu1,cpu2,_cl) (cpu_to_lcpu(cpu1)->caches[_cl] == cpu_to_lcpu(cpu2)->caches[_cl]) @@ -61,4 +68,16 @@ extern void *cpu_thread_alloc(int); extern void cpu_thread_init(void); extern void cpu_thread_halt(void); +extern void x86_set_logical_topology(x86_lcpu_t *lcpu, int pnum, int lnum); +extern void x86_validate_topology(void); + +extern x86_topology_parameters_t topoParms; + +extern boolean_t topo_dbg; +#define TOPO_DBG(x...) \ + do { \ + if (topo_dbg) \ + kprintf(x); \ + } while (0) \ + #endif /* _I386_CPU_THREADS_H_ */