[POWERPC] Make cpus_in_xmon static and remove extern mess from hvc_console.c
This is a little messier than I'd like because xmon.h only exists on powerpc and we can't have a static inline and an extern declaration visible at the same time. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
9f1067c2d9
Коммит
1c8950ff87
|
@ -54,7 +54,7 @@
|
||||||
#define skipbl xmon_skipbl
|
#define skipbl xmon_skipbl
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
cpumask_t cpus_in_xmon = CPU_MASK_NONE;
|
static cpumask_t cpus_in_xmon = CPU_MASK_NONE;
|
||||||
static unsigned long xmon_taken = 1;
|
static unsigned long xmon_taken = 1;
|
||||||
static int xmon_owner;
|
static int xmon_owner;
|
||||||
static int xmon_gate;
|
static int xmon_gate;
|
||||||
|
@ -327,6 +327,11 @@ static void release_output_lock(void)
|
||||||
{
|
{
|
||||||
xmon_speaker = 0;
|
xmon_speaker = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int cpus_are_in_xmon(void)
|
||||||
|
{
|
||||||
|
return !cpus_empty(cpus_in_xmon);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int xmon_core(struct pt_regs *regs, int fromipi)
|
static int xmon_core(struct pt_regs *regs, int fromipi)
|
||||||
|
|
|
@ -675,12 +675,6 @@ static int hvc_poll(struct hvc_struct *hp)
|
||||||
return poll_mask;
|
return poll_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
|
|
||||||
extern cpumask_t cpus_in_xmon;
|
|
||||||
#else
|
|
||||||
static const cpumask_t cpus_in_xmon = CPU_MASK_NONE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This kthread is either polling or interrupt driven. This is determined by
|
* This kthread is either polling or interrupt driven. This is determined by
|
||||||
* calling hvc_poll() who determines whether a console adapter support
|
* calling hvc_poll() who determines whether a console adapter support
|
||||||
|
@ -698,7 +692,7 @@ static int khvcd(void *unused)
|
||||||
hvc_kicked = 0;
|
hvc_kicked = 0;
|
||||||
try_to_freeze();
|
try_to_freeze();
|
||||||
wmb();
|
wmb();
|
||||||
if (cpus_empty(cpus_in_xmon)) {
|
if (!cpus_are_in_xmon()) {
|
||||||
spin_lock(&hvc_structs_lock);
|
spin_lock(&hvc_structs_lock);
|
||||||
list_for_each_entry(hp, &hvc_structs, next) {
|
list_for_each_entry(hp, &hvc_structs, next) {
|
||||||
poll_mask |= hvc_poll(hp);
|
poll_mask |= hvc_poll(hp);
|
||||||
|
|
|
@ -60,4 +60,14 @@ extern struct hvc_struct * __devinit hvc_alloc(uint32_t vtermno, int irq,
|
||||||
/* remove a vterm from hvc tty operation (modele_exit or hotplug remove) */
|
/* remove a vterm from hvc tty operation (modele_exit or hotplug remove) */
|
||||||
extern int __devexit hvc_remove(struct hvc_struct *hp);
|
extern int __devexit hvc_remove(struct hvc_struct *hp);
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
|
||||||
|
#include <asm/xmon.h>
|
||||||
|
#else
|
||||||
|
static inline int cpus_are_in_xmon(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // HVC_CONSOLE_H
|
#endif // HVC_CONSOLE_H
|
||||||
|
|
|
@ -25,5 +25,9 @@ static inline void xmon_setup(void) { };
|
||||||
static inline void xmon_register_spus(struct list_head *list) { };
|
static inline void xmon_register_spus(struct list_head *list) { };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_XMON) && defined(CONFIG_SMP)
|
||||||
|
extern int cpus_are_in_xmon(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __KERNEL __ */
|
#endif /* __KERNEL __ */
|
||||||
#endif /* __ASM_POWERPC_XMON_H */
|
#endif /* __ASM_POWERPC_XMON_H */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче