git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@52 35acf78f-673a-0410-8e92-d51de3d6d3f4
parent
509a27eaad
commit
779840691f
|
@ -4,7 +4,7 @@
|
|||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
PROJECT_NAME = ChibiOS/RT
|
||||
PROJECT_NUMBER = "0.3.3 beta"
|
||||
PROJECT_NUMBER = "0.3.4 beta"
|
||||
OUTPUT_DIRECTORY = .
|
||||
CREATE_SUBDIRS = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
|
|
|
@ -38,6 +38,11 @@ AVR-AT90CANx-GCC - Port on AVER AT90CAN128, not complete yet.
|
|||
*** Releases ***
|
||||
*****************************************************************************
|
||||
|
||||
*** 0.3.4 ***
|
||||
- Fixed a problem in chVTSetI().
|
||||
- Modified chEvtWaitTimeout() to work correctly in the TIME_INFINITE
|
||||
scenario.
|
||||
|
||||
*** 0.3.3 ***
|
||||
- Modified the chVTSetI(), now for the "time" parameter can have value zero
|
||||
with meaning "infinite". This allows all the APIs with timeout parameters
|
||||
|
|
|
@ -50,10 +50,9 @@ void chVTInit(void) {
|
|||
*/
|
||||
void chVTSetI(VirtualTimer *vtp, t_time time, t_vtfunc vtfunc, void *par) {
|
||||
|
||||
vtp->vt_func = vtfunc;
|
||||
vtp->vt_par = par;
|
||||
|
||||
if (time) {
|
||||
vtp->vt_func = vtfunc;
|
||||
VirtualTimer *p = dlist.dl_next;
|
||||
while (p->vt_dtime < time) {
|
||||
time -= p->vt_dtime;
|
||||
|
@ -66,6 +65,8 @@ void chVTSetI(VirtualTimer *vtp, t_time time, t_vtfunc vtfunc, void *par) {
|
|||
if (p != (VirtualTimer *)&dlist)
|
||||
p->vt_dtime -= time;
|
||||
}
|
||||
else
|
||||
vtp->vt_func = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -205,6 +205,7 @@ t_eventid chEvtWaitTimeout(t_eventmask ewmask,
|
|||
t_time time) {
|
||||
t_eventid i;
|
||||
t_eventmask m;
|
||||
t_msg msg;
|
||||
|
||||
chSysLock();
|
||||
|
||||
|
@ -221,9 +222,10 @@ t_eventid chEvtWaitTimeout(t_eventmask ewmask,
|
|||
currp->p_ewmask = ewmask;
|
||||
chSchGoSleepS(PRWTEVENT);
|
||||
if (!vt.vt_func) {
|
||||
t_msg msg = currp->p_rdymsg;
|
||||
|
||||
chSysUnlock();
|
||||
return RDY_TIMEOUT; // No need to read t_rdymsg value, it is a timeout.
|
||||
return msg;
|
||||
}
|
||||
chVTResetI(&vt);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue