sched/ and arch/arm/src/armv7-a: Replace a few more occurrences of this_task() with current_task(cpu) in an effort to get the i.MX6 working in SMP mode again. It does not yet work, sadly.
This commit is contained in:
parent
8aa1538506
commit
de34b4523f
@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/armv7-a/arm_releasepending.c
|
||||
*
|
||||
* Copyright (C) 2013-2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2013-2015, 2018 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -56,16 +56,28 @@
|
||||
* Name: up_release_pending
|
||||
*
|
||||
* Description:
|
||||
* Release and ready-to-run tasks that have
|
||||
* collected in the pending task list. This can call a
|
||||
* context switch if a new task is placed at the head of
|
||||
* the ready to run list.
|
||||
* Release and ready-to-run tasks that have collected in the pending task
|
||||
* list. This can call a context switch if a new task is placed at the
|
||||
* head of the ready to run list.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void up_release_pending(void)
|
||||
{
|
||||
struct tcb_s *rtcb = this_task();
|
||||
struct tcb_s *rtcb;
|
||||
#ifdef CONFIG_SMP
|
||||
int cpu;
|
||||
|
||||
/* Get the TCB of the currently executing task on this CPU (avoid using
|
||||
* this_task() because the TCBs may be in an inappropriate state right
|
||||
* now).
|
||||
*/
|
||||
|
||||
cpu = this_cpu();
|
||||
rtcb = current_task(cpu);
|
||||
#else
|
||||
rtcb = this_task();
|
||||
#endif
|
||||
|
||||
sinfo("From TCB=%p\n", rtcb);
|
||||
|
||||
@ -96,7 +108,11 @@ void up_release_pending(void)
|
||||
* of the ready-to-run task list.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
rtcb = current_task(cpu);
|
||||
#else
|
||||
rtcb = this_task();
|
||||
#endif
|
||||
|
||||
/* Update scheduler parameters */
|
||||
|
||||
@ -121,7 +137,11 @@ void up_release_pending(void)
|
||||
* of the ready-to-run task list.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
rtcb = current_task(cpu);
|
||||
#else
|
||||
rtcb = this_task();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_ADDRENV
|
||||
/* Make sure that the address environment for the previously
|
||||
|
@ -92,8 +92,21 @@ void up_reprioritize_rtr(struct tcb_s *tcb, uint8_t priority)
|
||||
}
|
||||
else
|
||||
{
|
||||
struct tcb_s *rtcb = this_task();
|
||||
struct tcb_s *rtcb;
|
||||
bool switch_needed;
|
||||
#ifdef CONFIG_SMP
|
||||
int cpu;
|
||||
|
||||
/* Get the TCB of the currently executing task on this CPU (avoid
|
||||
* using this_task() because the TCBs may be in an inappropriate
|
||||
* state right now).
|
||||
*/
|
||||
|
||||
cpu = this_cpu();
|
||||
rtcb = current_task(cpu);
|
||||
#else
|
||||
rtcb = this_task();
|
||||
#endif
|
||||
|
||||
sinfo("TCB=%p PRI=%d\n", tcb, priority);
|
||||
|
||||
@ -150,7 +163,11 @@ void up_reprioritize_rtr(struct tcb_s *tcb, uint8_t priority)
|
||||
* of the ready-to-run task list.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
rtcb = current_task(cpu);
|
||||
#else
|
||||
rtcb = this_task();
|
||||
#endif
|
||||
|
||||
/* Update scheduler parameters */
|
||||
|
||||
@ -174,7 +191,11 @@ void up_reprioritize_rtr(struct tcb_s *tcb, uint8_t priority)
|
||||
* of the ready-to-run task list.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
rtcb = current_task(cpu);
|
||||
#else
|
||||
rtcb = this_task();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_ADDRENV
|
||||
/* Make sure that the address environment for the previously
|
||||
|
@ -149,6 +149,7 @@ Status
|
||||
|
||||
At present, the NSH prompt does come up but there there still hangs that
|
||||
must be addressed.
|
||||
|
||||
Platform Features
|
||||
=================
|
||||
|
||||
|
@ -168,7 +168,7 @@ int sched_unlock(void)
|
||||
* maximum.
|
||||
*/
|
||||
|
||||
if (rtcb != this_task())
|
||||
if (rtcb != current_task(cpu))
|
||||
{
|
||||
rtcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||
}
|
||||
@ -206,7 +206,7 @@ int sched_unlock(void)
|
||||
* change the currently active task.
|
||||
*/
|
||||
|
||||
if (rtcb == this_task())
|
||||
if (rtcb == current_task(cpu))
|
||||
{
|
||||
sched_timer_reassess();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user