diff --git a/Documentation/README.html b/Documentation/README.html
index 1a814b5f29..aecabdc7ae 100644
--- a/Documentation/README.html
+++ b/Documentation/README.html
@@ -8,7 +8,7 @@
NuttX README Files
- Last Updated: May 24, 2018
+ Last Updated: May 29, 2018
|
@@ -385,16 +385,17 @@ nuttx/
| `- README.txt
|- graphics/
| `- README.txt
- |- lib/
- | `- README.txt
- |- libc/
- | |- zoneinfo/README.txt
- | `- README.txt
- |- libnx/
- | |- libnx/README.txt
- | `- README.txt
- |- libxx/
- | `- README.txt
+ |-libs
+ | |- README.txt
+ | |- libc/
+ | | |- zoneinfo/README.txt
+ | | `- README.txt
+ | |- libnx/
+ | | |- libnx/README.txt
+ | | `- README.txt
+ | |- libxx/
+ | | `- README.txt
+
|- mm/
| |- shm/
| | `- README.txt
diff --git a/README.txt b/README.txt
index 59e1078f2c..5aca4d83b0 100644
--- a/README.txt
+++ b/README.txt
@@ -1975,17 +1975,17 @@ nuttx/
| `- README.txt
|- graphics/
| `- README.txt
- |- lib/
- | `- README.txt
- |- libc/
- | |- zoneinfo
+ |- libs/
+ | |- README.txt
+ | |- libc/
+ | | |- zoneinfo
+ | | | `- README.txt
| | `- README.txt
- | `- README.txt
- |- libnx/
- | |- nxfongs
+ | |- libnx/
+ | | |- nxfongs
+ | | | `- README.txt
| | `- README.txt
- | `- README.txt
- |- libxx/
+ | |- libxx/
| `- README.txt
|- mm/
| |- shm/
diff --git a/libs/README.txt b/libs/README.txt
new file mode 100644
index 0000000000..c751de17fe
--- /dev/null
+++ b/libs/README.txt
@@ -0,0 +1,25 @@
+README
+======
+
+This directory holds NuttX libraries. Libraries in NuttX are very special
+creatures. The have these properties:
+
+1. They can be shared by both application logic and logic within the OS when
+ using the FLAT build.
+
+2. But in PROTECTED and KERNEL modes, they must be built differently: The
+ copies used by applications and the OS cannot be the same. Rather,
+ separate versions of libraries must be built for the kernel and for
+ applications.
+
+3. When used by the OS, some special care must be taken to assure that the
+ OS logic does not disrupt the user's errno value and that the OS does
+ not create inappropriate cancellation points.
+
+ For example, sem_wait() is both a cancellation point and modifies the
+ errno value. So within the FLAT build and without kernel version for
+ the PROTECTED and KERNEL builds, the special internal OS interface
+ nxsem_wait() must be used. Within libraries, the macro _SEM_WAIT()
+ (as defined in include/nuttx/semaphore.h) is used instead. The
+ definition of this macro accounts for the different usage environments.
+