Index: libcfa/src/concurrency/io.cfa
===================================================================
--- libcfa/src/concurrency/io.cfa	(revision 3d2852aaa38a63cf72ff318506922add30bdf089)
+++ libcfa/src/concurrency/io.cfa	(revision 185efe615194414ccc8bd70d2a2f586155ec2bea)
@@ -36,4 +36,32 @@
 
 	static void * __io_poller( void * arg );
+
+       // Weirdly, some systems that do support io_uring don't actually define these
+       #ifdef __alpha__
+       /*
+       * alpha is the only exception, all other architectures
+       * have common numbers for new system calls.
+       */
+       # ifndef __NR_io_uring_setup
+       #  define __NR_io_uring_setup           535
+       # endif
+       # ifndef __NR_io_uring_enter
+       #  define __NR_io_uring_enter           536
+       # endif
+       # ifndef __NR_io_uring_register
+       #  define __NR_io_uring_register        537
+       # endif
+       #else /* !__alpha__ */
+       # ifndef __NR_io_uring_setup
+       #  define __NR_io_uring_setup           425
+       # endif
+       # ifndef __NR_io_uring_enter
+       #  define __NR_io_uring_enter           426
+       # endif
+       # ifndef __NR_io_uring_register
+       #  define __NR_io_uring_register        427
+       # endif
+       #endif
+
 
 //=============================================================================================
@@ -188,5 +216,5 @@
 
 		struct io_user_data * data = (struct io_user_data *)cqe.user_data;
-		__cfaabi_bits_print_safe( STDERR_FILENO, "Performed reading io cqe %p, result %d for %p\n", data, cqe.res, data->thrd );
+		// __cfaabi_bits_print_safe( STDERR_FILENO, "Performed reading io cqe %p, result %d for %p\n", data, cqe.res, data->thrd );
 
 		data->result = cqe.res;
@@ -296,5 +324,5 @@
 	// Submit however, many entries need to be submitted
 	int ret = syscall( __NR_io_uring_enter, ring.fd, 1, 0, 0, 0p, 0);
-	__cfaabi_bits_print_safe( STDERR_FILENO, "Performed io_submit, returned %d\n", ret );
+	// __cfaabi_bits_print_safe( STDERR_FILENO, "Performed io_submit, returned %d\n", ret );
 	if( ret < 0 ) {
 		switch((int)errno) {
@@ -352,5 +380,5 @@
 	#define __submit_wait \
 		io_user_data data = { 0, active_thread() }; \
-		__cfaabi_bits_print_safe( STDERR_FILENO, "Preparing user data %p for %p\n", &data, data.thrd ); \
+		/*__cfaabi_bits_print_safe( STDERR_FILENO, "Preparing user data %p for %p\n", &data, data.thrd );*/ \
 		sqe->user_data = (uint64_t)&data; \
 		__submit( ring, idx ); \
Index: libcfa/src/concurrency/preemption.cfa
===================================================================
--- libcfa/src/concurrency/preemption.cfa	(revision 3d2852aaa38a63cf72ff318506922add30bdf089)
+++ libcfa/src/concurrency/preemption.cfa	(revision 185efe615194414ccc8bd70d2a2f586155ec2bea)
@@ -97,4 +97,8 @@
 	while( node = get_expired( alarms, currtime ) ) {
 		// __cfaabi_dbg_print_buffer_decl( " KERNEL: preemption tick.\n" );
+		Duration period = node->period;
+		if( period == 0) {
+			node->set = false;                  // Node is one-shot, just mark it as not pending
+		}
 
 		// Check if this is a kernel
@@ -107,12 +111,8 @@
 
 		// Check if this is a periodic alarm
-		Duration period = node->period;
 		if( period > 0 ) {
 			// __cfaabi_dbg_print_buffer_local( " KERNEL: alarm period is %lu.\n", period.tv );
 			node->alarm = currtime + period;    // Alarm is periodic, add currtime to it (used cached current time)
 			insert( alarms, node );             // Reinsert the node for the next time it triggers
-		}
-		else {
-			node->set = false;                  // Node is one-shot, just mark it as not pending
 		}
 	}
