diff options
Diffstat (limited to 'nuttx/sched/sched_processtimer.c')
-rw-r--r-- | nuttx/sched/sched_processtimer.c | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/nuttx/sched/sched_processtimer.c b/nuttx/sched/sched_processtimer.c deleted file mode 100644 index 2224b7691..000000000 --- a/nuttx/sched/sched_processtimer.c +++ /dev/null @@ -1,190 +0,0 @@ -/************************************************************************ - * sched/sched_processtimer.c - * - * Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt <gnutt@nuttx.org> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ************************************************************************/ - -/************************************************************************ - * Included Files - ************************************************************************/ - -#include <nuttx/config.h> -#include <nuttx/compiler.h> - -#if CONFIG_RR_INTERVAL > 0 -# include <sched.h> -# include <nuttx/arch.h> -#endif - -#include "os_internal.h" -#include "wd_internal.h" -#include "clock_internal.h" - -/************************************************************************ - * Definitions - ************************************************************************/ - -/************************************************************************ - * Private Type Declarations - ************************************************************************/ - -/************************************************************************ - * Global Variables - ************************************************************************/ - -/************************************************************************ - * Private Variables - ************************************************************************/ - -/************************************************************************ - * Private Functions - ************************************************************************/ - -static void sched_process_timeslice(void) -{ -#if CONFIG_RR_INTERVAL > 0 - _TCB *rtcb; - - /* Check if the currently executing task uses round robin - * scheduling. - */ - - rtcb = (_TCB*)g_readytorun.head; - if ((rtcb->flags & TCB_FLAG_ROUND_ROBIN) != 0) - { - /* Yes, check if decrementing the timeslice counter - * would cause the timeslice to expire - */ - - if (rtcb->timeslice <= 1) - { - /* Yes, Now check if the task has pre-emption disabled. - * If so, then we will freeze the timeslice count at - * the value until the next tick after pre-emption - * has been enabled. - */ - - if (!rtcb->lockcount) - { - /* Reset the timeslice in any case. */ - - rtcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK; - - /* We know we are at the head of the ready to run - * prioritized list. We must be the highest priority - * task eligible for execution. Check the next task - * in the ready to run list. If it is the same - * priority, then we need to relinquish the CPU and - * give that task a shot. - */ - - if (rtcb->flink && - rtcb->flink->sched_priority >= rtcb->sched_priority) - { - /* Just resetting the task priority to its current - * value. This this will cause the task to be - * rescheduled behind any other tasks at the same - * priority. - */ - - up_reprioritize_rtr(rtcb, rtcb->sched_priority); - } - } - } - else - { - /* Decrement the timeslice counter */ - - rtcb->timeslice--; - } - } -#endif -} - -/************************************************************************ - * Public Functions - ************************************************************************/ - -/************************************************************************ - * System Timer Hooks - * - * These are standard interfaces that are exported by the OS - * for use by the architecture specific logic - * - ************************************************************************/ - -/************************************************************************ - * Name: sched_process_timer - * - * Description: - * This function handles system timer events. - * The timer interrupt logic itself is implemented in the - * architecture specific code, but must call the following OS - * function periodically -- the calling interval must be - * MSEC_PER_TICK - * - * Inputs: - * None - * - * Return Value: - * None - * - ************************************************************************/ - -void sched_process_timer(void) -{ - /* Increment the system time (if in the link) */ - -#ifndef CONFIG_DISABLE_CLOCK -#ifdef CONFIG_HAVE_WEAKFUNCTIONS - if (clock_timer != NULL) -#endif - { - clock_timer(); - } -#endif - - /* Process watchdogs (if in the link) */ - -#ifdef CONFIG_HAVE_WEAKFUNCTIONS - if (wd_timer != NULL) -#endif - { - wd_timer(); - } - - /* Check if the currently executing task has exceeded its - * timeslice. - */ - - sched_process_timeslice(); -} |