Index: trunk/kernel/kern/scheduler.h
===================================================================
--- trunk/kernel/kern/scheduler.h	(revision 409)
+++ trunk/kernel/kern/scheduler.h	(revision 416)
@@ -40,14 +40,14 @@
 typedef struct scheduler_s
 {
-    spinlock_t        lock;         /*! readlock protecting lists of threads                */
-    uint16_t          u_threads_nr; /*! total numbre of attached user threads               */
-    uint16_t          k_threads_nr; /*! total number of attached kernel threads             */
-    list_entry_t      u_root;       /*! root of list of user threads for this scheduler     */
-    list_entry_t      k_root;       /*! root of list of kernel threads for this scheduler   */
-    list_entry_t    * u_last;       /*! pointer on list_entry for last executed k_thread    */
-    list_entry_t    * k_last;       /*! pointer on list entry for last executed u_thread    */
-    struct thread_s * idle;         /*! pointer on idle thread                              */
-    struct thread_s * current;      /*! pointer on current running thread                   */
-    bool_t            sig_pending;  /*! signal_handller must be called when true            */
+    spinlock_t        lock;            /*! readlock protecting lists of threads             */
+    uint16_t          u_threads_nr;    /*! total number of attached user threads            */
+    uint16_t          k_threads_nr;    /*! total number of attached kernel threads          */
+    list_entry_t      u_root;          /*! root of list of user threads                     */
+    list_entry_t      k_root;          /*! root of list of kernel threads                   */
+    list_entry_t    * u_last;          /*! pointer on list_entry for last executed k_thread */
+    list_entry_t    * k_last;          /*! pointer on list entry for last executed u_thread */
+    struct thread_s * idle;            /*! pointer on idle thread                           */
+    struct thread_s * current;         /*! pointer on current running thread                */
+    bool_t            req_ack_pending; /*! signal_handller must be called when true         */
 }
 scheduler_t;
@@ -67,11 +67,4 @@
                             struct thread_s * thread );
 
-/*********************************************************************************************
- * This function remove a thread from its scheduler.re scheduler.
- *********************************************************************************************
- * @ thread  : local pointer on the thread descriptor.
- ********************************************************************************************/  
-void sched_remove_thread( struct thread_s * thread );
-
 /********************************************************************************************* 
  * This function is the only method to make a context switch. It is called in cas of TICK,
@@ -87,11 +80,16 @@
 
 /*********************************************************************************************
- * This function scan all threads attached to a given core scheduler, and executes
- * the relevant actions for pending KILL or EXIT signals.
- * It is called in by the sched_yield() function, with IRQ disabled. 
+ * This function scan all threads attached to a given scheduler, and executes the relevant
+ * actions for pending THREAD_FLAG_REQ_ACK or THREAD_FLAG_REQ_DELETE requests. 
+ * It is called in by the sched_yield() function, with IRQ disabled.
+ * - REQ_ACK : it checks that target thread is blocked, decrements the response counter
+ *   to acknowledge the client thread, and reset the pending request. 
+ * - REQ_DELETE : it detach the target thread from parent if attached, detach it from
+ *   the process, remove it from scheduler, release memory allocated to thread descriptor,
+ *   and destroy the process descriptor it the target thread was the last thread.
  *********************************************************************************************
  * @ core    : local pointer on the core descriptor.
  ********************************************************************************************/
-void sched_handle_signals( struct core_s * core );
+void sched_handle_requests( struct core_s * core );
 
 /*********************************************************************************************
@@ -113,18 +111,4 @@
 
 /********************************************************************************************* 
- * This function unlink a thread identified by the <thread> pointer from its process. 
- * It is called by the sched_handle_signals() function when one EXIT or KILL signal is set,
- * and it implement the first step of a thread destructionebut can also be directly called by a local killer thread signal.
- * - It detach the thread from the scheduler.
- * - It detach the thread from the process.
- * - It detach the thread from the parent thread when the thread is attached.
- * - It destroys the thread descriptor.
- * - It acknowledge the killer thread if it's a kill signal
- *********************************************************************************************
- * @ thread   : pointer on thread to be killed.
- ********************************************************************************************/
-void sched_kill_thread( struct thread_s * thread );
-
-/********************************************************************************************* 
  * This function display the internal state of the local core identified by its <lid>.
  *********************************************************************************************
