Index: libcfa/src/concurrency/kernel/startup.cfa
===================================================================
--- libcfa/src/concurrency/kernel/startup.cfa	(revision dddb3dd01058a6f0eb621887f1bc9675d616a840)
+++ libcfa/src/concurrency/kernel/startup.cfa	(revision a1538cd646f1e032f1abd29e7abb8e6ece8a787a)
@@ -73,5 +73,5 @@
 static void __kernel_first_resume( processor * this );
 static void __kernel_last_resume ( processor * this );
-static void init(processor & this, const char name[], cluster & _cltr);
+static void init(processor & this, const char name[], cluster & _cltr, void (*fnc) (void *), void * arg);
 static void deinit(processor & this);
 static void doregister( struct cluster & cltr );
@@ -198,5 +198,5 @@
 		( this.terminated ){};
 		( this.runner ){};
-		init( this, "Main Processor", *mainCluster );
+		init( this, "Main Processor", *mainCluster, 0p, 0p );
 		kernel_thread = pthread_self();
 
@@ -452,5 +452,5 @@
 }
 
-static void init(processor & this, const char name[], cluster & _cltr) with( this ) {
+static void init(processor & this, const char name[], cluster & _cltr, void (*fnc) (void *), void * arg) with( this ) {
 	this.name = name;
 	this.cltr = &_cltr;
@@ -464,4 +464,7 @@
 	this.io.dirty   = false;
 
+	this.init.fnc = fnc;
+	this.init.arg = arg;
+
 	this.idle = eventfd(0, 0);
 	if (idle < 0) {
@@ -513,10 +516,10 @@
 }
 
-void ?{}(processor & this, const char name[], cluster & _cltr) {
+void ?{}(processor & this, const char name[], cluster & _cltr, void (*fnc) (void *), void * arg) {
 	( this.terminated ){};
 	( this.runner ){};
 
 	disable_interrupts();
-		init( this, name, _cltr );
+		init( this, name, _cltr, fnc, arg );
 	enable_interrupts( __cfaabi_dbg_ctx );
 
