+
+/*
+ * Here we want to make sure that the apc is taken quickly. Therefore, we check
+ * if, and where, the activation is running. If it is not running, we don't need to do
+ * anything. If it is, we need to signal the other processor to trigger it to
+ * check the asts. Note that there is a race here and we may end up sending a signal
+ * after the thread has been switched off. Hopefully this is no big deal.
+ */
+
+ thread = thr_act->thread; /* Get the thread for the signaled activation */
+ prssr = thread->last_processor; /* get the processor it was last on */
+ if(prssr && (cpu_data[prssr->slot_num].active_thread == thread)) { /* Is the thread active on its processor? */
+ cause_ast_check(prssr); /* Yes, kick it */
+ }
+
+ mp_enable_preemption();