forked from Imagelibrary/rtems
PR 1673/cpukit * sapi/src/chainappendnotify.c, sapi/src/chaingetnotify.c, sapi/src/chaingetwait.c, sapi/src/chainprependnotify.c: New files. * sapi/Makefile.am: Reflect changes above. * sapi/include/rtems/chain.h: Declare rtems_chain_append_with_notification(), rtems_chain_prepend_with_notification(), rtems_chain_get_with_notification(), and rtems_chain_get_with_wait(). * sapi/inline/rtems/chain.inl: Define rtems_chain_append_with_empty_check(), rtems_chain_prepend_with_empty_check(), and rtems_chain_get_with_empty_check().
56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
/**
|
|
* @file
|
|
*
|
|
* @ingroup ClassicChains
|
|
*
|
|
* @brief rtems_chain_get_with_wait() implementation.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 2010 embedded brains GmbH. All rights reserved.
|
|
*
|
|
* embedded brains GmbH
|
|
* Obere Lagerstr. 30
|
|
* 82178 Puchheim
|
|
* Germany
|
|
* <rtems@embedded-brains.de>
|
|
*
|
|
* The license and distribution terms for this file may be
|
|
* found in the file LICENSE in this distribution or at
|
|
* http://www.rtems.com/license/LICENSE.
|
|
*/
|
|
|
|
#if HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
|
|
#include <rtems/chain.h>
|
|
|
|
rtems_status_code rtems_chain_get_with_wait(
|
|
rtems_chain_control *chain,
|
|
rtems_event_set events,
|
|
rtems_interval timeout,
|
|
rtems_chain_node **node_ptr
|
|
)
|
|
{
|
|
rtems_status_code sc = RTEMS_SUCCESSFUL;
|
|
rtems_chain_node *node = NULL;
|
|
|
|
while (
|
|
sc == RTEMS_SUCCESSFUL
|
|
&& (node = rtems_chain_get( chain )) == NULL
|
|
) {
|
|
rtems_event_set out;
|
|
sc = rtems_event_receive(
|
|
events,
|
|
RTEMS_EVENT_ALL | RTEMS_WAIT,
|
|
timeout,
|
|
&out
|
|
);
|
|
}
|
|
|
|
*node_ptr = node;
|
|
|
|
return sc;
|
|
}
|