src/aix/native/java/net/aix_close.c

Print this page

        

@@ -36,10 +36,22 @@
  * Side Note: This coding needs initialization. Under Linux this is done
  * automatically via __attribute((constructor)), on AIX this is done manually
  * (see aix_close_init).
  *
  */
+
+/*
+   AIX needs a workaround for I/O cancellation, see:
+   http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/close.htm
+   ...
+   The close subroutine is blocked until all subroutines which use the file
+   descriptor return to usr space. For example, when a thread is calling close
+   and another thread is calling select with the same file descriptor, the
+   close subroutine does not return until the select call returns.
+   ...
+*/
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <signal.h>
 #include <pthread.h>
 #include <sys/types.h>