mirror of
https://github.com/apache/nuttx.git
synced 2026-06-06 00:14:22 +08:00
Change all time conversions. Yech. New timer units in microseconds breaks all existing logic that used milliseconds in the conversions. Something likely got broken doing this, probably because I confused a MSEC2TICK conversion with a TICK2MSEC conversion. Also, the tickless OS no appears fully functional and passes the OS test on the simulator with no errors
This commit is contained in:
@@ -100,7 +100,7 @@ void up_unblock_task(FAR struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
************************************************************/
|
************************************************************/
|
||||||
|
|
||||||
/* We want the general purpose timer running at the rate
|
/* We want the general purpose timer running at the rate
|
||||||
* MSEC_PER_TICK. The C5471 clock is 47.5MHz and we're using
|
* USEC_PER_TICK. The C5471 clock is 47.5MHz and we're using
|
||||||
* a timer PTV value of 3 (3 == divide incoming frequency by
|
* a timer PTV value of 3 (3 == divide incoming frequency by
|
||||||
* 16) which then yields a 16 bitCLKS_PER_INT value
|
* 16) which then yields a 16 bitCLKS_PER_INT value
|
||||||
* of 29687.
|
* of 29687.
|
||||||
@@ -114,7 +114,7 @@ void up_timer_initialize(void)
|
|||||||
up_disable_irq(C5471_IRQ_SYSTIMER);
|
up_disable_irq(C5471_IRQ_SYSTIMER);
|
||||||
|
|
||||||
/* Start the general purpose timer running in auto-reload mode
|
/* Start the general purpose timer running in auto-reload mode
|
||||||
* so that an interrupt is generated at the rate MSEC_PER_TICK.
|
* so that an interrupt is generated at the rate USEC_PER_TICK.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
val = ((CLKS_PER_INT-1) << CLKS_PER_INT_SHIFT) | AR | ST | PTV;
|
val = ((CLKS_PER_INT-1) << CLKS_PER_INT_SHIFT) | AR | ST | PTV;
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ void up_timer_initialize(void)
|
|||||||
up_disable_irq(DM320_IRQ_SYSTIMER);
|
up_disable_irq(DM320_IRQ_SYSTIMER);
|
||||||
|
|
||||||
/* Start timer0 running so that an interrupt is generated at
|
/* Start timer0 running so that an interrupt is generated at
|
||||||
* the rate MSEC_PER_TICK.
|
* the rate USEC_PER_TICK.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
putreg16(DM320_TMR0_PRSCL, DM320_TIMER0_TMPRSCL); /* Timer 0 Prescalar */
|
putreg16(DM320_TMR0_PRSCL, DM320_TIMER0_TMPRSCL); /* Timer 0 Prescalar */
|
||||||
|
|||||||
@@ -138,11 +138,11 @@ void up_timer_initialize(void)
|
|||||||
* putreg(0, IMX_TIMER1_TPRER); -- already the case
|
* putreg(0, IMX_TIMER1_TPRER); -- already the case
|
||||||
*
|
*
|
||||||
* Set the compare register so that the COMP interrupt is generated
|
* Set the compare register so that the COMP interrupt is generated
|
||||||
* with a period of MSEC_PER_TICK. The value IMX_PERCLK1_FREQ/1000
|
* with a period of USEC_PER_TICK. The value IMX_PERCLK1_FREQ/1000
|
||||||
* (defined in board.h) is the number of counts in millisecond, so:
|
* (defined in board.h) is the number of counts in millisecond, so:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
putreg32((IMX_PERCLK1_FREQ / 1000) * MSEC_PER_TICK, IMX_TIMER1_TCMP);
|
putreg32(MSEC2TICK(IMX_PERCLK1_FREQ / 1000), IMX_TIMER1_TCMP);
|
||||||
|
|
||||||
/* Configure to provide timer COMP interrupts when TCN increments
|
/* Configure to provide timer COMP interrupts when TCN increments
|
||||||
* to TCMP.
|
* to TCMP.
|
||||||
|
|||||||
@@ -2409,7 +2409,7 @@ static sdio_eventset_t kinetis_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
|
|
||||||
/* Start the watchdog timer */
|
/* Start the watchdog timer */
|
||||||
|
|
||||||
delay = (timeout + (MSEC_PER_TICK-1)) / MSEC_PER_TICK;
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)kinetis_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)kinetis_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret != OK)
|
||||||
|
|||||||
@@ -2266,7 +2266,7 @@ static sdio_eventset_t lpc17_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
|
|
||||||
/* Start the watchdog timer */
|
/* Start the watchdog timer */
|
||||||
|
|
||||||
delay = (timeout + (MSEC_PER_TICK-1)) / MSEC_PER_TICK;
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)lpc17_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)lpc17_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret != OK)
|
||||||
|
|||||||
@@ -2273,7 +2273,7 @@ static sdio_eventset_t sam_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
|
|
||||||
/* Start the watchdog timer */
|
/* Start the watchdog timer */
|
||||||
|
|
||||||
delay = (timeout + (MSEC_PER_TICK-1)) / MSEC_PER_TICK;
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret != OK)
|
||||||
|
|||||||
@@ -127,7 +127,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define DMA_TIMEOUT_MS (800)
|
#define DMA_TIMEOUT_MS (800)
|
||||||
#define DMA_TIMEOUT_TICKS ((DMA_TIMEOUT_MS + (MSEC_PER_TICK-1)) / MSEC_PER_TICK)
|
#define DMA_TIMEOUT_TICKS MSEC2TICK(DMA_TIMEOUT_MS)
|
||||||
|
|
||||||
/* Debug *******************************************************************/
|
/* Debug *******************************************************************/
|
||||||
/* Check if SPI debut is enabled (non-standard.. no support in
|
/* Check if SPI debut is enabled (non-standard.. no support in
|
||||||
|
|||||||
@@ -2737,7 +2737,7 @@ static sdio_eventset_t sam_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
timeout = MAX(5000, timeout);
|
timeout = MAX(5000, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
delay = (timeout + (MSEC_PER_TICK-1)) / MSEC_PER_TICK;
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret != OK)
|
||||||
|
|||||||
@@ -120,7 +120,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define DMA_TIMEOUT_MS (800)
|
#define DMA_TIMEOUT_MS (800)
|
||||||
#define DMA_TIMEOUT_TICKS ((DMA_TIMEOUT_MS + (MSEC_PER_TICK-1)) / MSEC_PER_TICK)
|
#define DMA_TIMEOUT_TICKS MSEC2TICK(DMA_TIMEOUT_MS)
|
||||||
|
|
||||||
/* Debug *******************************************************************/
|
/* Debug *******************************************************************/
|
||||||
/* Check if SPI debut is enabled (non-standard.. no support in
|
/* Check if SPI debut is enabled (non-standard.. no support in
|
||||||
|
|||||||
@@ -390,7 +390,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define DMA_TIMEOUT_MS (800)
|
#define DMA_TIMEOUT_MS (800)
|
||||||
#define DMA_TIMEOUT_TICKS ((DMA_TIMEOUT_MS + (MSEC_PER_TICK-1)) / MSEC_PER_TICK)
|
#define DMA_TIMEOUT_TICKS MSEC2TICK(DMA_TIMEOUT_MS)
|
||||||
|
|
||||||
/* Debug *******************************************************************/
|
/* Debug *******************************************************************/
|
||||||
/* Check if SSC debut is enabled (non-standard.. no support in
|
/* Check if SSC debut is enabled (non-standard.. no support in
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
|
|
||||||
/* Poll the pen position while the pen is down at this rate (50MS): */
|
/* Poll the pen position while the pen is down at this rate (50MS): */
|
||||||
|
|
||||||
#define TSD_WDOG_DELAY ((50 + (MSEC_PER_TICK-1))/ MSEC_PER_TICK)
|
#define TSD_WDOG_DELAY MSEC2TICK(50)
|
||||||
|
|
||||||
/* This is a value for the threshold that guantees a big difference on the
|
/* This is a value for the threshold that guantees a big difference on the
|
||||||
* first pendown (but can't overflow).
|
* first pendown (but can't overflow).
|
||||||
|
|||||||
@@ -527,7 +527,7 @@ static int twi_wait(struct twi_dev_s *priv, unsigned int size)
|
|||||||
* There is no concern about arithmetic overflow for reasonable transfer sizes.
|
* There is no concern about arithmetic overflow for reasonable transfer sizes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
timeout = (TWI_TIMEOUT_MSPB * size) / MSEC_PER_TICK;
|
timeout = MSEC2TICK(TWI_TIMEOUT_MSPB);
|
||||||
if (timeout < 1)
|
if (timeout < 1)
|
||||||
{
|
{
|
||||||
timeout = 1;
|
timeout = 1;
|
||||||
|
|||||||
@@ -151,8 +151,8 @@
|
|||||||
|
|
||||||
#define STM32_READY_DELAY 200000 /* In loop counts */
|
#define STM32_READY_DELAY 200000 /* In loop counts */
|
||||||
#define STM32_FLUSH_DELAY 200000 /* In loop counts */
|
#define STM32_FLUSH_DELAY 200000 /* In loop counts */
|
||||||
#define STM32_SETUP_DELAY (5000 / MSEC_PER_TICK) /* 5 seconds in system ticks */
|
#define STM32_SETUP_DELAY SEC2TICK(5) /* 5 seconds in system ticks */
|
||||||
#define STM32_DATANAK_DELAY (5000 / MSEC_PER_TICK) /* 5 seconds in system ticks */
|
#define STM32_DATANAK_DELAY SEC2TICK(5) /* 5 seconds in system ticks */
|
||||||
|
|
||||||
/* Ever-present MIN/MAX macros */
|
/* Ever-present MIN/MAX macros */
|
||||||
|
|
||||||
|
|||||||
@@ -2315,7 +2315,7 @@ static sdio_eventset_t stm32_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
|
|
||||||
/* Start the watchdog timer */
|
/* Start the watchdog timer */
|
||||||
|
|
||||||
delay = (timeout + (MSEC_PER_TICK-1)) / MSEC_PER_TICK;
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)stm32_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)stm32_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret != OK)
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
* robin tasks but it doesn't here to do it for everything
|
* robin tasks but it doesn't here to do it for everything
|
||||||
*/
|
*/
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Add the task in the correct location in the prioritized
|
// Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
+18
-21
@@ -66,6 +66,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include <nuttx/arch.h>
|
#include <nuttx/arch.h>
|
||||||
|
#include <nuttx/clock.h>
|
||||||
|
|
||||||
#ifdef CONFIG_SCHED_TICKLESS
|
#ifdef CONFIG_SCHED_TICKLESS
|
||||||
|
|
||||||
@@ -74,12 +75,12 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#if defined(CONFIG_SIM_WALLTIME) || defined(CONFIG_SIM_X11FB)
|
#if defined(CONFIG_SIM_WALLTIME) || defined(CONFIG_SIM_X11FB)
|
||||||
# define TICK_USEC (1000000 / CLK_TCK)
|
# define TICK_USEC (USEC_PER_SEC / CLK_TCK)
|
||||||
# define TICK_SEC (TICK_USEC / 1000000)
|
# define TICK_SEC (TICK_USEC / USEC_PER_SEC)
|
||||||
# define TICK_NSEC ((TICK_USEC % 1000) * 1000)
|
# define TICK_NSEC ((TICK_USEC % NSEC_PER_USEC) * NSEC_PER_USEC)
|
||||||
#else
|
#else
|
||||||
# define TICK_SEC 0
|
# define TICK_SEC 0
|
||||||
# define TICK_NSEC (128 * 1000)
|
# define TICK_NSEC NSEC_PER_TICK
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -209,8 +210,8 @@ int up_timer_cancel(FAR struct timespec *ts)
|
|||||||
|
|
||||||
if (g_timer_active)
|
if (g_timer_active)
|
||||||
{
|
{
|
||||||
ts->tv_sec = g_interval_delay.tv_nsec;
|
ts->tv_sec = g_interval_delay.tv_sec;
|
||||||
ts->tv_nsec = g_interval_delay.tv_sec;
|
ts->tv_nsec = g_interval_delay.tv_nsec;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -220,8 +221,8 @@ int up_timer_cancel(FAR struct timespec *ts)
|
|||||||
|
|
||||||
/* Disable and reset the simulated timer */
|
/* Disable and reset the simulated timer */
|
||||||
|
|
||||||
g_interval_delay.tv_nsec = 0;
|
|
||||||
g_interval_delay.tv_sec = 0;
|
g_interval_delay.tv_sec = 0;
|
||||||
|
g_interval_delay.tv_nsec = 0;
|
||||||
g_timer_active = false;
|
g_timer_active = false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -253,8 +254,8 @@ int up_timer_cancel(FAR struct timespec *ts)
|
|||||||
#ifdef CONFIG_SCHED_TICKLESS
|
#ifdef CONFIG_SCHED_TICKLESS
|
||||||
int up_timer_start(FAR const struct timespec *ts)
|
int up_timer_start(FAR const struct timespec *ts)
|
||||||
{
|
{
|
||||||
g_interval_delay.tv_nsec = ts->tv_nsec;
|
|
||||||
g_interval_delay.tv_sec = ts->tv_sec;
|
g_interval_delay.tv_sec = ts->tv_sec;
|
||||||
|
g_interval_delay.tv_nsec = ts->tv_nsec;
|
||||||
g_timer_active = true;
|
g_timer_active = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -278,10 +279,10 @@ void up_timer_update(void)
|
|||||||
/* Increment the elapsed time */
|
/* Increment the elapsed time */
|
||||||
|
|
||||||
g_elapsed_time.tv_nsec += TICK_NSEC;
|
g_elapsed_time.tv_nsec += TICK_NSEC;
|
||||||
if (g_elapsed_time.tv_nsec >= 1000000000)
|
if (g_elapsed_time.tv_nsec >= NSEC_PER_SEC)
|
||||||
{
|
{
|
||||||
g_elapsed_time.tv_nsec++;
|
g_elapsed_time.tv_sec++;
|
||||||
g_elapsed_time.tv_sec -= 1000000000;
|
g_elapsed_time.tv_nsec -= NSEC_PER_SEC;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_elapsed_time.tv_sec += TICK_SEC;
|
g_elapsed_time.tv_sec += TICK_SEC;
|
||||||
@@ -307,7 +308,7 @@ void up_timer_update(void)
|
|||||||
|
|
||||||
/* Decrement nanoseconds */
|
/* Decrement nanoseconds */
|
||||||
|
|
||||||
if (g_interval_delay.tv_nsec > TICK_NSEC)
|
if (g_interval_delay.tv_nsec >= TICK_NSEC)
|
||||||
{
|
{
|
||||||
g_interval_delay.tv_nsec -= TICK_NSEC;
|
g_interval_delay.tv_nsec -= TICK_NSEC;
|
||||||
}
|
}
|
||||||
@@ -316,14 +317,10 @@ void up_timer_update(void)
|
|||||||
|
|
||||||
else if (g_interval_delay.tv_sec > 0)
|
else if (g_interval_delay.tv_sec > 0)
|
||||||
{
|
{
|
||||||
if (g_interval_delay.tv_nsec >= TICK_NSEC)
|
g_interval_delay.tv_nsec += NSEC_PER_SEC;
|
||||||
{
|
g_interval_delay.tv_sec--;
|
||||||
g_interval_delay.tv_nsec = 0;
|
|
||||||
}
|
g_interval_delay.tv_nsec -= TICK_NSEC;
|
||||||
else
|
|
||||||
{
|
|
||||||
g_interval_delay.tv_sec--;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Otherwise the timer has expired */
|
/* Otherwise the timer has expired */
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ void up_unblock_task(struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ void up_unblock_task(FAR struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ void up_unblock_task(FAR struct tcb_s *tcb)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#if CONFIG_RR_INTERVAL > 0
|
#if CONFIG_RR_INTERVAL > 0
|
||||||
tcb->timeslice = CONFIG_RR_INTERVAL / MSEC_PER_TICK;
|
tcb->timeslice = MSEC2TICK(CONFIG_RR_INTERVAL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Add the task in the correct location in the prioritized
|
/* Add the task in the correct location in the prioritized
|
||||||
|
|||||||
Reference in New Issue
Block a user