+#ifndef CONFIG_SMP
+static inline
+int ksocknal_nsched(void)
+{
+ return 1;
+}
+#else
+#include <linux/lustre_version.h>
+# if !(defined(CONFIG_X86) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,21))) || defined(CONFIG_X86_64) || (LUSTRE_KERNEL_VERSION < 39) || ((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) && !defined(CONFIG_X86_HT))
+static inline int
+ksocknal_nsched(void)
+{
+ return num_online_cpus();
+}
+
+static inline int
+ksocknal_sched2cpu(int i)
+{
+ return i;
+}
+
+static inline int
+ksocknal_irqsched2cpu(int i)
+{
+ return i;
+}
+# else
+static inline int
+ksocknal_nsched(void)
+{
+ if (smp_num_siblings == 1)
+ return (num_online_cpus());
+
+ /* We need to know if this assumption is crap */
+ LASSERT (smp_num_siblings == 2);
+ return (num_online_cpus()/2);
+}
+
+static inline int
+ksocknal_sched2cpu(int i)
+{
+ if (smp_num_siblings == 1)
+ return i;
+
+ return (i * 2);
+}
+
+static inline int
+ksocknal_irqsched2cpu(int i)
+{
+ return (ksocknal_sched2cpu(i) + 1);
+}
+# endif
+#endif
+