~ubuntu-branches/ubuntu/lucid/linux-rt/lucid

« back to all changes in this revision

Viewing changes to arch/x86/include/asm/mach-default/mach_ipi.h

  • Committer: Bazaar Package Importer
  • Author(s): Luke Yelavich
  • Date: 2009-08-05 23:00:52 UTC
  • Revision ID: james.westby@ubuntu.com-20090805230052-7xedvqcyk9dnnxb2
Tags: 2.6.31-1.1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef _ASM_X86_MACH_DEFAULT_MACH_IPI_H
2
 
#define _ASM_X86_MACH_DEFAULT_MACH_IPI_H
3
 
 
4
 
/* Avoid include hell */
5
 
#define NMI_VECTOR 0x02
6
 
 
7
 
void send_IPI_mask_bitmask(const struct cpumask *mask, int vector);
8
 
void send_IPI_mask_allbutself(const struct cpumask *mask, int vector);
9
 
void __send_IPI_shortcut(unsigned int shortcut, int vector);
10
 
 
11
 
extern int no_broadcast;
12
 
 
13
 
#ifdef CONFIG_X86_64
14
 
#include <asm/genapic.h>
15
 
#define send_IPI_mask (genapic->send_IPI_mask)
16
 
#define send_IPI_mask_allbutself (genapic->send_IPI_mask_allbutself)
17
 
#else
18
 
static inline void send_IPI_mask(const struct cpumask *mask, int vector)
19
 
{
20
 
        send_IPI_mask_bitmask(mask, vector);
21
 
}
22
 
void send_IPI_mask_allbutself(const struct cpumask *mask, int vector);
23
 
#endif
24
 
 
25
 
static inline void __local_send_IPI_allbutself(int vector)
26
 
{
27
 
        if (no_broadcast || vector == NMI_VECTOR)
28
 
                send_IPI_mask_allbutself(cpu_online_mask, vector);
29
 
        else
30
 
                __send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
31
 
}
32
 
 
33
 
static inline void __local_send_IPI_all(int vector)
34
 
{
35
 
        if (no_broadcast || vector == NMI_VECTOR)
36
 
                send_IPI_mask(cpu_online_mask, vector);
37
 
        else
38
 
                __send_IPI_shortcut(APIC_DEST_ALLINC, vector);
39
 
}
40
 
 
41
 
#ifdef CONFIG_X86_64
42
 
#define send_IPI_allbutself (genapic->send_IPI_allbutself)
43
 
#define send_IPI_all (genapic->send_IPI_all)
44
 
#else
45
 
static inline void send_IPI_allbutself(int vector)
46
 
{
47
 
        /*
48
 
         * if there are no other CPUs in the system then we get an APIC send 
49
 
         * error if we try to broadcast, thus avoid sending IPIs in this case.
50
 
         */
51
 
        if (!(num_online_cpus() > 1))
52
 
                return;
53
 
 
54
 
        __local_send_IPI_allbutself(vector);
55
 
        return;
56
 
}
57
 
 
58
 
static inline void send_IPI_all(int vector)
59
 
{
60
 
        __local_send_IPI_all(vector);
61
 
}
62
 
#endif
63
 
 
64
 
#endif /* _ASM_X86_MACH_DEFAULT_MACH_IPI_H */