mirror of
https://github.com/apache/nuttx.git
synced 2026-06-02 01:21:26 +08:00
remove redundant judgments *running_task != NULL
reason: In irq, g_running_tasks is always valid. Signed-off-by: hujun5 <hujun5@xiaomi.com>
This commit is contained in:
@@ -61,10 +61,7 @@ uint8_t *avr_doirq(uint8_t irq, uint8_t *regs)
|
|||||||
{
|
{
|
||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
|
|
||||||
if (*running_task != NULL)
|
avr_copystate((*running_task)->xcp.regs, regs);
|
||||||
{
|
|
||||||
avr_copystate((*running_task)->xcp.regs, regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
board_autoled_on(LED_INIRQ);
|
board_autoled_on(LED_INIRQ);
|
||||||
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
||||||
@@ -104,7 +101,7 @@ uint8_t *avr_doirq(uint8_t irq, uint8_t *regs)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[this_cpu()] = this_task();
|
*running_task = this_task();
|
||||||
}
|
}
|
||||||
|
|
||||||
regs = up_current_regs(); /* Cast removes volatile attribute */
|
regs = up_current_regs(); /* Cast removes volatile attribute */
|
||||||
|
|||||||
@@ -63,10 +63,7 @@ uint32_t *avr_doirq(int irq, uint32_t *regs)
|
|||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
struct tcb_s *tcb;
|
struct tcb_s *tcb;
|
||||||
|
|
||||||
if (*running_task != NULL)
|
avr_copystate((*running_task)->xcp.regs, regs);
|
||||||
{
|
|
||||||
avr_copystate((*running_task)->xcp.regs, regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
board_autoled_on(LED_INIRQ);
|
board_autoled_on(LED_INIRQ);
|
||||||
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
||||||
@@ -117,7 +114,7 @@ uint32_t *avr_doirq(int irq, uint32_t *regs)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[this_cpu()] = tcb;
|
*running_task = tcb;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If a context switch occurred while processing the interrupt then
|
/* If a context switch occurred while processing the interrupt then
|
||||||
|
|||||||
@@ -63,10 +63,7 @@ uint8_t *hc_doirq(int irq, uint8_t *regs)
|
|||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
struct tcb_s *tcb;
|
struct tcb_s *tcb;
|
||||||
|
|
||||||
if (*running_task != NULL)
|
hc_copystate((*running_task)->xcp.regs);
|
||||||
{
|
|
||||||
hc_copystate((*running_task)->xcp.regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
board_autoled_on(LED_INIRQ);
|
board_autoled_on(LED_INIRQ);
|
||||||
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
||||||
@@ -117,7 +114,7 @@ uint8_t *hc_doirq(int irq, uint8_t *regs)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[this_cpu()] = tcb;
|
*running_task = tcb;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If a context switch occurred while processing the interrupt then
|
/* If a context switch occurred while processing the interrupt then
|
||||||
|
|||||||
@@ -45,10 +45,7 @@ uint32_t *or1k_doirq(int irq, uint32_t *regs)
|
|||||||
{
|
{
|
||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
|
|
||||||
if (*running_task != NULL)
|
or1k_copyfullstate((*running_task)->xcp.regs, regs);
|
||||||
{
|
|
||||||
or1k_copyfullstate((*running_task)->xcp.regs, regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
board_autoled_on(LED_INIRQ);
|
board_autoled_on(LED_INIRQ);
|
||||||
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
||||||
@@ -86,7 +83,7 @@ uint32_t *or1k_doirq(int irq, uint32_t *regs)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[this_cpu()] = this_task();
|
*running_task = this_task();
|
||||||
}
|
}
|
||||||
|
|
||||||
regs = up_current_regs();
|
regs = up_current_regs();
|
||||||
|
|||||||
@@ -63,10 +63,7 @@ uint32_t *renesas_doirq(int irq, uint32_t * regs)
|
|||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
struct tcb_s *tcb;
|
struct tcb_s *tcb;
|
||||||
|
|
||||||
if (*running_task != NULL)
|
renesas_copystate((*running_task)->xcp.regs, regs);
|
||||||
{
|
|
||||||
renesas_copystate((*running_task)->xcp.regs, regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
board_autoled_on(LED_INIRQ);
|
board_autoled_on(LED_INIRQ);
|
||||||
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
#ifdef CONFIG_SUPPRESS_INTERRUPTS
|
||||||
@@ -120,7 +117,7 @@ uint32_t *renesas_doirq(int irq, uint32_t * regs)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[this_cpu()] = tcb;
|
*running_task = tcb;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the current value of regs... it may have changed because
|
/* Get the current value of regs... it may have changed because
|
||||||
|
|||||||
@@ -67,10 +67,7 @@ void *sim_doirq(int irq, void *context)
|
|||||||
{
|
{
|
||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
|
|
||||||
if (*running_task != NULL)
|
sim_copyfullstate((*running_task)->xcp.regs, regs);
|
||||||
{
|
|
||||||
sim_copyfullstate((*running_task)->xcp.regs, regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
up_set_current_regs(regs);
|
up_set_current_regs(regs);
|
||||||
|
|
||||||
@@ -91,7 +88,7 @@ void *sim_doirq(int irq, void *context)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[this_cpu()] = this_task();
|
*running_task = this_task();
|
||||||
}
|
}
|
||||||
|
|
||||||
regs = up_current_regs();
|
regs = up_current_regs();
|
||||||
|
|||||||
@@ -91,10 +91,7 @@ static uint32_t *common_handler(int irq, uint32_t *regs)
|
|||||||
DEBUGASSERT(up_current_regs() == NULL);
|
DEBUGASSERT(up_current_regs() == NULL);
|
||||||
up_set_current_regs(regs);
|
up_set_current_regs(regs);
|
||||||
|
|
||||||
if (*running_task != NULL)
|
x86_savestate((*running_task)->xcp.regs);
|
||||||
{
|
|
||||||
x86_savestate((*running_task)->xcp.regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Deliver the IRQ */
|
/* Deliver the IRQ */
|
||||||
|
|
||||||
|
|||||||
@@ -66,12 +66,8 @@ static uint64_t *common_handler(int irq, uint64_t *regs)
|
|||||||
{
|
{
|
||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
struct tcb_s *tcb;
|
struct tcb_s *tcb;
|
||||||
int cpu;
|
|
||||||
|
|
||||||
if (*running_task != NULL)
|
(*running_task)->xcp.regs = regs;
|
||||||
{
|
|
||||||
(*running_task)->xcp.regs = regs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Current regs non-zero indicates that we are processing an interrupt;
|
/* Current regs non-zero indicates that we are processing an interrupt;
|
||||||
* g_current_regs is also used to manage interrupt level context switches.
|
* g_current_regs is also used to manage interrupt level context switches.
|
||||||
@@ -108,7 +104,6 @@ static uint64_t *common_handler(int irq, uint64_t *regs)
|
|||||||
|
|
||||||
/* Update scheduler parameters */
|
/* Update scheduler parameters */
|
||||||
|
|
||||||
cpu = this_cpu();
|
|
||||||
nxsched_suspend_scheduler(*running_task);
|
nxsched_suspend_scheduler(*running_task);
|
||||||
nxsched_resume_scheduler(tcb);
|
nxsched_resume_scheduler(tcb);
|
||||||
|
|
||||||
@@ -117,11 +112,11 @@ static uint64_t *common_handler(int irq, uint64_t *regs)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[cpu] = tcb;
|
*running_task = tcb;
|
||||||
|
|
||||||
/* Restore the cpu lock */
|
/* Restore the cpu lock */
|
||||||
|
|
||||||
restore_critical_section(tcb, cpu);
|
restore_critical_section(tcb, this_cpu());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If a context switch occurred while processing the interrupt then
|
/* If a context switch occurred while processing the interrupt then
|
||||||
|
|||||||
@@ -69,10 +69,7 @@ void xtensa_panic(int xptcode, uint32_t *regs)
|
|||||||
{
|
{
|
||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
|
|
||||||
if (*running_task != NULL)
|
(*running_task)->xcp.regs = regs;
|
||||||
{
|
|
||||||
(*running_task)->xcp.regs = regs;
|
|
||||||
}
|
|
||||||
|
|
||||||
up_set_interrupt_context(true);
|
up_set_interrupt_context(true);
|
||||||
|
|
||||||
@@ -175,10 +172,7 @@ void xtensa_user_panic(int exccause, uint32_t *regs)
|
|||||||
{
|
{
|
||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
|
|
||||||
if (*running_task != NULL)
|
(*running_task)->xcp.regs = regs;
|
||||||
{
|
|
||||||
(*running_task)->xcp.regs = regs;
|
|
||||||
}
|
|
||||||
|
|
||||||
up_set_interrupt_context(true);
|
up_set_interrupt_context(true);
|
||||||
|
|
||||||
|
|||||||
@@ -63,10 +63,7 @@ FAR chipreg_t *z16_doirq(int irq, FAR chipreg_t *regs)
|
|||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
FAR chipreg_t *savestate;
|
FAR chipreg_t *savestate;
|
||||||
|
|
||||||
if (*running_task != NULL)
|
z16_copystate((*running_task)->xcp.regs, regs)
|
||||||
{
|
|
||||||
z16_copystate((*running_task)->xcp.regs, regs)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Nested interrupts are not supported in this implementation. If
|
/* Nested interrupts are not supported in this implementation. If
|
||||||
* you want to implement nested interrupts, you would have to (1)
|
* you want to implement nested interrupts, you would have to (1)
|
||||||
@@ -100,7 +97,7 @@ FAR chipreg_t *z16_doirq(int irq, FAR chipreg_t *regs)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[this_cpu()] = this_task();
|
*running_task = this_task();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Restore the previous value of g_current_regs. NULL would indicate
|
/* Restore the previous value of g_current_regs. NULL would indicate
|
||||||
|
|||||||
@@ -52,10 +52,7 @@ void z16f_sysexec(FAR chipreg_t *regs)
|
|||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
uint16_t excp;
|
uint16_t excp;
|
||||||
|
|
||||||
if (*running_task != NULL)
|
z16_copystate((*running_task)->xcp.regs, regs)
|
||||||
{
|
|
||||||
z16_copystate((*running_task)->xcp.regs, regs)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Save that register reference so that it can be used for built-in
|
/* Save that register reference so that it can be used for built-in
|
||||||
* diagnostics.
|
* diagnostics.
|
||||||
|
|||||||
@@ -49,10 +49,7 @@ FAR chipreg_t *z80_doirq(uint8_t irq, FAR chipreg_t *regs)
|
|||||||
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
struct tcb_s **running_task = &g_running_tasks[this_cpu()];
|
||||||
struct tcb_s *tcb;
|
struct tcb_s *tcb;
|
||||||
|
|
||||||
if (*running_task != NULL)
|
z80_copystate((*running_task)->xcp.regs, regs)
|
||||||
{
|
|
||||||
z80_copystate((*running_task)->xcp.regs, regs)
|
|
||||||
}
|
|
||||||
|
|
||||||
board_autoled_on(LED_INIRQ);
|
board_autoled_on(LED_INIRQ);
|
||||||
|
|
||||||
@@ -103,7 +100,7 @@ FAR chipreg_t *z80_doirq(uint8_t irq, FAR chipreg_t *regs)
|
|||||||
* crashes.
|
* crashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
g_running_tasks[this_cpu()] = tcb;
|
*running_task = tcb;
|
||||||
}
|
}
|
||||||
|
|
||||||
regs = newregs;
|
regs = newregs;
|
||||||
|
|||||||
Reference in New Issue
Block a user