Index: src/proc/scheduler.c
===================================================================
--- src/proc/scheduler.c	(revision 8262010e7e7fe13508b9f3ccd85fc91dc8978f35)
+++ src/proc/scheduler.c	(revision dba84ff88ce25a6cd17ab4cbe353008cbd2da6cc)
@@ -202,4 +202,5 @@
 			 * This is the place where threads leave scheduler();
 			 */
+			before_thread_runs();
 		    	spinlock_unlock(&THREAD->lock);
 			cpu_priority_restore(THREAD->saved_context.pri);
Index: src/proc/thread.c
===================================================================
--- src/proc/thread.c	(revision 8262010e7e7fe13508b9f3ccd85fc91dc8978f35)
+++ src/proc/thread.c	(revision dba84ff88ce25a6cd17ab4cbe353008cbd2da6cc)
@@ -70,4 +70,6 @@
 	void *arg = THREAD->thread_arg;
 
+	before_thread_runs();
+
 	/* this is where each thread wakes up after its creation */
 	spinlock_unlock(&THREAD->lock);
