git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@52 35acf78f-673a-0410-8e92-d51de3d6d3f4

master
gdisirio 2007-10-14 07:07:54 +00:00
parent 509a27eaad
commit 779840691f
4 changed files with 12 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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;
}
/**

View File

@ -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);
}