From 3e738661108fb2a8e3474c6336c2a5c2668f82b6 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Sat, 21 Jan 2017 14:18:37 -0500 Subject: Add CPU mode asserts to kernel on blocking functions. This scourge finds it's way back in far too often. Right now, only defined for ARM. Have fun! Change-Id: Ib21be09ebf71dec10dc652a7a664779251f49644 --- firmware/kernel/queue.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'firmware/kernel/queue.c') diff --git a/firmware/kernel/queue.c b/firmware/kernel/queue.c index 927e552..70dba46 100644 --- a/firmware/kernel/queue.c +++ b/firmware/kernel/queue.c @@ -283,6 +283,9 @@ void queue_wait(struct event_queue *q, struct queue_event *ev) #endif oldlevel = disable_irq_save(); + + ASSERT_CPU_MODE(CPU_MODE_THREAD_CONTEXT, oldlevel); + corelock_lock(&q->cl); #ifdef HAVE_EXTENDED_MESSAGING_AND_NAME @@ -335,6 +338,10 @@ void queue_wait_w_tmo(struct event_queue *q, struct queue_event *ev, int ticks) #endif oldlevel = disable_irq_save(); + + if (ticks != TIMEOUT_NOBLOCK) + ASSERT_CPU_MODE(CPU_MODE_THREAD_CONTEXT, oldlevel); + corelock_lock(&q->cl); #ifdef HAVE_EXTENDED_MESSAGING_AND_NAME @@ -421,6 +428,9 @@ intptr_t queue_send(struct event_queue *q, long id, intptr_t data) unsigned int wr; oldlevel = disable_irq_save(); + + ASSERT_CPU_MODE(CPU_MODE_THREAD_CONTEXT, oldlevel); + corelock_lock(&q->cl); wr = q->write++ & QUEUE_LENGTH_MASK; -- cgit v1.1