Index: trunk/kernel/kern/chdev.h
===================================================================
--- trunk/kernel/kern/chdev.h	(revision 346)
+++ trunk/kernel/kern/chdev.h	(revision 407)
@@ -66,10 +66,11 @@
 
 /******************************************************************************************
- * This define the generic prototypes for the two functions that must be defined
- * by all drivers implementing a generic device:
- * - "cmd"     : start an I/O operation.
+ * This define the generic prototypes for the three functions that must be defined
+ * by the drivers implementing a generic device:
+ * - "cmd"     : start a blocking I/O operation.
  * - "isr"     : complete an I/O operation.
- * The "cmd" and "isr" are registered in the generic chdev descriptor at kernel init,
- * and are called to start and complete an I/O operation.  
+ * - "aux"     : not for all drivers (implement special functions)
+ * The "cmd", "isr", and "aux" driver functions are registered in the generic chdev
+ * descriptor at kernel init, and are called to start and complete an I/O operation.  
 *****************************************************************************************/
 
@@ -77,4 +78,5 @@
 typedef void (dev_cmd_t) ( xptr_t thread );  
 typedef void (dev_isr_t) ( struct chdev_s * dev );  
+typedef void (dev_aux_t) ( void * args );  
 
 /******************************************************************************************
@@ -121,10 +123,12 @@
 	uint32_t             impl;        /*! peripheral inplementation subtype              */
     uint32_t             channel;     /*! channel index                                  */
-    bool_t               is_rx;       /*! relevant for NIC peripheral channels only      */
+    bool_t               is_rx;       /*! relevant for NIC and TXT peripherals           */
 	xptr_t               base;        /*! extended pointer on channel device segment     */
     char                 name[16];    /*! name (required by DEVFS)                       */
 
-    dev_cmd_t          * cmd;         /*! local pointer on driver command function       */
-    dev_isr_t          * isr;         /*! local pointer on driver ISR function           */  
+    dev_cmd_t          * cmd;         /*! local pointer on driver CMD function           */
+    dev_isr_t          * isr;         /*! local pointer on driver ISR function           */
+    dev_aux_t          * aux;         /*! local pointer on driver AUX function           */
+
     struct thread_s    * server;      /*! local pointer on associated server thread      */
 
@@ -165,7 +169,8 @@
     xptr_t   pic;                                // external / single channel / shared
 
-    xptr_t   txt[CONFIG_MAX_TXT_CHANNELS];       // external / multi-channels / shared
     xptr_t   ioc[CONFIG_MAX_IOC_CHANNELS];       // external / multi-channels / shared
     xptr_t   fbf[CONFIG_MAX_FBF_CHANNELS];       // external / multi-channels / shared
+    xptr_t   txt_rx[CONFIG_MAX_TXT_CHANNELS];    // external / multi-channels / shared
+    xptr_t   txt_tx[CONFIG_MAX_TXT_CHANNELS];    // external / multi-channels / shared
     xptr_t   nic_rx[CONFIG_MAX_NIC_CHANNELS];    // external / multi-channels / shared
     xptr_t   nic_tx[CONFIG_MAX_NIC_CHANNELS];    // external / multi-channels / shared
@@ -211,13 +216,11 @@
 
 /******************************************************************************************
- * This function registers a local client thread in the waiting queue of a remote 
+ * This function registers the calling thread in the waiting queue of a remote 
  * chdev descriptor, activates (i.e. unblock) the server thread associated to chdev,
  * and blocks itself on the THREAD_BLOCKED_IO condition.
  ******************************************************************************************
  * @ chdev_xp  : extended pointer on remote chdev descriptor.
- * @ thread    : local pointer on client thread.
- *****************************************************************************************/
-void chdev_register_command( xptr_t            chdev_xp,
-                             struct thread_s * thread );
+ *****************************************************************************************/
+void chdev_register_command( xptr_t chdev_xp );
 
 /******************************************************************************************
