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

📄 topology.c

📁 linux-2.6.15.6
💻 C
字号:
/* * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. * * This file contains NUMA specific variables and functions which can * be split away from DISCONTIGMEM and are used on NUMA machines with * contiguous memory. * 		2002/08/07 Erich Focht <efocht@ess.nec.de> * Populate cpu entries in sysfs for non-numa systems as well *  	Intel Corporation - Ashok Raj */#include <linux/config.h>#include <linux/cpu.h>#include <linux/kernel.h>#include <linux/mm.h>#include <linux/node.h>#include <linux/init.h>#include <linux/bootmem.h>#include <linux/nodemask.h>#include <asm/mmzone.h>#include <asm/numa.h>#include <asm/cpu.h>#ifdef CONFIG_NUMAstatic struct node *sysfs_nodes;#endifstatic struct ia64_cpu *sysfs_cpus;int arch_register_cpu(int num){	struct node *parent = NULL;	#ifdef CONFIG_NUMA	parent = &sysfs_nodes[cpu_to_node(num)];#endif /* CONFIG_NUMA */#ifdef CONFIG_ACPI	/*	 * If CPEI cannot be re-targetted, and this is	 * CPEI target, then dont create the control file	 */	if (!can_cpei_retarget() && is_cpu_cpei_target(num))		sysfs_cpus[num].cpu.no_control = 1;#endif	return register_cpu(&sysfs_cpus[num].cpu, num, parent);}#ifdef CONFIG_HOTPLUG_CPUvoid arch_unregister_cpu(int num){	struct node *parent = NULL;#ifdef CONFIG_NUMA	int node = cpu_to_node(num);	parent = &sysfs_nodes[node];#endif /* CONFIG_NUMA */	return unregister_cpu(&sysfs_cpus[num].cpu, parent);}EXPORT_SYMBOL(arch_register_cpu);EXPORT_SYMBOL(arch_unregister_cpu);#endif /*CONFIG_HOTPLUG_CPU*/static int __init topology_init(void){	int i, err = 0;#ifdef CONFIG_NUMA	sysfs_nodes = kmalloc(sizeof(struct node) * MAX_NUMNODES, GFP_KERNEL);	if (!sysfs_nodes) {		err = -ENOMEM;		goto out;	}	memset(sysfs_nodes, 0, sizeof(struct node) * MAX_NUMNODES);	/* MCD - Do we want to register all ONLINE nodes, or all POSSIBLE nodes? */	for_each_online_node(i)		if ((err = register_node(&sysfs_nodes[i], i, 0)))			goto out;#endif	sysfs_cpus = kmalloc(sizeof(struct ia64_cpu) * NR_CPUS, GFP_KERNEL);	if (!sysfs_cpus) {		err = -ENOMEM;		goto out;	}	memset(sysfs_cpus, 0, sizeof(struct ia64_cpu) * NR_CPUS);	for_each_present_cpu(i)		if((err = arch_register_cpu(i)))			goto out;out:	return err;}__initcall(topology_init);

⌨️ 快捷键说明

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