diff options
Diffstat (limited to 'os/rt/include/chvt.h')
-rw-r--r-- | os/rt/include/chvt.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/os/rt/include/chvt.h b/os/rt/include/chvt.h index d461ccbfa..fe55fcc19 100644 --- a/os/rt/include/chvt.h +++ b/os/rt/include/chvt.h @@ -447,14 +447,19 @@ static inline void chVTDoTickI(void) { #if CH_CFG_ST_TIMEDELTA == 0
ch.vtlist.vt_systime++;
+ /*lint -save -e9087 -e740 [11.3, 1.3] Cast required by list handling.*/
if (&ch.vtlist != (virtual_timers_list_t *)ch.vtlist.vt_next) {
+ /*lint -restore*/
virtual_timer_t *vtp;
--ch.vtlist.vt_next->vt_delta;
- while (!(vtp = ch.vtlist.vt_next)->vt_delta) {
+ vtp = ch.vtlist.vt_next;
+ while (vtp->vt_delta == 0U) {
vtfunc_t fn = vtp->vt_func;
- vtp->vt_func = (vtfunc_t)NULL;
+ vtp->vt_func = NULL;
+ /*lint -save -e9087 -e740 [11.3, 1.3] Cast required by list handling.*/
vtp->vt_next->vt_prev = (virtual_timer_t *)&ch.vtlist;
+ /*lint -restore*/
ch.vtlist.vt_next = vtp->vt_next;
chSysUnlockFromISR();
fn(vtp->vt_par);
|