aboutsummaryrefslogtreecommitdiffstats
path: root/os/rt/src
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2017-10-13 08:52:00 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2017-10-13 08:52:00 +0000
commit72d563b45f02270fc18bfa61c0c0e7f94325e091 (patch)
tree991f703d7fd56d5aa76c3afcffd29562e00262ce /os/rt/src
parent750a8f14b696e51b8522cddcf0265775b610dfa1 (diff)
downloadChibiOS-72d563b45f02270fc18bfa61c0c0e7f94325e091.tar.gz
ChibiOS-72d563b45f02270fc18bfa61c0c0e7f94325e091.tar.bz2
ChibiOS-72d563b45f02270fc18bfa61c0c0e7f94325e091.zip
Experimental code.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/rt5_dev_point1@10816 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/rt/src')
-rw-r--r--os/rt/src/chvt.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/os/rt/src/chvt.c b/os/rt/src/chvt.c
index 1c5b2fea2..0667bf7c3 100644
--- a/os/rt/src/chvt.c
+++ b/os/rt/src/chvt.c
@@ -125,6 +125,13 @@ void chVTDoSetI(virtual_timer_t *vtp, sysinterval_t delay,
vtp->prev = (virtual_timer_t *)&ch.vtlist;
vtp->delta = delay;
+#if CH_CFG_INTERVALS_SIZE > CH_CFG_ST_RESOLUTION
+ /* The delta could be too large for the physical timer to handle.*/
+ if (delay > (sysinterval_t)TIME_MAX_SYSTIME) {
+ delay = (sysinterval_t)TIME_MAX_SYSTIME;
+ }
+#endif
+
/* Being the first element in the list the alarm timer is started.*/
port_timer_start_alarm(chTimeAddX(ch.vtlist.lasttime, delay));