aboutsummaryrefslogtreecommitdiffstats
path: root/os/common/oslib/include/chfifo.h
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2017-10-04 07:54:36 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2017-10-04 07:54:36 +0000
commit6d419676cde900b91f8de3cbfd8664ffa81232d7 (patch)
treeea5b47de44b0a769088dc23a10b4bf77eb0c36f6 /os/common/oslib/include/chfifo.h
parentbf027add794d08a5dd0fb32948a3fe318fd33b93 (diff)
downloadChibiOS-6d419676cde900b91f8de3cbfd8664ffa81232d7.tar.gz
ChibiOS-6d419676cde900b91f8de3cbfd8664ffa81232d7.tar.bz2
ChibiOS-6d419676cde900b91f8de3cbfd8664ffa81232d7.zip
Alignment capability for memory pools.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10759 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/common/oslib/include/chfifo.h')
-rw-r--r--os/common/oslib/include/chfifo.h12
1 files changed, 8 insertions, 4 deletions
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);
}