1 #ifndef __LINUX_SMP_H
2 #define __LINUX_SMP_H
3
4
5
6
7
8
9 #ifdef __SMP__
10 #include <asm/smp.h>
11
12 extern void smp_message_pass(int target, int msg, unsigned long data, int wait);
13 extern void smp_boot_cpus(void);
14 extern void smp_callin(void);
15 extern void smp_commence(void);
16 extern int smp_num_cpus;
17 extern int smp_top_cpu;
18 extern int smp_threads_ready;
19 #ifdef __SMP_PROF__
20 extern volatile unsigned long smp_spins[NR_CPUS];
21 extern volatile unsigned long smp_spins_sys_idle[];
22 extern volatile unsigned long smp_spins_syscall[];
23 extern volatile unsigned long smp_spins_syscall_cur[];
24
25 extern volatile unsigned long smp_idle_count[1+NR_CPUS];
26 extern volatile unsigned long smp_idle_map;
27 #else
28 extern volatile unsigned long smp_spins;
29 #endif
30
31
32 extern volatile unsigned long smp_msg_data;
33 extern volatile int smp_src_cpu;
34 extern volatile int smp_msg_id;
35
36 #define MSG_ALL_BUT_SELF 0x8000
37 #define MSG_ALL 0x8001
38
39 #define MSG_INVALIDATE_TLB 0x0001
40 #define MSG_STOP_CPU 0x0002
41 #define MSG_RESCHEDULE 0x0003
42
43 #else
44
45
46
47
48
49 #define smp_num_cpus 1
50 #define smp_processor_id() 0
51 #define smp_top_cpu 0
52 #define smp_message_pass(t,m,d,w)
53 #define smp_threads_ready 1
54 #define kernel_lock()
55 #endif
56 #endif