summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/include/rtems/posix/keyimpl.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-12 13:16:11 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-12 13:16:25 +0100
commit172e953147da1d82bf5a6746b2fe6112a9509ad7 (patch)
treeac343e5f8c6eaee52f162c86d0966924823e3514 /cpukit/posix/include/rtems/posix/keyimpl.h
parentposix: Simplify _POSIX_Keys_Find() (diff)
downloadrtems-172e953147da1d82bf5a6746b2fe6112a9509ad7.tar.bz2
posix: Delete key/value if value is set to NULL
Diffstat (limited to 'cpukit/posix/include/rtems/posix/keyimpl.h')
-rw-r--r--cpukit/posix/include/rtems/posix/keyimpl.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/cpukit/posix/include/rtems/posix/keyimpl.h b/cpukit/posix/include/rtems/posix/keyimpl.h
index 1dcfb4e9c6..a5c80d625b 100644
--- a/cpukit/posix/include/rtems/posix/keyimpl.h
+++ b/cpukit/posix/include/rtems/posix/keyimpl.h
@@ -17,6 +17,7 @@
*/
#include <rtems/posix/key.h>
+#include <rtems/score/chainimpl.h>
#include <rtems/score/freechain.h>
#include <rtems/score/objectimpl.h>
#include <rtems/score/percpu.h>
@@ -186,6 +187,18 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_POSIX_Keys_Find(
);
}
+RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free_key_value_pair(
+ POSIX_Keys_Key_value_pair *key_value_pair
+)
+{
+ _RBTree_Extract(
+ &_POSIX_Keys_Key_value_lookup_tree,
+ &key_value_pair->Key_value_lookup_node
+ );
+ _Chain_Extract_unprotected( &key_value_pair->Key_values_per_thread_node );
+ _POSIX_Keys_Key_value_pair_free( key_value_pair );
+}
+
/** @} */
#ifdef __cplusplus