mirror of
https://github.com/apache/nuttx.git
synced 2026-06-04 23:03:27 +08:00
irq: remove g_cpu_nestcount in restore_critical_section
because 'g_cpu_nestcount[me] > 0' will never happen, in this place test: We can use qemu for testing. compiling make distclean -j20; ./tools/configure.sh -l qemu-armv8a:nsh_smp ;make -j20 running qemu-system-aarch64 -cpu cortex-a53 -smp 4 -nographic -machine virt,virtualization=on,gic-version=3 -net none -chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline -kernel ./nuttx Signed-off-by: hujun5 <hujun5@xiaomi.com>
This commit is contained in:
@@ -621,25 +621,9 @@ void restore_critical_section(void)
|
||||
*/
|
||||
|
||||
tcb = current_task(me);
|
||||
if (tcb->irqcount > 0)
|
||||
DEBUGASSERT(g_cpu_nestcount[me] <= 0);
|
||||
if (tcb->irqcount <= 0)
|
||||
{
|
||||
/* Do notihing here
|
||||
* NOTE: spin_setbit() is done in nxsched_add_readytorun()
|
||||
* and nxsched_remove_readytorun()
|
||||
*/
|
||||
}
|
||||
|
||||
/* No.. This CPU will be relinquishing the lock. But this works
|
||||
* differently if we are performing a context switch from an
|
||||
* interrupt handler and the interrupt handler has established
|
||||
* a critical section. We can detect this case when
|
||||
* g_cpu_nestcount[me] > 0.
|
||||
*/
|
||||
|
||||
else if (g_cpu_nestcount[me] <= 0)
|
||||
{
|
||||
/* Release our hold on the IRQ lock. */
|
||||
|
||||
if ((g_cpu_irqset & (1 << me)) != 0)
|
||||
{
|
||||
cpu_irqlock_clear();
|
||||
|
||||
Reference in New Issue
Block a user