summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/rtthread.h1
-rw-r--r--src/scheduler.c10
2 files changed, 11 insertions, 0 deletions
diff --git a/include/rtthread.h b/include/rtthread.h
index b68a301a5c..0891ed9bcc 100644
--- a/include/rtthread.h
+++ b/include/rtthread.h
@@ -173,6 +173,7 @@ void rt_schedule_remove_thread(struct rt_thread *thread);
void rt_enter_critical(void);
void rt_exit_critical(void);
+rt_uint16_t rt_critical_level(void);
#ifdef RT_USING_HOOK
void rt_scheduler_sethook(void (*hook)(rt_thread_t from, rt_thread_t to));
diff --git a/src/scheduler.c b/src/scheduler.c
index cefc5b8c41..a0384e899a 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -34,6 +34,7 @@
* issue found by kuronca
* 2010-12-13 Bernard add defunct list initialization even if not use heap.
* 2011-05-10 Bernard clean scheduler debug log.
+ * 2013-12-21 Grissiom add rt_critical_level
*/
#include <rtthread.h>
@@ -398,5 +399,14 @@ void rt_exit_critical(void)
}
}
+/**
+ * Get the scheduler lock level
+ *
+ * @return the level of the scheduler lock. 0 means unlocked.
+ */
+rt_uint16_t rt_critical_level(void)
+{
+ return rt_scheduler_lock_nest;
+}
/*@}*/