This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 4ef3eeb3055027d1bba6d289cfc1543b5d585ca0 Author: chao an <[email protected]> AuthorDate: Sun Aug 4 23:06:05 2024 +0800 arch/x86_64: fix build break if disable CONFIG_SPINLOCK Create version.h chip/intel64_irq.c:78:34: error: conflicting type qualifiers for ‘g_irq_spin’ 78 | static spinlock_t g_irq_spin; | ^~~~~~~~~~ In file included from chip/intel64_irq.c:40: include/nuttx/spinlock.h:168:28: note: previous declaration of ‘g_irq_spin’ with type ‘spinlock_t’ {aka ‘volatile unsigned char’} 168 | extern volatile spinlock_t g_irq_spin; | ^~~~~~~~~~ chip/intel64_cpu.c: In function ‘x86_64_cpu_ready_set’: chip/intel64_cpu.c:314:3: warning: implicit declaration of function ‘spin_lock’ [-Wimplicit-function-declaration] 314 | spin_lock(&g_ap_boot); | ^~~~~~~~~ chip/intel64_cpu.c:322:3: warning: implicit declaration of function ‘spin_unlock’; did you mean ‘sched_unlock’? [-Wimplicit-function-declaration] 322 | spin_unlock(&g_ap_boot); | ^~~~~~~~~~~ Signed-off-by: chao an <[email protected]> --- arch/x86_64/src/intel64/intel64_cpu.c | 16 ++++++++++------ arch/x86_64/src/intel64/intel64_irq.c | 10 +++++----- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/arch/x86_64/src/intel64/intel64_cpu.c b/arch/x86_64/src/intel64/intel64_cpu.c index ae59f1611f..243179d389 100644 --- a/arch/x86_64/src/intel64/intel64_cpu.c +++ b/arch/x86_64/src/intel64/intel64_cpu.c @@ -311,7 +311,9 @@ uint8_t x86_64_cpu_to_loapic(uint8_t cpu) void x86_64_cpu_ready_set(uint8_t cpu) { - spin_lock(&g_ap_boot); + irqstate_t flags; + + flags = spin_lock_irqsave(&g_ap_boot); if (!g_cpu_priv[cpu].ready) { @@ -319,7 +321,7 @@ void x86_64_cpu_ready_set(uint8_t cpu) g_cpu_count++; } - spin_unlock(&g_ap_boot); + spin_unlock_irqrestore(&g_ap_boot, flags); } /**************************************************************************** @@ -333,11 +335,12 @@ void x86_64_cpu_ready_set(uint8_t cpu) bool x86_64_cpu_ready_get(uint8_t cpu) { struct intel64_cpu_s *priv = &g_cpu_priv[cpu]; + irqstate_t flags; bool ready; - spin_lock(&g_ap_boot); + flags = spin_lock_irqsave(&g_ap_boot); ready = priv->ready; - spin_unlock(&g_ap_boot); + spin_unlock_irqrestore(&g_ap_boot, flags); return ready; } @@ -352,11 +355,12 @@ bool x86_64_cpu_ready_get(uint8_t cpu) uint8_t x86_64_cpu_count_get(void) { + irqstate_t flags; uint8_t count; - spin_lock(&g_ap_boot); + flags = spin_lock_irqsave(&g_ap_boot); count = g_cpu_count; - spin_unlock(&g_ap_boot); + spin_unlock_irqrestore(&g_ap_boot, flags); return count; } diff --git a/arch/x86_64/src/intel64/intel64_irq.c b/arch/x86_64/src/intel64/intel64_irq.c index 64f1167041..46d61488b3 100644 --- a/arch/x86_64/src/intel64/intel64_irq.c +++ b/arch/x86_64/src/intel64/intel64_irq.c @@ -75,7 +75,7 @@ static inline void up_idtinit(void); static struct idt_entry_s g_idt_entries[NR_IRQS]; static struct intel64_irq_priv_s g_irq_priv[NR_IRQS]; -static spinlock_t g_irq_spin; +static spinlock_t g_irq_spinlock; /**************************************************************************** * Private Functions @@ -482,7 +482,7 @@ void up_irqinitialize(void) void up_disable_irq(int irq) { #ifndef CONFIG_ARCH_INTEL64_DISABLE_INT_INIT - irqstate_t flags = spin_lock_irqsave(&g_irq_spin); + irqstate_t flags = spin_lock_irqsave(&g_irq_spinlock); if (irq > IRQ255) { @@ -508,7 +508,7 @@ void up_disable_irq(int irq) } } - spin_unlock_irqrestore(&g_irq_spin, flags); + spin_unlock_irqrestore(&g_irq_spinlock, flags); #endif } @@ -523,7 +523,7 @@ void up_disable_irq(int irq) void up_enable_irq(int irq) { #ifndef CONFIG_ARCH_INTEL64_DISABLE_INT_INIT - irqstate_t flags = spin_lock_irqsave(&g_irq_spin); + irqstate_t flags = spin_lock_irqsave(&g_irq_spinlock); # ifndef CONFIG_IRQCHAIN /* Check if IRQ is free if we don't support IRQ chains */ @@ -553,7 +553,7 @@ void up_enable_irq(int irq) CPU_SET(up_cpu_index(), &g_irq_priv[irq].busy); - spin_unlock_irqrestore(&g_irq_spin, flags); + spin_unlock_irqrestore(&g_irq_spinlock, flags); #endif }
