From 6d419676cde900b91f8de3cbfd8664ffa81232d7 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Wed, 4 Oct 2017 07:54:36 +0000 Subject: Alignment capability for memory pools. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10759 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/common/oslib/include/chfifo.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'os/common/oslib/include/chfifo.h') diff --git a/os/common/oslib/include/chfifo.h b/os/common/oslib/include/chfifo.h index 9f3c0924b..1df57ef41 100644 --- a/os/common/oslib/include/chfifo.h +++ b/os/common/oslib/include/chfifo.h @@ -110,22 +110,26 @@ extern "C" { /** * @brief Initializes a FIFO object. + * @pre The messages size must be a multiple of the alignment + * requirement. * * @param[out] ofp pointer to a @p objects_fifo_t structure * @param[in] objsize size of objects * @param[in] objn number of objects available + * @param[in] objalign required objects alignment * @param[in] objbuf pointer to the buffer of objects, it must be able - * to hold @p objn objects of @p objsize size + * to hold @p objn objects of @p objsize size with + * @p objealign alignment * @param[in] msgbuf pointer to the buffer of messages, it must be able * to hold @p objn messages * * @init */ static inline void chFifoObjectInit(objects_fifo_t *ofp, size_t objsize, - size_t objn, void *objbuf, - msg_t *msgbuf) { + size_t objn, unsigned objalign, + void *objbuf, msg_t *msgbuf) { - chGuardedPoolObjectInit(&ofp->free, objsize); + chGuardedPoolObjectInitAligned(&ofp->free, objsize, objalign); chGuardedPoolLoadArray(&ofp->free, objbuf, objn); chMBObjectInit(&ofp->mbx, msgbuf, objn); } -- cgit v1.2.3