diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-04 16:39:58 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-09 07:09:47 +0200 |
commit | 4b28d3c79729e582c3cde8392524a15f3e7923ca (patch) | |
tree | 726aab374bb374aeb96d3ca6334d011b5a1e511c /bsps/shared/shmdr/shmdr-addlq.c | |
parent | bsps: Move VME support to bsps (diff) | |
download | rtems-4b28d3c79729e582c3cde8392524a15f3e7923ca.tar.bz2 |
bsps: Move shmdr to bsps
This patch is a part of the BSP source reorganization.
Update #3285.
Diffstat (limited to 'bsps/shared/shmdr/shmdr-addlq.c')
-rw-r--r-- | bsps/shared/shmdr/shmdr-addlq.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/bsps/shared/shmdr/shmdr-addlq.c b/bsps/shared/shmdr/shmdr-addlq.c new file mode 100644 index 0000000000..23e986753d --- /dev/null +++ b/bsps/shared/shmdr/shmdr-addlq.c @@ -0,0 +1,40 @@ +/* void Shm_Locked_queue_Add( lq_cb, ecb ) + * + * This routine adds an envelope control block to a shared memory queue. + * + * Input parameters: + * lq_cb - pointer to a locked queue control block + * ecb - pointer to an envelope control block + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989-1999. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include <rtems.h> +#include "shm_driver.h" + +void Shm_Locked_queue_Add( + Shm_Locked_queue_Control *lq_cb, + Shm_Envelope_control *ecb +) +{ + uint32_t index; + + ecb->next = Shm_Locked_queue_End_of_list; + ecb->queue = lq_cb->owner; + index = ecb->index; + + Shm_Lock( lq_cb ); + if ( Shm_Convert(lq_cb->front) != Shm_Locked_queue_End_of_list ) + Shm_Envelopes[ Shm_Convert(lq_cb->rear) ].next = index; + else + lq_cb->front = index; + lq_cb->rear = index; + Shm_Unlock( lq_cb ); +} |