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

This commit is contained in:
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 related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
PROJECT_NAME = ChibiOS/RT PROJECT_NAME = ChibiOS/RT
PROJECT_NUMBER = "0.3.3 beta" PROJECT_NUMBER = "0.3.4 beta"
OUTPUT_DIRECTORY = . OUTPUT_DIRECTORY = .
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English

View File

@ -38,6 +38,11 @@ AVR-AT90CANx-GCC - Port on AVER AT90CAN128, not complete yet.
*** Releases *** *** Releases ***
***************************************************************************** *****************************************************************************
*** 0.3.4 ***
- Fixed a problem in chVTSetI().
- Modified chEvtWaitTimeout() to work correctly in the TIME_INFINITE
scenario.
*** 0.3.3 *** *** 0.3.3 ***
- Modified the chVTSetI(), now for the "time" parameter can have value zero - Modified the chVTSetI(), now for the "time" parameter can have value zero
with meaning "infinite". This allows all the APIs with timeout parameters 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) { void chVTSetI(VirtualTimer *vtp, t_time time, t_vtfunc vtfunc, void *par) {
vtp->vt_func = vtfunc;
vtp->vt_par = par; vtp->vt_par = par;
if (time) { if (time) {
vtp->vt_func = vtfunc;
VirtualTimer *p = dlist.dl_next; VirtualTimer *p = dlist.dl_next;
while (p->vt_dtime < time) { while (p->vt_dtime < time) {
time -= p->vt_dtime; time -= p->vt_dtime;
@ -66,6 +65,8 @@ void chVTSetI(VirtualTimer *vtp, t_time time, t_vtfunc vtfunc, void *par) {
if (p != (VirtualTimer *)&dlist) if (p != (VirtualTimer *)&dlist)
p->vt_dtime -= time; 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_time time) {
t_eventid i; t_eventid i;
t_eventmask m; t_eventmask m;
t_msg msg;
chSysLock(); chSysLock();
@ -221,9 +222,10 @@ t_eventid chEvtWaitTimeout(t_eventmask ewmask,
currp->p_ewmask = ewmask; currp->p_ewmask = ewmask;
chSchGoSleepS(PRWTEVENT); chSchGoSleepS(PRWTEVENT);
if (!vt.vt_func) { if (!vt.vt_func) {
t_msg msg = currp->p_rdymsg;
chSysUnlock(); chSysUnlock();
return RDY_TIMEOUT; // No need to read t_rdymsg value, it is a timeout. return msg;
} }
chVTResetI(&vt); chVTResetI(&vt);
} }