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/incubator-nuttx.git

commit 901361be4816591af9917ef62f9805a8bc9773a4
Author: Huang Qi <huang...@xiaomi.com>
AuthorDate: Wed Dec 29 11:25:53 2021 +0800

    arch/risc-v: Move more files to common
    
    Signed-off-by: Huang Qi <huang...@xiaomi.com>
---
 .../src/{rv64gc => common}/riscv_releasepending.c  |   2 +-
 .../src/{rv64gc => common}/riscv_reprioritizertr.c |   2 +-
 .../src/{rv64gc => common}/riscv_unblocktask.c     |   2 +-
 arch/risc-v/src/rv32im/riscv_releasepending.c      | 134 ---------------
 arch/risc-v/src/rv32im/riscv_reprioritizertr.c     | 188 ---------------------
 arch/risc-v/src/rv32im/riscv_unblocktask.c         | 149 ----------------
 6 files changed, 3 insertions(+), 474 deletions(-)

diff --git a/arch/risc-v/src/rv64gc/riscv_releasepending.c 
b/arch/risc-v/src/common/riscv_releasepending.c
similarity index 98%
rename from arch/risc-v/src/rv64gc/riscv_releasepending.c
rename to arch/risc-v/src/common/riscv_releasepending.c
index 20cdc27..18f7915 100644
--- a/arch/risc-v/src/rv64gc/riscv_releasepending.c
+++ b/arch/risc-v/src/common/riscv_releasepending.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/risc-v/src/rv64gc/riscv_releasepending.c
+ * arch/risc-v/src/common/riscv_releasepending.c
  *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
diff --git a/arch/risc-v/src/rv64gc/riscv_reprioritizertr.c 
b/arch/risc-v/src/common/riscv_reprioritizertr.c
similarity index 99%
rename from arch/risc-v/src/rv64gc/riscv_reprioritizertr.c
rename to arch/risc-v/src/common/riscv_reprioritizertr.c
index 8cf0b82..8cb46f4 100644
--- a/arch/risc-v/src/rv64gc/riscv_reprioritizertr.c
+++ b/arch/risc-v/src/common/riscv_reprioritizertr.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/risc-v/src/rv64gc/riscv_reprioritizertr.c
+ * arch/risc-v/src/common/riscv_reprioritizertr.c
  *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
diff --git a/arch/risc-v/src/rv64gc/riscv_unblocktask.c 
b/arch/risc-v/src/common/riscv_unblocktask.c
similarity index 99%
rename from arch/risc-v/src/rv64gc/riscv_unblocktask.c
rename to arch/risc-v/src/common/riscv_unblocktask.c
index 2e9bb04..6aa94c9 100644
--- a/arch/risc-v/src/rv64gc/riscv_unblocktask.c
+++ b/arch/risc-v/src/common/riscv_unblocktask.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/risc-v/src/rv64gc/riscv_unblocktask.c
+ * arch/risc-v/src/common/riscv_unblocktask.c
  *
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
diff --git a/arch/risc-v/src/rv32im/riscv_releasepending.c 
b/arch/risc-v/src/rv32im/riscv_releasepending.c
deleted file mode 100644
index bf3e8f2..0000000
--- a/arch/risc-v/src/rv32im/riscv_releasepending.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/****************************************************************************
- * arch/risc-v/src/rv32im/riscv_releasepending.c
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sched.h>
-#include <syscall.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-#include <nuttx/sched.h>
-
-#include "sched/sched.h"
-#include "group/group.h"
-#include "riscv_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * 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.
- *
- ****************************************************************************/
-
-void up_release_pending(void)
-{
-  struct tcb_s *rtcb = this_task();
-
-  sinfo("From TCB=%p\n", rtcb);
-
-  /* Merge the g_pendingtasks list into the ready-to-run task list */
-
-  /* sched_lock(); */
-
-  if (nxsched_merge_pending())
-    {
-      /* The currently active task has changed!  We will need to switch
-       * contexts.
-       *
-       * Update scheduler parameters.
-       */
-
-      nxsched_suspend_scheduler(rtcb);
-
-      /* Are we operating in interrupt context? */
-
-      if (g_current_regs)
-        {
-          /* Yes, then we have to do things differently.
-           * Just copy the g_current_regs into the OLD rtcb.
-           */
-
-           riscv_savestate(rtcb->xcp.regs);
-
-          /* Restore the exception context of the rtcb at the (new) head
-           * of the ready-to-run task list.
-           */
-
-          rtcb = this_task();
-
-          /* Update scheduler parameters */
-
-          nxsched_resume_scheduler(rtcb);
-
-          /* Then switch contexts.  Any necessary address environment
-           * changes will be made when the interrupt returns.
-           */
-
-          riscv_restorestate(rtcb->xcp.regs);
-        }
-
-      /* No, then we will need to perform the user context switch */
-
-      else
-        {
-          /* Switch context to the context of the task at the head of the
-           * ready to run list.
-           */
-
-          struct tcb_s *nexttcb = this_task();
-
-#ifdef CONFIG_ARCH_ADDRENV
-          /* Make sure that the address environment for the previously
-           * running task is closed down gracefully (data caches dump,
-           * MMU flushed) and set up the address environment for the new
-           * thread at the head of the ready-to-run list.
-           */
-
-          group_addrenv(nexttcb);
-#endif
-          /* Update scheduler parameters */
-
-          nxsched_resume_scheduler(nexttcb);
-
-          /* Then switch contexts */
-
-          riscv_switchcontext(rtcb->xcp.regs, nexttcb->xcp.regs);
-
-          /* riscv_switchcontext forces a context switch to the task at the
-           * head of the ready-to-run list.  It does not 'return' in the
-           * normal sense.  When it does return, it is because the blocked
-           * task is again ready to run and has execution priority.
-           */
-        }
-    }
-}
diff --git a/arch/risc-v/src/rv32im/riscv_reprioritizertr.c 
b/arch/risc-v/src/rv32im/riscv_reprioritizertr.c
deleted file mode 100644
index 3b2d4c8..0000000
--- a/arch/risc-v/src/rv32im/riscv_reprioritizertr.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/****************************************************************************
- * arch/risc-v/src/rv32im/riscv_reprioritizertr.c
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <sched.h>
-#include <syscall.h>
-#include <assert.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-#include <nuttx/sched.h>
-
-#include "sched/sched.h"
-#include "group/group.h"
-#include "riscv_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_reprioritize_rtr
- *
- * Description:
- *   Called when the priority of a running or
- *   ready-to-run task changes and the reprioritization will
- *   cause a context switch.  Two cases:
- *
- *   1) The priority of the currently running task drops and the next
- *      task in the ready to run list has priority.
- *   2) An idle, ready to run task's priority has been raised above the
- *      priority of the current, running task and it now has the priority.
- *
- * Input Parameters:
- *   tcb: The TCB of the task that has been reprioritized
- *   priority: The new task priority
- *
- ****************************************************************************/
-
-void up_reprioritize_rtr(struct tcb_s *tcb, uint8_t priority)
-{
-  /* Verify that the caller is sane */
-
-  if (tcb->task_state < FIRST_READY_TO_RUN_STATE ||
-      tcb->task_state > LAST_READY_TO_RUN_STATE
-#if SCHED_PRIORITY_MIN > 0
-      || priority < SCHED_PRIORITY_MIN
-#endif
-#if SCHED_PRIORITY_MAX < UINT8_MAX
-      || priority > SCHED_PRIORITY_MAX
-#endif
-    )
-    {
-       DEBUGPANIC();
-    }
-  else
-    {
-      struct tcb_s *rtcb = this_task();
-      bool switch_needed;
-
-      sinfo("TCB=%p PRI=%d\n", tcb, priority);
-
-      /* Remove the tcb task from the ready-to-run list.
-       * nxsched_remove_readytorun will return true if we just
-       * remove the head of the ready to run list.
-       */
-
-      switch_needed = nxsched_remove_readytorun(tcb);
-
-      /* Setup up the new task priority */
-
-      tcb->sched_priority = (uint8_t)priority;
-
-      /* Return the task to the specified blocked task list.
-       * nxsched_add_readytorun will return true if the task was
-       * added to the new list.  We will need to perform a context
-       * switch only if the EXCLUSIVE or of the two calls is non-zero
-       * (i.e., one and only one the calls changes the head of the
-       * ready-to-run list).
-       */
-
-      switch_needed ^= nxsched_add_readytorun(tcb);
-
-      /* Now, perform the context switch if one is needed */
-
-      if (switch_needed)
-        {
-          /* If we are going to do a context switch, then now is the right
-           * time to add any pending tasks back into the ready-to-run list.
-           */
-
-          if (g_pendingtasks.head)
-            {
-              nxsched_merge_pending();
-            }
-
-          /* Update scheduler parameters */
-
-          nxsched_suspend_scheduler(rtcb);
-
-          /* Are we in an interrupt handler? */
-
-          if (g_current_regs)
-            {
-              /* Yes, then we have to do things differently.
-               * Just copy the g_current_regs into the OLD rtcb.
-               */
-
-               riscv_savestate(rtcb->xcp.regs);
-
-              /* Restore the exception context of the rtcb at the (new) head
-               * of the ready-to-run task list.
-               */
-
-              rtcb = this_task();
-
-              /* Update scheduler parameters */
-
-              nxsched_resume_scheduler(rtcb);
-
-              /* Then switch contexts.  Any necessary address environment
-               * changes will be made when the interrupt returns.
-               */
-
-              riscv_restorestate(rtcb->xcp.regs);
-            }
-
-          /* No, then we will need to perform the user context switch */
-
-          else
-            {
-              /* Switch context to the context of the task at the head of the
-               * ready to run list.
-               */
-
-              struct tcb_s *nexttcb = this_task();
-
-#ifdef CONFIG_ARCH_ADDRENV
-              /* Make sure that the address environment for the previously
-               * running task is closed down gracefully (data caches dump,
-               * MMU flushed) and set up the address environment for the new
-               * thread at the head of the ready-to-run list.
-               */
-
-              group_addrenv(nexttcb);
-#endif
-              /* Update scheduler parameters */
-
-              nxsched_resume_scheduler(nexttcb);
-
-              /* Then switch contexts */
-
-              riscv_switchcontext(rtcb->xcp.regs, nexttcb->xcp.regs);
-
-              /* riscv_switchcontext forces a context switch to the task at
-               * the head of the ready-to-run list.  It does not 'return' in
-               * the normal sense. When it does return, it is because the
-               * blocked task is again ready to run and has execution
-               * priority.
-               */
-            }
-        }
-    }
-}
diff --git a/arch/risc-v/src/rv32im/riscv_unblocktask.c 
b/arch/risc-v/src/rv32im/riscv_unblocktask.c
deleted file mode 100644
index 57b9160..0000000
--- a/arch/risc-v/src/rv32im/riscv_unblocktask.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/****************************************************************************
- * arch/risc-v/src/rv32im/riscv_unblocktask.c
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sched.h>
-#include <syscall.h>
-#include <assert.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-#include <nuttx/sched.h>
-
-#include "sched/sched.h"
-#include "group/group.h"
-#include "clock/clock.h"
-#include "riscv_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_unblock_task
- *
- * Description:
- *   A task is currently in an inactive task list
- *   but has been prepped to execute.  Move the TCB to the
- *   ready-to-run list, restore its context, and start execution.
- *
- * Input Parameters:
- *   tcb: Refers to the tcb to be unblocked.  This tcb is
- *     in one of the waiting tasks lists.  It must be moved to
- *     the ready-to-run list and, if it is the highest priority
- *     ready to run task, executed.
- *
- ****************************************************************************/
-
-void up_unblock_task(struct tcb_s *tcb)
-{
-  struct tcb_s *rtcb = this_task();
-
-  /* Verify that the context switch can be performed */
-
-  DEBUGASSERT((tcb->task_state >= FIRST_BLOCKED_STATE) &&
-              (tcb->task_state <= LAST_BLOCKED_STATE));
-
-  /* Remove the task from the blocked task list */
-
-  nxsched_remove_blocked(tcb);
-
-  /* Add the task in the correct location in the prioritized
-   * ready-to-run task list
-   */
-
-  if (nxsched_add_readytorun(tcb))
-    {
-      /* The currently active task has changed! We need to do
-       * a context switch to the new task.
-       */
-
-      /* Update scheduler parameters */
-
-      nxsched_suspend_scheduler(rtcb);
-
-      /* Are we in an interrupt handler? */
-
-      if (g_current_regs)
-        {
-          /* Yes, then we have to do things differently.
-           * Just copy the g_current_regs into the OLD rtcb.
-           */
-
-          riscv_savestate(rtcb->xcp.regs);
-
-          /* Restore the exception context of the rtcb at the (new) head
-           * of the ready-to-run task list.
-           */
-
-          rtcb = this_task();
-
-          /* Update scheduler parameters */
-
-          nxsched_resume_scheduler(rtcb);
-
-          /* Then switch contexts.  Any necessary address environment
-           * changes will be made when the interrupt returns.
-           */
-
-          riscv_restorestate(rtcb->xcp.regs);
-        }
-
-      /* No, then we will need to perform the user context switch */
-
-      else
-        {
-          /* Restore the exception context of the new task that is ready to
-           * run (probably tcb).  This is the new rtcb at the head of the
-           * ready-to-run task list.
-           */
-
-          struct tcb_s *nexttcb = this_task();
-
-#ifdef CONFIG_ARCH_ADDRENV
-          /* Make sure that the address environment for the previously
-           * running task is closed down gracefully (data caches dump,
-           * MMU flushed) and set up the address environment for the new
-           * thread at the head of the ready-to-run list.
-           */
-
-          group_addrenv(nexttcb);
-#endif
-          /* Update scheduler parameters */
-
-          nxsched_resume_scheduler(nexttcb);
-
-          /* Then switch contexts */
-
-          riscv_switchcontext(rtcb->xcp.regs, nexttcb->xcp.regs);
-
-          /* riscv_switchcontext forces a context switch to the task at the
-           * head of the ready-to-run list.  It does not 'return' in the
-           * normal sense.  When it does return, it is because the blocked
-           * task is again ready to run and has execution priority.
-           */
-        }
-    }
-}

Reply via email to