summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/thread.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-13 06:48:58 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-18 08:20:16 +0200
commit709f38a97287ff1aa8e8c0668c2d066e711db87c (patch)
treee711e14275c58c0ee8483468fca804476db0fdbd /cpukit/score/include/rtems/score/thread.h
parentscore: _User_extensions_Handler_initialization() (diff)
downloadrtems-709f38a97287ff1aa8e8c0668c2d066e711db87c.tar.bz2
score: Use chain iterator for user extensions
Add a lock and use a chain iterator for safe iteration during concurrent user extension addition and removal. Ensure that dynamically added thread delete and fatal extensions are called in reverse order. Update #2555. Update #2692.
Diffstat (limited to '')
-rw-r--r--cpukit/score/include/rtems/score/thread.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h
index d9f1eb2d6d..4da4a341d6 100644
--- a/cpukit/score/include/rtems/score/thread.h
+++ b/cpukit/score/include/rtems/score/thread.h
@@ -48,6 +48,8 @@ struct Scheduler_Control;
struct Scheduler_Node;
+struct User_extensions_Iterator;
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -899,6 +901,11 @@ struct _Thread_Control {
struct _pthread_cleanup_context *last_cleanup_context;
/**
+ * @brief LIFO list of user extensions iterators.
+ */
+ struct User_extensions_Iterator *last_user_extensions_iterator;
+
+ /**
* @brief Variable length array of user extension pointers.
*
* The length is defined by the application via <rtems/confdefs.h>.