Index: libcfa/src/concurrency/preemption.cfa
===================================================================
--- libcfa/src/concurrency/preemption.cfa	(revision cefd0b9f8d669c3888a7be8acdd78102ec58c3c8)
+++ libcfa/src/concurrency/preemption.cfa	(revision fbb930ec77eae01fe0f6a0d17ebf91b832058985)
@@ -357,4 +357,27 @@
 			}
 		}
+	}
+
+	// Check whether or not there is pending preemption
+	// force_yield( __POLL_PREEMPTION ) if appropriate
+	// return true if the thread was in an interruptable state
+	// i.e. on a real processor and not in the kernel
+	// (can return true even if no preemption was pending)
+	bool poll_interrupts() libcfa_public {
+		// Cache the processor now since interrupts can start happening after the atomic store
+		processor   * proc = publicTLS_get( this_processor );
+		if ( ! proc ) return false;
+		if ( ! __preemption_enabled() ) return false;
+
+		with( __cfaabi_tls.preemption_state ){
+			// Signal the compiler that a fence is needed but only for signal handlers
+			__atomic_signal_fence(__ATOMIC_RELEASE);
+			if( proc->pending_preemption ) {
+				proc->pending_preemption = false;
+				force_yield( __POLL_PREEMPTION );
+			}
+		}
+
+		return true;
 	}
 }
