⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genapic_64.c

📁 linux 内核源代码
💻 C
字号:
/* * Copyright 2004 James Cleverdon, IBM. * Subject to the GNU Public License, v.2 * * Generic APIC sub-arch probe layer. * * Hacked for x86-64 by James Cleverdon from i386 architecture code by * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and * James Cleverdon. */#include <linux/threads.h>#include <linux/cpumask.h>#include <linux/string.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/ctype.h>#include <linux/init.h>#include <asm/smp.h>#include <asm/ipi.h>#include <asm/genapic.h>#ifdef CONFIG_ACPI#include <acpi/acpi_bus.h>#endif/* * which logical CPU number maps to which CPU (physical APIC ID) * * The following static array is used during kernel startup * and the x86_cpu_to_apicid_ptr contains the address of the * array during this time.  Is it zeroed when the per_cpu * data area is removed. */u8 x86_cpu_to_apicid_init[NR_CPUS] __initdata					= { [0 ... NR_CPUS-1] = BAD_APICID };void *x86_cpu_to_apicid_ptr;DEFINE_PER_CPU(u8, x86_cpu_to_apicid) = BAD_APICID;EXPORT_PER_CPU_SYMBOL(x86_cpu_to_apicid);struct genapic __read_mostly *genapic = &apic_flat;/* * Check the APIC IDs in bios_cpu_apicid and choose the APIC mode. */void __init setup_apic_routing(void){#ifdef CONFIG_ACPI	/*	 * Quirk: some x86_64 machines can only use physical APIC mode	 * regardless of how many processors are present (x86_64 ES7000	 * is an example).	 */	if (acpi_gbl_FADT.header.revision > FADT2_REVISION_ID &&			(acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL))		genapic = &apic_physflat;	else#endif	if (cpus_weight(cpu_possible_map) <= 8)		genapic = &apic_flat;	else		genapic = &apic_physflat;	printk(KERN_INFO "Setting APIC routing to %s\n", genapic->name);}/* Same for both flat and physical. */void send_IPI_self(int vector){	__send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -