1 /* 2 * GPL HEADER START 3 * 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 only, 8 * as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * General Public License version 2 for more details (a copy is included 14 * in the LICENSE file that accompanied this code). 15 * 16 * You should have received a copy of the GNU General Public License 17 * version 2 along with this program; if not, write to the 18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 * Boston, MA 021110-1307, USA 20 * 21 * GPL HEADER END 22 */ 23 /* 24 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 25 * Copyright (c) 2012, Intel Corporation. 26 */ 27 /* 28 * This file is part of Lustre, http://www.lustre.org/ 29 * Lustre is a trademark of Sun Microsystems, Inc. 30 * 31 * libcfs/include/libcfs/linux/linux-mem.h 32 * 33 * Basic library routines. 34 * 35 * Author: liang@whamcloud.com 36 */ 37 38 #ifndef __LIBCFS_LINUX_CPU_H__ 39 #define __LIBCFS_LINUX_CPU_H__ 40 41 #ifndef __LIBCFS_LIBCFS_H__ 42 #error Do not #include this file directly. #include <linux/libcfs/libcfs.h> instead 43 #endif 44 45 #include <linux/cpu.h> 46 #include <linux/cpuset.h> 47 #include <linux/topology.h> 48 49 #ifdef CONFIG_SMP 50 51 #define HAVE_LIBCFS_CPT 52 53 /** virtual processing unit */ 54 struct cfs_cpu_partition { 55 /* CPUs mask for this partition */ 56 cpumask_t *cpt_cpumask; 57 /* nodes mask for this partition */ 58 nodemask_t *cpt_nodemask; 59 /* spread rotor for NUMA allocator */ 60 unsigned cpt_spread_rotor; 61 }; 62 63 /** descriptor for CPU partitions */ 64 struct cfs_cpt_table { 65 /* version, reserved for hotplug */ 66 unsigned ctb_version; 67 /* spread rotor for NUMA allocator */ 68 unsigned ctb_spread_rotor; 69 /* # of CPU partitions */ 70 unsigned ctb_nparts; 71 /* partitions tables */ 72 struct cfs_cpu_partition *ctb_parts; 73 /* shadow HW CPU to CPU partition ID */ 74 int *ctb_cpu2cpt; 75 /* all cpus in this partition table */ 76 cpumask_t *ctb_cpumask; 77 /* all nodes in this partition table */ 78 nodemask_t *ctb_nodemask; 79 }; 80 81 #endif /* CONFIG_SMP */ 82 #endif /* __LIBCFS_LINUX_CPU_H__ */ 83