From 1d31853ee7d1645e1b9733f079e3d713f583d732 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sat, 2 Nov 2019 07:18:43 +0000 Subject: [PATCH] Removed open arrays instances because C++ incompatibility. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@13151 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- os/oslib/include/chfactory.h | 32 +------------------------------- os/oslib/src/chfactory.c | 10 ++++++---- 2 files changed, 7 insertions(+), 35 deletions(-) diff --git a/os/oslib/include/chfactory.h b/os/oslib/include/chfactory.h index aaaa5d2c2..1bd65cf0c 100644 --- a/os/oslib/include/chfactory.h +++ b/os/oslib/include/chfactory.h @@ -215,13 +215,6 @@ typedef struct ch_dyn_object { * @brief List element of the dynamic buffer object. */ dyn_element_t element; - /*lint -save -e9038 [18.7] Required by design.*/ - /** - * @brief The buffer. - * @note This requires C99. - */ - uint8_t buffer[]; - /*lint restore*/ } dyn_buffer_t; #endif @@ -254,13 +247,6 @@ typedef struct ch_dyn_mailbox { * @brief The mailbox. */ mailbox_t mbx; - /*lint -save -e9038 [18.7] Required by design.*/ - /** - * @brief Messages buffer. - * @note This requires C99. - */ - msg_t msgbuf[]; - /*lint restore*/ } dyn_mailbox_t; #endif @@ -277,15 +263,6 @@ typedef struct ch_dyn_objects_fifo { * @brief The objects FIFO. */ objects_fifo_t fifo; - /*lint -save -e9038 [18.7] Required by design.*/ - /** - * @brief Messages buffer. - * @note This open array is followed by another area containing the - * objects, this area is not represented in this structure. - * @note This requires C99. - */ - msg_t msgbuf[]; - /*lint restore*/ } dyn_objects_fifo_t; #endif @@ -302,13 +279,6 @@ typedef struct ch_dyn_pipe { * @brief The pipe. */ pipe_t pipe; - /*lint -save -e9038 [18.7] Required by design.*/ - /** - * @brief Messages buffer. - * @note This requires C99. - */ - uint8_t buffer[]; - /*lint restore*/ } dyn_pipe_t; #endif @@ -482,7 +452,7 @@ static inline size_t chFactoryGetBufferSize(dyn_buffer_t *dbp) { */ static inline uint8_t *chFactoryGetBuffer(dyn_buffer_t *dbp) { - return dbp->buffer; + return (uint8_t *)(dbp + 1); } #endif /* CH_CFG_FACTORY_GENERIC_BUFFERS == TRUE */ diff --git a/os/oslib/src/chfactory.c b/os/oslib/src/chfactory.c index 9b652007e..01c1144e9 100644 --- a/os/oslib/src/chfactory.c +++ b/os/oslib/src/chfactory.c @@ -418,7 +418,7 @@ dyn_buffer_t *chFactoryCreateBuffer(const char *name, size_t size) { size); if (dbp != NULL) { /* Initializing buffer object data.*/ - memset((void *)dbp->buffer, 0, size); + memset((void *)(dbp + 1), 0, size); } F_UNLOCK(); @@ -579,7 +579,7 @@ dyn_mailbox_t *chFactoryCreateMailbox(const char *name, size_t n) { (n * sizeof (msg_t))); if (dmp != NULL) { /* Initializing mailbox object data.*/ - chMBObjectInit(&dmp->mbx, dmp->msgbuf, n); + chMBObjectInit(&dmp->mbx, (msg_t *)(dmp + 1), n); } F_UNLOCK(); @@ -666,9 +666,11 @@ dyn_objects_fifo_t *chFactoryCreateObjectsFIFO(const char *name, (objn * sizeof (msg_t)) + (objn * objsize)); if (dofp != NULL) { + msg_t *msgbuf = (msg_t *)(dofp + 1); + /* Initializing mailbox object data.*/ chFifoObjectInitAligned(&dofp->fifo, objsize, objn, objalign, - (void *)&dofp->msgbuf[objn], dofp->msgbuf); + (void *)&msgbuf[objn], msgbuf); } F_UNLOCK(); @@ -750,7 +752,7 @@ dyn_pipe_t *chFactoryCreatePipe(const char *name, size_t size) { sizeof (dyn_pipe_t) + size); if (dpp != NULL) { /* Initializing mailbox object data.*/ - chPipeObjectInit(&dpp->pipe, dpp->buffer, size); + chPipeObjectInit(&dpp->pipe, (uint8_t *)(dpp + 1), size); } F_UNLOCK();