Index: kernel/generic/include/proc/thread.h
===================================================================
--- kernel/generic/include/proc/thread.h	(revision 0366d09d1929d3cd61f8f612f9ea15794bc5650c)
+++ kernel/generic/include/proc/thread.h	(revision 78acbc721cee3d7063c5c7c8adbf897587243cb1)
@@ -221,6 +221,5 @@
 extern void thread_ready(thread_t *);
 extern void thread_exit(void) __attribute__((noreturn));
-extern void thread_interrupt(thread_t *);
-extern bool thread_interrupted(thread_t *);
+extern void thread_interrupt(thread_t *, bool);
 
 #ifndef thread_create_arch
Index: kernel/generic/src/proc/task.c
===================================================================
--- kernel/generic/src/proc/task.c	(revision 0366d09d1929d3cd61f8f612f9ea15794bc5650c)
+++ kernel/generic/src/proc/task.c	(revision 78acbc721cee3d7063c5c7c8adbf897587243cb1)
@@ -536,16 +536,5 @@
 
 	list_foreach(task->threads, th_link, thread_t, thread) {
-		bool sleeping = false;
-
-		irq_spinlock_lock(&thread->lock, false);
-
-		thread->interrupted = true;
-		if (thread->state == Sleeping)
-			sleeping = true;
-
-		irq_spinlock_unlock(&thread->lock, false);
-
-		if (sleeping)
-			waitq_interrupt_sleep(thread);
+		thread_interrupt(thread, false);
 	}
 
Index: kernel/generic/src/proc/thread.c
===================================================================
--- kernel/generic/src/proc/thread.c	(revision 0366d09d1929d3cd61f8f612f9ea15794bc5650c)
+++ kernel/generic/src/proc/thread.c	(revision 78acbc721cee3d7063c5c7c8adbf897587243cb1)
@@ -530,36 +530,17 @@
  *               will remain valid until thread_interrupt() exits.
  */
-void thread_interrupt(thread_t *thread)
+void thread_interrupt(thread_t *thread, bool irq_dis)
 {
 	assert(thread != NULL);
 
-	irq_spinlock_lock(&thread->lock, true);
+	irq_spinlock_lock(&thread->lock, irq_dis);
 
 	thread->interrupted = true;
 	bool sleeping = (thread->state == Sleeping);
 
-	irq_spinlock_unlock(&thread->lock, true);
+	irq_spinlock_unlock(&thread->lock, irq_dis);
 
 	if (sleeping)
 		waitq_interrupt_sleep(thread);
-}
-
-/** Returns true if the thread was interrupted.
- *
- * @param thread A valid thread object. User must guarantee it will
- *               be alive during the entire call.
- * @return true if the thread was already interrupted via thread_interrupt().
- */
-bool thread_interrupted(thread_t *thread)
-{
-	assert(thread != NULL);
-
-	bool interrupted;
-
-	irq_spinlock_lock(&thread->lock, true);
-	interrupted = thread->interrupted;
-	irq_spinlock_unlock(&thread->lock, true);
-
-	return interrupted;
 }
 
