Index: trunk/kernel/kern/process.h
===================================================================
--- trunk/kernel/kern/process.h	(revision 651)
+++ trunk/kernel/kern/process.h	(revision 657)
@@ -4,5 +4,5 @@
  * Authors  Ghassan Almaless (2008,2009,2010,2011,2012)
  *          Mohamed Lamine Karaoui (2015)
- *          Alain Greiner (2016,2017,2018,2019)
+ *          Alain Greiner (2016,2017,2018,2019,2020)
  *
  * Copyright (c) UPMC Sorbonne Universites
@@ -70,6 +70,6 @@
 /*********************************************************************************************
  * This structure defines an array of extended pointers on the open file descriptors
- * for a given process. We use an extended pointer because the open file descriptor
- * is always stored in the same cluster as the inode associated to the file.
+ * for a given process. We use an extended pointer because the open file descriptors
+ * are always stored in the same cluster as the inode associated to the file.
  * A free entry in this array contains the XPTR_NULL value.
  * The array size is defined by the CONFIG_PROCESS_FILE_MAX_NR parameter.
@@ -79,7 +79,9 @@
  *       - the fd_array[] in a process copy is simply a cache containing a subset of the
  *         open files to speed the fdid to xptr translation, but the "lock" and "current
- *         fields are not used.
- *       - all modifications made by the process_fd_remove() are done in reference cluster
- *         and reported in all process_copies.
+ *         fields are not significant for these copies.
+ *       - the modifications made by the process_fd_remove() function are done in the
+ *         reference cluster in all process_copies.
+ *       - The modifications made by the process_fd_register() function are done in the
+ *         reference cluster, and in the cluster containing the calling thread.
  ********************************************************************************************/
 
@@ -436,9 +438,9 @@
 
 /*********************************************************************************************
- * This function allocates a free slot in the fd_array of the reference process
+ * This function allocates a free slot in the fd_array of the reference process descriptor
  * identified by the <process_xp> argument, register the <file_xp> argument in the
  * allocated slot, and return the slot index in the <fdid> buffer.
- * It can be called by any thread in any cluster, because it uses remote access
- * primitives to access the reference process descriptor.
+ * Note: we must use the reference process descriptor, because the reference fd_array is
+ * contained in the reference cluster.  It can be called by any thread in any cluster.
  * It takes the lock protecting the reference fd_array against concurrent accesses.
  *********************************************************************************************
@@ -454,15 +456,15 @@
 /*********************************************************************************************
  * This function uses as many remote accesses as required, to reset an entry in fd_array[],
- * in all clusters containing a copy. The entry is identified by the <fdid> argument.
- * This function must be executed by a thread running in reference cluster, that contains
- * the complete list of process descriptors copies.
+ * identified by the <fdid> argument, in all clusters containing a copy of the 
+ * process descriptor, identified by the <process_xp> argument. 
+ * Note: we must use the owner process descriptor, because only this owner cluster contains
+ * the list of process copies. It can be called by any thread in any cluster.
  * It takes the lock protecting the reference fd_array against concurrent accesses.
- * TODO this function is not implemented yet.
  *********************************************************************************************
  * @ process  : [in] pointer on the local process descriptor.
  * @ fdid     : [in] file descriptor index in the fd_array.
  ********************************************************************************************/
-void process_fd_remove( process_t * process,
-                        uint32_t    fdid );
+void process_fd_remove( xptr_t     process_xp,
+                        uint32_t   fdid );
 
 /*********************************************************************************************
