diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-10-14 07:07:54 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-10-14 07:07:54 +0000 |
commit | 779840691f4f6b3bb647d85f160ce238defa2de0 (patch) | |
tree | d0dcbc07090451a9d11354f1a8ffe08266da2ed0 | |
parent | 509a27eaad133259f119d65f0433c7feb408b506 (diff) | |
download | ChibiOS-779840691f4f6b3bb647d85f160ce238defa2de0.tar.gz ChibiOS-779840691f4f6b3bb647d85f160ce238defa2de0.tar.bz2 ChibiOS-779840691f4f6b3bb647d85f160ce238defa2de0.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@52 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r-- | docs/Doxyfile | 2 | ||||
-rw-r--r-- | readme.txt | 5 | ||||
-rw-r--r-- | src/chdelta.c | 5 | ||||
-rw-r--r-- | src/chevents.c | 4 |
4 files changed, 12 insertions, 4 deletions
diff --git a/docs/Doxyfile b/docs/Doxyfile index 074515d8e..06ec78649 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -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 diff --git a/readme.txt b/readme.txt index f16e4cdac..a3bed78b4 100644 --- a/readme.txt +++ b/readme.txt @@ -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
diff --git a/src/chdelta.c b/src/chdelta.c index f87aec5a9..8a8100e5f 100644 --- a/src/chdelta.c +++ b/src/chdelta.c @@ -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;
}
/**
diff --git a/src/chevents.c b/src/chevents.c index a38975216..f88412e11 100644 --- a/src/chevents.c +++ b/src/chevents.c @@ -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);
}
|