From fde2a2cc60934f77816a4d2200b97127cdb3a6d2 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio 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