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. +