From fde2a2cc60934f77816a4d2200b97127cdb3a6d2 Mon Sep 17 00:00:00 2001
From: Giovanni Di Sirio <gdisirio@gmail.com>
Date: Thu, 25 Feb 2016 10:37:07 +0000
Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8946
 35acf78f-673a-0410-8e92-d51de3d6d3f4

---
 os/rt/src/chregistry.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

(limited to 'os/rt/src')

diff --git a/os/rt/src/chregistry.c b/os/rt/src/chregistry.c
index ec90b4168..24246c012 100644
--- a/os/rt/src/chregistry.c
+++ b/os/rt/src/chregistry.c
@@ -233,6 +233,33 @@ thread_t *chRegFindThreadByPointer(thread_t *tp) {
   return NULL;
 }
 
+/**
+ * @brief   Confirms that a working area is being used by some active thread.
+ * @note    The reference counter of the found thread is increased by one so
+ *          it cannot be disposed incidentally after the pointer has been
+ *          returned.
+ *
+ * @param[in] wa        pointer to a static working area
+ * @return              A pointer to the found thread.
+ * @retval NULL         if a matching thread has not been found.
+ *
+ * @api
+ */
+thread_t *chRegFindThreadByWorkingArea(stkalign_t *wa) {
+  thread_t *ctp;
+
+  /* Scanning registry.*/
+  ctp = chRegFirstThread();
+  do {
+    if (ctp->stklimit == wa) {
+      return ctp;
+    }
+    ctp = chRegNextThread(ctp);
+  } while (ctp != NULL);
+
+  return NULL;
+}
+
 #endif /* CH_CFG_USE_REGISTRY == TRUE */
 
 /** @} */
-- 
cgit v1.2.3