From 687ea96f1528fbe47f447e2c3622ba0b65b70a5d Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Wed, 26 Sep 2018 11:53:05 +0000 Subject: Added pipes to OSLIB. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12295 110e8d01-0319-4d1e-a829-52ad28d1bb01 --- os/lib/include/chlib.h | 119 +++++++++++++++++++++++------------------------ os/lib/include/chpipes.h | 30 +++++------- 2 files changed, 70 insertions(+), 79 deletions(-) (limited to 'os/lib/include') diff --git a/os/lib/include/chlib.h b/os/lib/include/chlib.h index 02f50e9c2..ab55d333b 100644 --- a/os/lib/include/chlib.h +++ b/os/lib/include/chlib.h @@ -83,6 +83,61 @@ #error "OS check failed, must be included after ch.h" #endif +/* Configuration file checks.*/ +#if !defined(CH_CFG_USE_MAILBOXES) +#error "CH_CFG_USE_MAILBOXES not defined in chconf.h" +#endif + +#if !defined(CH_CFG_USE_MEMCORE) +#error "CH_CFG_USE_MEMCORE not defined in chconf.h" +#endif + +#if !defined(CH_CFG_USE_HEAP) +#error "CH_CFG_USE_HEAP not defined in chconf.h" +#endif + +#if !defined(CH_CFG_USE_MEMPOOLS) +#error "CH_CFG_USE_MEMPOOLS not defined in chconf.h" +#endif + +#if !defined(CH_CFG_USE_OBJ_FIFOS) +#error "CH_CFG_USE_OBJ_FIFOS not defined in chconf.h" +#endif + +#if !defined(CH_CFG_USE_PIPES) +//#error "CH_CFG_USE_PIPES not defined in chconf.h" +#define CH_CFG_USE_PIPES FALSE /* temporary */ +#endif + +/* Objects factory options checks.*/ +#if !defined(CH_CFG_USE_FACTORY) +#error "CH_CFG_USE_FACTORY not defined in chconf.h" +#endif + +#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH) +#error "CH_CFG_FACTORY_MAX_NAMES_LENGTH not defined in chconf.h" +#endif + +#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) +#error "CH_CFG_FACTORY_OBJECTS_REGISTRY not defined in chconf.h" +#endif + +#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) +#error "CH_CFG_FACTORY_GENERIC_BUFFERS not defined in chconf.h" +#endif + +#if !defined(CH_CFG_FACTORY_SEMAPHORES) +#error "CH_CFG_FACTORY_SEMAPHORES not defined in chconf.h" +#endif + +#if !defined(CH_CFG_FACTORY_MAILBOXES) +#error "CH_CFG_FACTORY_MAILBOXES not defined in chconf.h" +#endif + +#if !defined(CH_CFG_FACTORY_OBJ_FIFOS) +#error "CH_CFG_FACTORY_OBJ_FIFOS not defined in chconf.h" +#endif + /* License checks.*/ #if !defined(CH_CUSTOMER_LIC_LIB) || !defined(CH_LICENSE_FEATURES) #error "malformed chlicense.h" @@ -108,7 +163,7 @@ #define CH_CFG_USE_FACTORY FALSE -#endif /* (CH_CUSTOMER_LIC_LIB == FALSE) || \ +#endif /* (CH_CUSTOMER_LIC_LIB == FALSE) || (CH_LICENSE_FEATURES == CH_FEATURES_INTERMEDIATE) || (CH_LICENSE_FEATURES == CH_FEATURES_BASIC) */ @@ -129,67 +184,9 @@ #define CH_CFG_USE_OBJ_FIFOS FALSE #define CH_CFG_USE_PIPES FALSE -#endif /* (CH_CUSTOMER_LIC_LIB == FALSE) || \ +#endif /* (CH_CUSTOMER_LIC_LIB == FALSE) || (CH_LICENSE_FEATURES == CH_FEATURES_BASIC) */ -/* Configuration file checks.*/ -#if !defined(CH_CFG_USE_SEMAPHORES) -#error "CH_CFG_USE_SEMAPHORES not defined in chconf.h" -#endif - -#if !defined(CH_CFG_USE_MAILBOXES) -#error "CH_CFG_USE_MAILBOXES not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_USE_MEMCORE) -#error "CH_CFG_USE_MEMCORE not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_USE_HEAP) -#error "CH_CFG_USE_HEAP not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_USE_MEMPOOLS) -#error "CH_CFG_USE_MEMPOOLS not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_USE_OBJ_FIFOS) -#error "CH_CFG_USE_OBJ_FIFOS not defined in chlibconf.h" -#endif - -//#if !defined(CH_CFG_USE_PIPES) -//#error "CH_CFG_USE_PIPES not defined in chlibconf.h" -//#endif - -/* Objects factory options checks.*/ -#if !defined(CH_CFG_USE_FACTORY) -#error "CH_CFG_USE_FACTORY not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_FACTORY_MAX_NAMES_LENGTH) -#error "CH_CFG_FACTORY_MAX_NAMES_LENGTH not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_FACTORY_OBJECTS_REGISTRY) -#error "CH_CFG_FACTORY_OBJECTS_REGISTRY not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_FACTORY_GENERIC_BUFFERS) -#error "CH_CFG_FACTORY_GENERIC_BUFFERS not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_FACTORY_SEMAPHORES) -#error "CH_CFG_FACTORY_SEMAPHORES not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_FACTORY_MAILBOXES) -#error "CH_CFG_FACTORY_MAILBOXES not defined in chlibconf.h" -#endif - -#if !defined(CH_CFG_FACTORY_OBJ_FIFOS) -#error "CH_CFG_FACTORY_OBJ_FIFOS not defined in chlibconf.h" -#endif - /*===========================================================================*/ /* Module data structures and types. */ /*===========================================================================*/ @@ -213,7 +210,7 @@ #include "chmemheaps.h" #include "chmempools.h" #include "chobjfifos.h" -//#include "chpipes.h" +#include "chpipes.h" #include "chfactory.h" #endif /* CHLIB_H */ diff --git a/os/lib/include/chpipes.h b/os/lib/include/chpipes.h index c66c48d68..a09b3c72a 100644 --- a/os/lib/include/chpipes.h +++ b/os/lib/include/chpipes.h @@ -56,7 +56,7 @@ typedef struct { after the buffer. */ uint8_t *wrptr; /**< @brief Write pointer. */ uint8_t *rdptr; /**< @brief Read pointer. */ - size_t cnt; /**< @brief Messages in queue. */ + size_t cnt; /**< @brief Bytes in the pipe. */ bool reset; /**< @brief True if in reset state. */ threads_queue_t qw; /**< @brief Queued writers. */ threads_queue_t qr; /**< @brief Queued readers. */ @@ -145,9 +145,9 @@ extern "C" { * @param[in] pp the pointer to an initialized @p pipe_t object * @return The size of the pipe. * - * @iclass + * @api */ -static inline size_t chPipeGetSizeI(const pipe_t *pp) { +static inline size_t chPipeGetSize(const pipe_t *pp) { /*lint -save -e9033 [10.8] Perfectly safe pointers arithmetic.*/ @@ -161,11 +161,9 @@ static inline size_t chPipeGetSizeI(const pipe_t *pp) { * @param[in] pp the pointer to an initialized @p pipe_t object * @return The number of queued bytes. * - * @iclass + * @api */ -static inline size_t chPipeGetUsedCountI(const pipe_t *pp) { - - chDbgCheckClassI(); +static inline size_t chPipeGetUsedCount(const pipe_t *pp) { return pp->cnt; } @@ -176,13 +174,11 @@ static inline size_t chPipeGetUsedCountI(const pipe_t *pp) { * @param[in] pp the pointer to an initialized @p pipe_t object * @return The number of empty byte slots. * - * @iclass + * @api */ -static inline size_t chPipeGetFreeCountI(const pipe_t *pp) { - - chDbgCheckClassI(); +static inline size_t chPipeGetFreeCount(const pipe_t *pp) { - return chPipeGetSizeI(pp) - chPipeGetUsedCountI(pp); + return chPipeGetSize(pp) - chPipeGetUsedCount(pp); } /** @@ -195,11 +191,9 @@ static inline size_t chPipeGetFreeCountI(const pipe_t *pp) { * @param[in] pp the pointer to an initialized @p pipe_t object * @return The next byte in queue. * - * @iclass + * @api */ -static inline uint8_t chPipePeekI(const pipe_t *pp) { - - chDbgCheckClassI(); +static inline uint8_t chPipePeek(const pipe_t *pp) { return *pp->rdptr; } @@ -209,9 +203,9 @@ static inline uint8_t chPipePeekI(const pipe_t *pp) { * * @param[in] pp the pointer to an initialized @p pipe_t object * - * @xclass + * @api */ -static inline void chPipeResumeX(pipe_t *pp) { +static inline void chPipeResume(pipe_t *pp) { pp->reset = false; } -- cgit v1.2.3