Index: /trunk/include/iprt/pipe.h
===================================================================
--- /trunk/include/iprt/pipe.h	(revision 26754)
+++ /trunk/include/iprt/pipe.h	(revision 26755)
@@ -79,9 +79,12 @@
  *
  * @returns IPRT status code.
+ * @retval  VERR_WRONG_ORDER if racing a call to RTPipeReadBlocking.
+ *
  * @param   hPipe           The IPRT pipe handle to read from.
  * @param   pvBuf           Where to put the bytes we read.
- * @param   cbToRead        How much to read.
+ * @param   cbToRead        How much to read.  Must be greater than 0.
  * @param   pcbRead         Where to return the number of bytes that has been
- *                          read (mandatory).
+ *                          read (mandatory).  This is 0 if there is no more
+ *                          bytes to read.
  * @sa      RTPipeReadBlocking.
  */
@@ -92,4 +95,6 @@
  *
  * @returns IPRT status code.
+ * @retval  VERR_WRONG_ORDER if racing a call to RTPipeRead.
+ *
  * @param   hPipe           The IPRT pipe handle to read from.
  * @param   pvBuf           Where to put the bytes we read.
@@ -99,14 +104,27 @@
 
 /**
- * Write bytes to a pipe.
- *
- * This will block until all bytes are written.
+ * Write bytes to a pipe, non-blocking.
  *
  * @returns IPRT status code.
+ * @retval  VERR_WRONG_ORDER if racing a call to RTPipeWriteBlocking.
+ *
+ * @param   hPipe           The IPRT pipe handle to write to.
+ * @param   pvBuf           What to write.
+ * @param   cbToWrite       How much to write.
+ * @param   pcbWritten      How many bytes we wrote.
+ */
+RTDECL(int) RTPipeWrite(RTPIPE hPipe, const void *pvBuf, size_t cbToWrite, size_t *pcbWritten);
+
+/**
+ * Write bytes to a pipe, blocking.
+ *
+ * @returns IPRT status code.
+ * @retval  VERR_WRONG_ORDER if racing a call to RTPipeWrite.
+ *
  * @param   hPipe           The IPRT pipe handle to write to.
  * @param   pvBuf           What to write.
  * @param   cbToWrite       How much to write.
  */
-RTDECL(int) RTPipeWrite(RTPIPE hPipe, const void *pvBuf, size_t cbToWrite);
+RTDECL(int) RTPipeWriteBlocking(RTPIPE hPipe, const void *pvBuf, size_t cbToWrite);
 
 /**
