Index: trunk/kernel/kern/scheduler.c
===================================================================
--- trunk/kernel/kern/scheduler.c	(revision 635)
+++ trunk/kernel/kern/scheduler.c	(revision 640)
@@ -507,5 +507,5 @@
 #if (DEBUG_SCHED_YIELD & 0x1)
 if( sched->trace || (cycle > DEBUG_SCHED_YIELD) )
-sched_display( lid );
+sched_remote_display( local_cxy , lid );
 #endif
 
@@ -593,60 +593,4 @@
 }  // end sched_yield()
 
-
-///////////////////////////////
-void sched_display( lid_t lid )
-{
-    list_entry_t * iter;
-    thread_t     * thread;
-
-    core_t       * core    = &LOCAL_CLUSTER->core_tbl[lid];
-    scheduler_t  * sched   = &core->scheduler;
-    
-    // get pointers on TXT0 chdev
-    xptr_t    txt0_xp  = chdev_dir.txt_tx[0];
-    cxy_t     txt0_cxy = GET_CXY( txt0_xp );
-    chdev_t * txt0_ptr = GET_PTR( txt0_xp );
-
-    // get extended pointer on remote TXT0 lock
-    xptr_t  lock_xp = XPTR( txt0_cxy , &txt0_ptr->wait_lock );
-
-    // get TXT0 lock 
-    remote_busylock_acquire( lock_xp );
-
-    nolock_printk("\n***** threads on core[%x,%d] / current %x / rpc_threads %d / cycle %d\n",
-    local_cxy , lid, sched->current, LOCAL_CLUSTER->rpc_threads[lid],
-    (uint32_t)hal_get_cycles() );
-
-    // display kernel threads
-    LIST_FOREACH( &sched->k_root , iter )
-    {
-        thread = LIST_ELEMENT( iter , thread_t , sched_list );
-        if (thread->type == THREAD_DEV) 
-        {
-            nolock_printk(" - %s / pid %X / trdid %X / desc %X / block %X / flags %X / %s\n",
-            thread_type_str( thread->type ), thread->process->pid, thread->trdid,
-            thread, thread->blocked, thread->flags, thread->chdev->name );
-        }
-        else
-        {
-            nolock_printk(" - %s / pid %X / trdid %X / desc %X / block %X / flags %X\n",
-            thread_type_str( thread->type ), thread->process->pid, thread->trdid,
-            thread, thread->blocked, thread->flags );
-        }
-    }
-
-    // display user threads
-    LIST_FOREACH( &sched->u_root , iter )
-    {
-        thread = LIST_ELEMENT( iter , thread_t , sched_list );
-        nolock_printk(" - %s / pid %X / trdid %X / desc %X / block %X / flags %X\n",
-        thread_type_str( thread->type ), thread->process->pid, thread->trdid,
-        thread, thread->blocked, thread->flags );
-    }
-
-    // release TXT0 lock
-    remote_busylock_release( lock_xp );
-
-}  // end sched_display()
 
 /////////////////////////////////////
@@ -684,4 +628,5 @@
     nolock_printk("\n***** threads on core[%x,%d] / current %x / rpc_threads %d / cycle %d\n",
     cxy , lid, current, rpcs, (uint32_t)hal_get_cycles() );
+    nolock_printk("  type | pid        | trdid      | desc       | block      | flags      | func\n");
 
     // display kernel threads
@@ -706,10 +651,10 @@
             hal_remote_strcpy( XPTR( local_cxy , name ), XPTR( cxy , chdev->name ) );
 
-            nolock_printk(" - %s / pid %X / trdid %X / desc %X / block %X / flags %X / %s\n",
+            nolock_printk(" - %s | %X | %X | %X | %X | %X | %s\n",
             thread_type_str( type ), pid, trdid, thread, blocked, flags, name );
         }
         else
         {
-            nolock_printk(" - %s / pid %X / trdid %X / desc %X / block %X / flags %X\n",
+            nolock_printk(" - %s | %X | %X | %X | %X | %X |\n",
             thread_type_str( type ), pid, trdid, thread, blocked, flags );
         }
@@ -732,7 +677,8 @@
         process_t *   process = hal_remote_lpt ( XPTR( cxy , &thread->process ) );
         pid_t         pid     = hal_remote_l32 ( XPTR( cxy , &process->pid ) );
-
-        nolock_printk(" - %s / pid %X / trdid %X / desc %X / block %X / flags %X\n",
-        thread_type_str( type ), pid, trdid, thread, blocked, flags );
+        void      *   func    = hal_remote_lpt ( XPTR( cxy , &thread->entry_func ) );
+
+        nolock_printk(" - %s | %X | %X | %X | %X | %X | %x\n",
+        thread_type_str( type ), pid, trdid, thread, blocked, flags, (uint32_t)func );
 
         // get next user thread list_entry
