From 0c827780f0dcfe27259e64787afa3fb69e92a42f Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 7 Jan 2016 10:12:42 +0000 Subject: [PATCH] Improved messages. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8707 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- doc/rt/Doxyfile_chm | 2 +- doc/rt/Doxyfile_html | 2 +- os/rt/include/ch.h | 4 ++-- os/rt/include/chmsg.h | 4 +++- os/rt/include/chschd.h | 10 ++++++---- os/rt/src/chmsg.c | 3 +-- readme.txt | 5 +++++ 7 files changed, 19 insertions(+), 11 deletions(-) diff --git a/doc/rt/Doxyfile_chm b/doc/rt/Doxyfile_chm index 9c2dd78e4..fcabe40ba 100644 --- a/doc/rt/Doxyfile_chm +++ b/doc/rt/Doxyfile_chm @@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/RT # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 3.1.0 +PROJECT_NUMBER = 3.2.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doc/rt/Doxyfile_html b/doc/rt/Doxyfile_html index 3b1bf1641..398d6eab1 100644 --- a/doc/rt/Doxyfile_html +++ b/doc/rt/Doxyfile_html @@ -38,7 +38,7 @@ PROJECT_NAME = ChibiOS/RT # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 3.1.0 +PROJECT_NUMBER = 3.2.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/os/rt/include/ch.h b/os/rt/include/ch.h index 9794b6dcb..eb35eb944 100644 --- a/os/rt/include/ch.h +++ b/os/rt/include/ch.h @@ -48,7 +48,7 @@ /** * @brief Kernel version string. */ -#define CH_KERNEL_VERSION "3.1.0" +#define CH_KERNEL_VERSION "3.2.0" /** * @brief Kernel version major number. @@ -58,7 +58,7 @@ /** * @brief Kernel version minor number. */ -#define CH_KERNEL_MINOR 1 +#define CH_KERNEL_MINOR 2 /** * @brief Kernel version patch number. diff --git a/os/rt/include/chmsg.h b/os/rt/include/chmsg.h index 61c117e75..cd4f99897 100644 --- a/os/rt/include/chmsg.h +++ b/os/rt/include/chmsg.h @@ -95,7 +95,9 @@ static inline bool chMsgIsPendingI(thread_t *tp) { */ static inline msg_t chMsgGet(thread_t *tp) { - return tp->p_msg; + chDbgAssert(tp->p_state == CH_STATE_SNDMSG, "invalid state"); + + return tp->p_u.sentmsg; } /** diff --git a/os/rt/include/chschd.h b/os/rt/include/chschd.h index 5d9829d57..5c81fdf2d 100644 --- a/os/rt/include/chschd.h +++ b/os/rt/include/chschd.h @@ -276,6 +276,12 @@ struct ch_thread { * state. */ thread_reference_t *wttrp; +#if (CH_CFG_USE_MESSAGES == TRUE) || defined(__DOXYGEN__) + /** + * @brief Thread sent message. + */ + msg_t sentmsg; +#endif #if (CH_CFG_USE_SEMAPHORES == TRUE) || defined(__DOXYGEN__) /** * @brief Pointer to a generic semaphore object. @@ -314,10 +320,6 @@ struct ch_thread { * @brief Messages queue. */ threads_queue_t p_msgqueue; - /** - * @brief Thread message. - */ - msg_t p_msg; #endif #if (CH_CFG_USE_EVENTS == TRUE) || defined(__DOXYGEN__) /** diff --git a/os/rt/src/chmsg.c b/os/rt/src/chmsg.c index 7b559e8ed..a4a646722 100644 --- a/os/rt/src/chmsg.c +++ b/os/rt/src/chmsg.c @@ -90,8 +90,7 @@ msg_t chMsgSend(thread_t *tp, msg_t msg) { chDbgCheck(tp != NULL); chSysLock(); - ctp->p_msg = msg; - ctp->p_u.wtobjp = &tp->p_msgqueue; + ctp->p_u.sentmsg = msg; msg_insert(ctp, &tp->p_msgqueue); if (tp->p_state == CH_STATE_WTMSG) { (void) chSchReadyI(tp); diff --git a/readme.txt b/readme.txt index 7d66aa04e..e5d5320e2 100644 --- a/readme.txt +++ b/readme.txt @@ -72,6 +72,11 @@ *** Releases and Change Log *** ***************************************************************************** +*** RT 3.2.0 *** +- OPT: Removed the p_msg field from the thread_t structure saving a + msg_t-sized field from the structure. Messages now use a new field + into the p_u union. Now synchnorous messages are even faster. + *** 16.1.0 *** - RT: Added CodeWarrior compiler support to the e200 port. - HAL: Added support for STM32F446.