NuttX-7.29 Release Notes

The 129th release of NuttX, Version 7.29, was made on March 25, 2019, and is available for download from the Bitbucket.org website. Note that release consists of two tarballs: nuttx-7.29.tar.gz and apps-7.29.tar.gz. These are available from:

https://bitbucket.org/nuttx/nuttx/downloads
https://bitbucket.org/nuttx/apps/downloads

Both may be needed (see the top-level nuttx/README.txt file for build information).

Additional new features and extended functionality:

* Core OS:

  - Configuration:  CONFIG_NFILE_DESCRIPTORS=0 can no longer be used to
    disable the file system.  NuttX with no file system does not make
    sense and is no longer supported.  From Gregory Nutt.
  - Rename most internal OS functions from sched_* to nxsched_* to
    indicate that they are NuttX internal functions (some renaming is
    still needed).  From Gregory Nutt.
  - Rename all internal OS functions from task_* to nxtask_* to indicate
    that they are NuttX internal functions.  From Gregory Nutt.
  - Rename sched_process_timer to nxsched_process_timer.  Rename
    sched_timer_expiration to nxsched_timer_expiration.  Rename
    sched_alarm_expiration to nxsched_alarm_expiration.  Those are the
    appropriate names for an internal sched/ function (still many named
    incorrectly).  From Gregory Nutt.
  - Standardize naming:  Rename os_start() to nx_start(), rename os_smp*
    to nx_smp*, rename os_bringup to nx_bringup, rename all internal
    static functions to begin with nx_ vs os_.  From Gregory Nutt.
  - Initialization:  Remove the option CONFIG_BOARD_INITTHREAD.  Now, if
    CONFIG_BOARD_INITIALIZE is selected, then the board_initialize()
    logic will ALWAYS run on an internal kernel thread.  This will
    prevent the problems people have had doing inappropriate
    board_initialization on the IDLE thread.  From Gregory Nutt.
  - Initialization:  Add support for CONFIG_BOARD_EARLY_INITIALIZE.  If
    this option is selected then nx_start() will call a board-provided
    function board_early_initialize() immediately after calling
    up_initialize().  Rename board_initialize() to
    board_late_initialize().  From Gregory Nutt.
  - Signal Delivery:  Add a flag to the TCB to indicate that we are in a
    signal handler.  Use this flag to assure that a there is never
    attempts to nest signal handling operations on a thread.  This was
    guaranteed before but when locking of pre-emption during signal
    delivering was eliminated in a previous commit, there was a remote
    possibility of an attempt to do nested signal handling.  This flag
    assures that there is only one signal handled at a time.  From
    Gregory Nutt.
  - Signal Handler Security:  The architecture-specific signal handler
    return register state is saved and available on the user stack.
    This commit reorders some logic so that certain, critical registers
    are preserved in the TCB.  This eliminates most malicious exploits
    which more the return address, for example, but does not make the
    logic 100% secure.  From Gregory Nutt.
  - Timer Interrupt Procssing:  Add a configurable call out to a
    user-provided function, 'timer hook', on each timer interrupt.  From
    Gregory Nutt.
  - PM Activity:   Add pm_staycount() API for get stay numbers.  This
    function is currently not used and a waste of FLASH space.  From ligd.
  - Pthreads:  Add support for pthread_mutex_timedlock  From Leif Jakob.
  - Pthread Spinlocks:  Add a very preliminary implementation of the new
    POSIX pthread_spinlock_* interfaces.  From Gregory Nutt.
  - Critical Section Monitor:  Remove SCHED_IRQMONITOR_GETTIME to
    simplify the clock source selection:  (1) Use up_critmon_gettime if
    SCHED_IRQMONITOR, (2) Call clock_systimespec if SCHED_TICKLESS, (3)
    Don't collect timing info for all other cases.  From Xiang Xiao.
  - Work Queue Notification:  Notifier can now work with either lpwork
    or hpwork. From Xiang Xiao.
  - Protected Build:  Add add a new field (us_heapend) to struct
    userspace_s that labels the end of the heap.  From Xiang Xiao.

* Binary Loader/Kernal Modules/Shared Libraries

  - Shared Libraries:  Implement dlerror() using strerror().  From Xiang
    Xiao.
  - Shared Libraries:  Add LD_LIBRARY_PATH environment variable
    support.  From anchao.
  - ELF Loaders:  Optimize elf load speed:  (1) Don't zero out memory,
    (2) Reduce the initial buffer size to 32 bytes.  From Xiang Xiao.
  - ARM ELF Relocation:  Add support for the R_ARM_THM_JUMP11 relocation
    type.  This relocation type may be generated when LTO optimization
    is enabled.  From anchao.
  - ELF Modules:  Add relocation buffer table to reduce filesystem
    access.  From anchao.
  - ELF Modules:  Add symbol buffer table to reduce filesystem access.
    From anchao.

* File Systems/Block and MTD Drivers

  - Filesystem Mount:  Move the union inode_ops_u i_mtd field into the
    mount section of inode_ops_u and remove the guard to simplify fs
    which support both block and mtd.  From Xiang Xiao.
  - ROMFS:  Add support to mount a ROMFS volume using an MTD driver
    interface using the standard mount() operation.  From Xiang Xiao.
  - LittleFS:  VFS wrapper improvement:  (1) Support block device
    interface, (2) support ioctl, stat and sync file operation, (3)
    support forceformat and autoformat option, (4) update file->f_pos
    and dir->fd_position, (5) remove the internal struct from dir, and
    (6) remove mtd byte read/write requirement.  From Xiang Xiao.
  - UnionFS:  Support mount of UnionFS from the NSH command line.  From
    Xiang Xiao.

* Networking/Network Drivers:

  - UsrSock:  Add mutual exclusion so that only user can perform a
    socket request  From zhangyuan7.
  - UDP:  Initialize callback address structure to avoid random values
    in padding.  From anchao.

* Wireless/Wireless Drivers:

  - SX127x:  Initial support for SX127x LoRA radio  From Mateusz Szafoni.

* Graphics/Display Drivers:

  - Graphics:  Fix a naming collision:  Ye olde nx_start that started
    the NX graphics is now nxmu_start().  nxmu_start() is now
    prototyped in nxmu.h (instead of nx.h).  From Gregory Nutt.
  - NX Server Startup:  Extend nxmu_start() so that receives a display
    number as an argument.  This makes it possible to have multiple
    instances of the NX server running on boards that support multiple
    displays.  Also includes updates to boardctl() to accept display
    number paramters.  From Gregory Nutt.
  - Graphics:  nx_openwindow() and nxtk_openwindow() now accept an
    additional 'flag' parameter.  This argument is current used only to
    select a RAM backed, per-window framebuffer.  From Gregory Nutt.
  - Per-Window Framebuffers:  Windows may now be optionally created
    with a RAM frambuffer backing up the window content.  Rending into
    the window will result in rending into the backup framebuffer, then
    updating the physical display from the framebuffer.  The advantage
    of this option is that the application that manages window will no
    longer receive redraw() callbacks.  Those calls normally occur when
    a window "above" moves exposing a portion of the window below.  If
    this option is selected, then the system will redraw the exposed
    portion of the window from the backup framebuffer without
    intervention of the window applications.  This greatly reduces the
    complexity of the application and performance of the window at the
    expense of increased memory usage.  Redraw requests in other cases
    are also suppressed:  Changes to window position, size, etc.  As a
    consequence, some manual updates will be required when certain
    events occurr (like removing a toolbar from a window).  NOTE:  A
    significant amount of RAM, usually external SDRAM, may be required
    to use per-window framebuffers.

* Other Common Device Drivers:

  - Driver Notifications:  Support signal notification through
    SIGEV_THREAD in all drivers that provide signal notifications:
    RTC, Joysticsks, buttons, Zero-Crossing, wireless, FT80x, Timer,
    PHY. From Xiang Xiao.
  - Watchdog Driver:  Support auto-monitor service  From Gregory Nutt.
  - Timer and Alarm Drivers:  Implement up_critmon_gettime and
    up_critmon_convert and remove the critical section from
    current_usec to infinite recursion.  From Xiang Xiao.
  - RTC Driver:  Protect the RTC state with a semaphore.  From Xiang
    Xiao.
  - Serial Upper Half:  Call pm_activity() when characters are received
    on a console device.  From Gregory Nutt.
  - MPU60x0:  Initial support for TDK InvenSense MPU6000 and MPU6050
    6-axis gyroscope and accelerometers.  This commit supports SPI
    media only.  From Bill Gatliff.
  - EEPROM Driver:  Add configurable SPI eeprom frequency.  From
    Valmantas Paliksa.
  - GPIO Driver:  Support reading and writing gpio pins using cat and
    echo.  From Valmantas Paliksa.
  - MCP2515:  Add MCP2515 clock input config to KConfig.  From
    Valmantas Paliksa.
  - MAX7456:  Support for the Maxim MAX7456 on-screen-display chip.
    From Bill Gatliff.

* Common Board Logic:

  - boardctl():  up_testset() can now be accessed by applications via
    the boardctl() interface rather than attempting to call it
    directly.  pthread Spinlocks are not available unless the
    architecture supports the   up_testset() operation.  From Gregory
    Nutt.
  - boardctl():  Add support for BOARDIOC_NXTERM which can be used to
    create an NxTerm terminal.  From Gregory Nutt.
  - boardctl():  Add boardctl() commands to replace direct calls to
    nxterm_redraw() and nxterm_kbdin().  From Gregory Nutt.

* Microchip PIC32MZ Drivers:

  - PIC32MZ Timers:  Add support for the PIC32MZ timers (driver,
    lowerhalf, freerun and oneshot)  From Abdelatif Guettouche.

* Common ARM Options:

  - arch/arm:  Move FPU options to a common place and unify the usage
    by removing ARCH_CORTEXRxF.  From Xiang Xiao.
  - arch/:  Unify the cache interface for all architectures that
    support a data cache.  From Xiang Xiao.
  - ARMv7-M/A/R:  Add a architecture-specific new barriers.h header
    file that provides the memory barrier definitions that were
    previously in the (now unified) cache.h header files.  From Gregory
    Nutt.

* ARMv7-A

  - ARMv7-A:  Support thumb mode and fix interworking issue. From
    zhangyuan7.
  - ARMv7-A:  Add weak attribute to arm_data_initialize so platform
    could provide the new implemenation as needed.  From zhangyuan7.
  - ARMv7-A:  Add SCR bit definitions.  From Xiang Xiao.
  - ARMv7-A:  Add mmu_l1_map_regions() to remove the code duplication.
    From Xiang Xiao.
  - ARMv7-A:  Add the initial cortex-a7 architecture support  From
    zhangyuan7.

* ARMv7-M

 - ARMv7-M:  stackcheck allow faulting stack calculation to make it to
   the up_assert reg dump  From David Sidrane.

* Microchip/Atmel SAMD21/L21 Drivers:

  - SAMD2/L2:  Add RS485 support to SAMD2L2 serial.  From Alan Carvalho
    de Assis.

* Misoc:

  - Minerva:  Add support for the Minerva architecture.  From Ramtin
    Amin.

* Misoc Boards:

  - misoc:  Add support for an NSH configuration using the Verilator
    board.  From Ramtin Amin.

* Nordic NRF52:

  - NRF52:  1. Added 52840 family support 2. Use common IRQ and memory
    layout header file for 52832 & 52840.  From Levin Li.

* Nordic NRF52 Drivers:

  - NRF52 RNG:   1. added RNG device driver 2. added errdata to correct
    temp which will be used by RNG module 3. use general task_trigger /
    event_clear inline api for all driver.  From Levin Li.

* NXP i.MX RT Drivers:

  - i.MXRT XBAR:  Add XBAR Support.  From David Sidrane.
  - i.MXRT USB:  Add USB analog header file.  From David Sidrane.
  - i.MXRT OCOTP:  Added OCOTP Support.  From David Sidrane.
  - i.MXRT LCD:  Adds framebuffer support for the i.MXRT 1050.
    Includes DCD initialization for SDRAM to provide space for the
    framebufer. External code I used/ported is from NXP and is BSD
    3-clause license.  From Johannes.

* NXP i.MX RT Boards:

  - IMXRT1050-EVK:  Adds framebuffer support for the i.MXRT 1050.
    From Johannes.

* NXP LPC17xx

  - LPC17xx:  Add a configuration option to skip over the framebuffer
    when adding DRAM to the heap.  From Gregory Nutt.

* NXP LPC17xx Boards

  - Open1788:  Add a configuration to test NxTerms in the PROTECTED
    mode.  From Gregory Nutt.
  - Open1788:  Re-arrange PROTECTED mode link map to make more space
    for large kernels with debug enabled.  From Gregory Nutt.
  - Open1788:  Add a configuration for testing per-window frame buffers
    using apps/examples/pwfb.  From Gregory Nutt.

* NXP LPC54xx Boards

  - LPCXpresso-LPC54628/pwfb:  Add per-window framebuffer configuration
    using apps/examples/pwfb.  From Gregory Nutt.
  - LPCXpresso-LPC54628:  Add a configuration for addition per-window
    framebuffer using apps/examples/pwlines.  From Gregory Nutt.

* STMicro STM32 Drivers:

  - STM32F0/L0 SPI:  Add SPI support for F0.   From Mateusz Szafoni.
  - STM32 ADC, PWM and TIM:  (1) configure injected channels external
    trigger when ADC enabled, (2) update injected conversion queue of
    context after configuration, (3) support for offset configuration,
    and (6) support for advanced timers channel 5 and 6.  From Mateusz
    Szafoni.
  - STM32 DFU Mode:  Add logic to reboot the STM32 in DFU mode.
    Current implementation only works for STM32F2 and F4.  From Bill
    Gatliff.
  - STM32F7 LSE:  Add configuration of LSE oscillator drive capability
    From Jussi Kivilinna.
  - STM32F7 I2C:  Fix another memory access issue on a bus error.  From
    David Sidrane.
  - STM32F7 TIM:  Add OUTTOGGLE mode for STM32f7 timer  From Valmantas
    Paliksa.
  - STM32F7 Timer Lower Half:  Add timer lowerhalf driver for stm32f7.
    From Valmantas Paliksa.
  - STM32F7 ITM:  Add ITM syslog support.  From Valmantas Paliksa.
  - STM32F7 CAN:  Add CAN driver with support for three bxCAN
    interfaces.  From Valmantas Paliksa.
  - STM32F7 QSPI:  Add stm32f7 Quad SPI support.  From Valmantas Paliksa.
  - STM32L4 LSE:  Ports Jussi Kivilinna's recent STM32F7 LSE change to
    STM32L4.  From Juha Niskanen (Haltian).
  - STM32H7 I2C:  Apply David Sidrane's fix for the STM32F7 to the
    STM32H7.  From Gregory Nutt.
  - STM32H7 DMA:  Rename  DMA1/2 irq names to match those from other
    STM32.  Add auxiliary definitions.  Add DMAMAP definitions for
    MDMA, DMA1, DMA2 and BDMA.  Add some address blocks.  Change RCC
    definitions to match other STM32 ports.  Enable clock for MDMA and
    BDMA.  Rename DMA channel definitions.  Separated files for MDMA,
    DMA, BDMA and DMAMUX.  Add missing definitions for MDMA, BDMA and
    DMAMUX.  SPI DMA mode.  Add base addresses for D1, D2 and D3
    domain; use 2 bytes to specify memory region.  Add D1 domain core
    prescaler configuration.  From Mateusz Szafoni.
  - STM32H7 OTG:  Initial OTG support for STM32H7 and some minor
    improvements.  Add support for HSI48 clock.  From Mateusz Szafoni.
  - STM32H7 Build:  Initial support for protected build mode. From
    Mateusz Szafoni.
  - STM32L4 I2C:  Apply David Sidrane's fix for the STM32F7 to the
    STM32L4.  From Gregory Nutt.

* STMicro STM32 Boards:

  - B-L072Z-LRWAN1:  Add SX127x configuration.  From Mateusz Szafoni.
  - Nucleo-F091RC:  Add support for SX127x radio.  From Mateusz Szafoni.
  - Nucleo-F091RC:  Add SX127x configuration.  From Mateusz Szafoni.
  - Nucleo-F207ZG:  Add support for USB and initialize CDCACM if
    configured.  From Mateusz Szafoni.
  - STM32F429I-DISCO:  Add an apps/examples/examples/nxhello
    configuration.  From Gregory Nutt.
  - Nucleo-F446RE:  Add support for the Nucleo F446RE.  From Sebastien
    Lorquet.
  - B-L072Z-LRWAN1:  Use HSI as default clock source.  From Mateusz
    Szafoni.
  - Nucleo-L073RZ:  Add SX127x configuration.  From Mateusz Szafoni.
  - Nucleo-L073RZ:  Port button logic from nucleo-f072 which appears to
    be the same.  From Gregory Nutt.
  - Nucleo-L432KC:  Add support for I2C driver initialization.  From
    Nikolay Semenov.
  - Nucleo-H743ZI:  Add support for USB and initialize CDCACM if
    configured.  From Mateusz Szafoni.
  - OmnibusF4: Initial support for the OmnibusF4 family of flight
    management units.  "OmnibusF4" is not a product name per se, but
    rather a design spec that many product vendors adhere to. The spec
    defines the major components, and how those components are wired
    into the microcontroller. Airbot is one such vendor, and they
    publish a schematic here:  http://bit.ly/obf4pro.   Other software
    that supports the OmnibusF4 family include Betaflight, iNAV, and
    many others. PX4 recently added support as well, using their own,
    non-upstreamed, bespoke port of NuttX. No code from those resources
    is included in this port.  From Bill Gatliff.
  - OmnibusF4:  Add MAX7546 support.  From Bill Gatliff.

* TI CCxx:

  - CC1312R1:  Code complete and builds successfully.  Stalled on
    further radio development.  I planned to integrate the IEEE 802.15.4
    radio interface, but the Cortex-M0 interface is not available with
    an open license.

* TI CCxx Boards:

  - LaunchXL-CC1312R1:  Add support for on-board LEDs and buttons.  The
    LauchXL-CC1312R1 NSH Configuration is now fully functional. From
    Gregory Nutt.
  - LaunchXL-CC1310:  Clone LED and button support from the
    LaunchXL-CC1312R1.  The number of LEDs and buttons as well as DIO
    usage is identical (Still not functional).  From Gregory Nutt.

* Tools:

  - tools/rmcr.c:  Add a tool to remove carriage returns and dangline
    whitespace at the end of lines.  From Gregory Nutt.
  - tools/nxstyle.c:  Can now detect if the C comment closing is not on
    a separate line.  From Gregory Nutt.
  - tools/nxstyle.c:  Make sure that all files begin with a comment on
    line 1 (which should be the file header).  From Gregory Nutt.
  - tools/nxstyle.c:  Add check for multiple definitions of local
    variables on a line.  From Gregory Nutt.
  - tools/nxstyle.c:  Beef up logic that detects multiple variable
    definitions per line.  From Gregory Nutt.
  - tools/nxstyle.c:  Add capability to detect CamelCase identifiers.
    From Gregory Nutt.
  - tools/nxstyle.c:  Add logic to detect a blank line following a left
    brace or a blank line preceding a right brace.  From Gregory Nutt.
  - tools/nxstyle.c:  Don't complain about certain lowercase characters
    in otherwise uppercase pre-processor identifers:  IPv6, IPv4,
    ICMPv6, IGMPv2, p as a decimal point, d signifying a divisor.  It
    was a bad idea to let the door open a crack for there.  While they
    improve readability, the inconsistently also causes other
    problems.  From Gregory Nutt.

* Build System:

  - Makefiles:  Modify tools/Makefiles to add a "Do not Edit" warning
    on defconfig files  From Alan Carvalho de Assis.

* Libraries/Header Files:

  - lib_vsprintf() (Nano):  Add newlib-nano lib_vsfprintf has been
    added and is now the default support for the printf family.  This
    fprintf code was originally adapted from AVR libc and provides
    improved floating point output support, including 'g' mode and
    making 'f' mode include digits past the decimal by default.  The
    newlib version can be found here:
    https://salsa.debian.org/electronics-team/toolchains/newlib-nano.
    That project is GPL overall, but the newlib-nano printf portions
    are BSD licensed as described in the COPYING.NEWLIB file.  From
    Keith Packard.
  - lib_vsprintf() (Nano):  Added support for long lont types.  From
    Johannes.
  - lib_vsprintf() (Nano):  Added hh type modifier (without extending
    the flag variable).  From Johannes.
  - lib_vsprintf() (Nano): Adds configurable support for numbered
    arguments.  From Johannes.
  - lib_vsprintf() (Nano): Cleaned naming and allow for leading zeros
    in argument number (which doesn't make sense but should be).  From Johannes.
  - lib_vsprintf() (Legacy):  Add support for %g format which, for
    these purpose, is equivalent to %f except that trailing zeroes are
    suppressed.  From Gregory Nutt.
  - vscanf():  Moved vscanf logic to lib_sscanf.c  Switched to stream
    interface (tricky, because the old implementation used massive read
    ahead, which isn't suitable for streams, chars already read are
    gone).  Added hh, h, and ll modifiers.  From Johannes.
  - scanf() and fscanf():  Added scanf and fscanf based on enhanced
    vscanf().  From Johannes.
  - uname():  Add build date and time to uname output (like Linux).
    From Gregory Nutt.
  - strsep():  Add strsep BSD/Linux function.  From Xiang Xiao.
  - netdb:  Hostname support no longer depends on CONFIG_NET since the
    host name is also useful in the non-network environment.
    CONFIG_NET_HOSTNAME changed to CONFIG_LIB_HOSTNAME.  From Xiang Xiao.
  - netdb:  Support the nameserver change notification then we can pass
    DNS info from server to client in usrsock case.  From Xiang Xiao.
  - include/fixedmath.h:  Add macros for conversion between types
    b16_t and type double  From Gregory Nutt.
  - include/limits.h:  Define NL_ARGMAX (as well as some of the other
    'invariant values' per
    http://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html).
    From Johannes.
  - linclude/limits.h:  Add 'range 9 999999' to CONFIG_LIBC_NL_ARGMAX
    to Kconfig.  Per OpenGroup.org, the minimum value for NL_ARGMAX is
    9.  From Gregory Nutt.
  - include/nuttx/lcd/edid.h:  Add extended EDID block IDs  From
    Gregory Nutt.

* apps/ General:

  - apps/:  Follow up the kernel signal-related change in various files
    under examples/ and graphics/.  From Xiang Xiao.
  - apps/:  Update for corrected name of standard header file.  Should
    be dlfcn.h, not dllfcn.h.  From Gregory Nutt.
  - apps/:  The file system can no longer be disabled.  Remove all
    conditional logic based on CONFIG_NFILE_DESCRIPTORS==0  From
    Gregory Nutt.
  - apps/:  Remove/replace all conditional logic based on
    CONFIG_NSOCKET_DESCRIPTORS == 0.  That value is always greater than
    zero now.  In places just replace with #ifdef CONFIG_NET.  From
    Gregory Nutt.
  - apps/:  Some updates due to NuttX renaming:
    CONFIG_BOARD_INITIALIZE is now CONFIG_BOARD_LATE_INITIALIZE;
    board_initialize() is now board_late_initialize().  From Gregory
    Nutt.
  - apps/: Graphics interfaces nx_openwindow() and nxtk_openwindow()
    now accept an additional 'flag' parameter.  From Gregory Nutt.

* NSH: apps/nshlib:

  - apps/nshlib/nsh_netinit.c:  Update for changes to signal
    notification structures.  From Gregory Nutt.

* Examples/Tests: apps/examples:

  - apps/examples/ini_dumper:  New example program.  ini_dumper is
    example program that dumps content of ini file in pretty ascii table.
    It is using inih ini library in fsutils/inih.  From Michał Łyszczek.
  - apps/examples/modbusmaster:  Add Simple Modbus master example.
    This example only supports Read/Write HoldingRegisters, but it is
    easy to extend it to support Read/Write Input/Coils/etc.
    Originally creatd by Vytautas in 2016 and updated with minor fixes
    for this commit.  From Alan Carvalho de Assis.
  - apps/examples/pwfb:  Added a test/example at apps/examples/pwfb
    that was used for initial testing of the per-window framebuffer
    feature.  From Gregory Nutt.
  - apps/examples/pwlines:  Added another a test/example at
    apps/examples/pwlines that was used for further testing of the
    per-window framebuffer feature.  From Gregory Nutt.
  - apps/examples/sx127x:  Add sx127x demo  From Mateusz Szafoni.

* File System Utilities: apps/system

  - apps/fsutils/inih:  New package.  inih (INI Not Invented Here) is a
    simple .INI file parser written in C.
    https://github.com/benhoyt/inih.  From Michał Łyszczek.

* Network Utilities: apps/netutils:

  - apps/netutils/codecs/:  Remove the big Base64 stack array.  From
    Xiang Xiao.
  - apps/netutils/codecs/:  Add base64_[de|en]code_length() API  From
    ligd.

* System Utilities: apps/system

  - apps/system/cfgdata:  Make builtin task stack size and priority
    configurable.  Set default to 2048 (from 1024) per recommendation
    of Ken Pettit.  From Gregory Nutt.
  - apps/system/embedlog:  Update to version 0.4.0. From Michał Łyszczek.
  - apps/system/nxplayer and nxrecorder:  Change 'int prio' to
    'unsigned int prio'.  Required by changes to MQ function
    prototypes. From Michał Łyszczek.
  - apps/system/psmq: New package.  psmq is publish subscribe message
    queue. It's a set of programs and libraries to implement
    publish/subscribe way of inter-process communication on top of
    POSIX message queue.  From Michał Łyszczek.
  - apps/system/zmodem:  Switch to the raw mode before transfer and
    restore to the original setting after finishing the transfer.  From
    Xiang Xiao.

* Testing:  apps/testing:

  - apps/testing/:  Move all file system tests from examples/ to
    testing/ (cxxtest, fstest, nxffs, smart, smart_test, smp).  From
    Gregory Nutt.
  - apps/testing/cxxtest:  Add a README file.  From Gregory Nutt.
  - apps/testing/ostest:  Add test of pthread_mutex_timedlock()  From
    Gregory Nutt.
  - apps/testing/ostest:  Fix several errors in the setvbuf() test.
    From Gregory Nutt.
  - apps/testing/scanftest:  Port of Greg King's scanf test
    (https://github.com/cc65).  From Johannes.

* Tools: apps/tools:

  - apps/tools/check-hash.sh:  Add a tool check hash on downloaded
    packages.  From Michał Łyszczek.

Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog for the complete list of bugfixes and for additional, more detailed bugfix information):

* Core OS:

  - Signals:  Restructure nxsig_deliver() so that the signal handler is
    not called with the pre-emption disabled (or, at least no with
    pre-emption disabled by nxsig_deliver() itself).  From Gregory Nutt.
  - Critical Section Monitor:  Move up_critmon_* to arch.h avoid the
    duplicated declaration.  From Xiang Xiao.
  - Assertions:  Architecture-specific assertion logic should dump CPU0
    IDLE stack only when PID equals 0.  IDLE threads of other CPUs do
    not need this special check.  From Xiang Xiao.
  - Message Queues:  Change 'int prio' to 'unsigned int prio'.
    According to open group specification, priority field in mq_*
    functions should have unsigned type:
    http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/mqueue.h.html.
    From Michał Łyszczek.
  - Timer Expiration:  Fix macro SEC2TICK() 32-bits overflow by using
    uint64_t in calculation.  From ligd.
  - Kernel Memory Manager:  In mm/kmm_heap/kmm_kernel.c, remove unused,
    duplicated kmm_heapmember(). From Xiang Xiao.
  - User Memory Manager:  Ensure all user allocation try sbrk before
    fail  From Xiang Xiao.
  - waitid():  Could exit without leaving critical section on some
    error conditions.  From Gregory Nutt.
  - IOBs:  iob_allocwait() should decrease semcount manually. From
    Xiang Xiao.
  - IOBs:  iob_copyin() should wait for each buffer and adjust the
    return value of iob_copyin_internal return to simplify the code
    From Xiang Xiao.
  - IOB Notifier:  Don't check iob_navail in iob_notifier_setup to
    avoid a potential race condition.  From Xiang Xiao.
  - IOB Debug Dump:  Format the whole line before log to avoid the
    multiple timestamp prefix in each line.  From Xiang Xiao.
  - SHM:  Convert bytes to pages by MM_NPAGES instead of MM_PGALIGNUP
    From Xiang Xiao.
  - SHM:  shmget() should hould call shm_extend() to allocate the
    physical memory.  From Xiang Xiao.
  - Page Allocator:   mm/pgalloc: shouldn't just allocate one page
    always.  From Xiang Xiao.
  - Granule Allocator:  Fix the wrong data in g_1bit_info and make the
    internal function static.  From Xiang Xiao.
  - srbk():  Fix a backward conditional test.  Should call
    mm_initialize() when brkaddr equal zero  From Xiang Xiao.
  - sbrk():  Pass ARCH_HEAP_VEND as maxbreak argument  From Xiang Xiao.
  - ELF Headers:  Move elf related arch function to include/nuttx/elf.h
    because the implementation is located in libs/libc/machine and in
    order to avoid the conflict with the 3rd party libraries and clean
    up the file inclusion:  (1) Remove redundant elf32.h, (2) Remove
    nuttx/binfmt/elf.h in libs/libc/machine, (2) Remove
    nuttx/binfmt/elf.h in modlib, and (4) Rmove nuttx/module.h in
    modlib. From Xiang Xiao.
  - ELF Executables:  If there is an address environment
    (CONFIG_ARCH_ADDRENV), binfmt/elf doesn't need to free ctor/dtor
    alloc since freeing the address environment releases the heap
    automatically.  From Xiang Xiao.
  - ELF Configuration:  Correct libcxx exception handling by
    introducing the generic config(CXX_EXCEPTION and CXX_LIBSUPCXX)
    From Xiang Xiao.
  - ELF Loaders:  Call umm_initialize as soon as possible  otherwise
    elf_loadctors/elf_loaddtors may fail to allocate memory.  From
    Xiang Xiao.

* Crypto:

  - Crypto AES:  After NuttX 7.28 crypto/aes.c would no longer
    compile.  From Gregory Nutt.

* File System/Block and MTD Drivers:

  - open():  Fix not returning failure for block_proxy() call. From
    David Sidrane.
  - AIO: aio_cancel() needs to signal caller after success.  Also fix
    minor issue in the error handler.  From Xiang Xiao.
  - HostFS:  Remove the unnecessary use of host_stat() in
    hostfs_bind()  From ligd.
  - LittleFS:  Fix a minor issue found in code review:  (1) Replace
    printf to finfo/fwarn/ferr, (2) Replace malloc/free to
    kmm_malloc/kmm_free, (3) define LFS_NAME_MAX to NAME_MAX, (4) Check
    the big endian using CONFIG_ENDIAN_BIG.  From Xiang Xiao.
  - LittleFS:  VFS Lookahead should use bit unit not byte unit. From
    Xiang Xiao.
  - NxFLAT:  Correct a double free debug assertion.  This occurs when
    groups are enabled:  (1) once via binfmt_exit and unload_module,
    and (2) once via sched_releasetcb().  this was corrected by adding
    logic to free/unload the memory once and nullify the pointer so
    that cannot be freed a second time.  This commit resolves Bitbucket
    issue #145.  From Valmantas Palikša.
  - NxFLAT:  File descriptor leaks when nxflat loading fails.  From
    Valmantas Palikša.
  - ProcFS:  Fix typo in procfs uptime logic.  From Sebastien Lorquet.

* Networking/Network Drivers:

  - Network Configuration:  The setup seems to support a network
    without sockets (CONFIG_NSOCKET_DESCRIPTORS == 0).  That is not the
    case; if the network is enabled, sockets must be provided.  From
    Gregory Nutt.
  - Networking:  The value ERROR should never be returned from internal
    OS functions.  That is reserved for returning values to appliations
    with the errno value set.  Within the OS, errors are returned with
    a negated errno value ALWAYS.  From Gregory Nutt.
  - Networking:  The struct in_addr doesn't have the member sin_addr.
    The function lib_lo_ipv6match() is for IPv6.  Correct the function
    it calls from lib_lo_ipv4matchto() to lib_lo_ipv6match().  Also add
    CONFIG_NET_IPv6 for configuration.  From Kejun ZHOU.
  - TCP (buffered) send:  Fix assertion crash when window size is
    zero.  From Gregory Nutt.
  - ICMP/ICMPv6:  Bind icmp callback from device to connection.
    Resolves the issue that bind() could not be called before send()
    From anchao.
  - TUN/TAP Driver:  Re-order all TUN/TAP driver state data.  Not only
    was was with wasting memory due to alignement requirements, it was
    also causing network packet buffers to be improperly aligned
    causing problems because the network requires 16-bit packet buffer
    alignment for uint16_t accesses.  This alignment problem was
    discovered by Alan Carvalho de Assis.  From Gregory Nutt.
  - TUN/TAP Driver:  Packet buffer size should include the configured
    GUARD_SIZE.  And, given how the buffers are allocated, the
    allocation size must be an even number of 16-bit values to preserve
    alignment.  From Gregory Nutt.
  - Local Sockets:  In local_connect(), initialize lc_result before
    giving lc_waitsem  From zhangyuan7.
  - Local Sockets:  Fixed deadlock issue by replacing nxsem_wait() with
    net_lockedwait() so that we do not wait with the network locked.
    From zhangyuan7.

* Graphics/Display Drivers:

  - NX Graphics:  Remove naming associated with the now non-existent
    NXFE graphics layer: Rename nxfe_reportposition to
    nxmu_reportposition.  Rename nxfe_redrawreq to nxmu_redrawreq.
    Rename nxfe.h to nxmu.h.  Rename nxfe_state_s to nxmu_state_s.
    Rename nxfe_conn_s to nxmu_conn_s.  From Gregory Nutt.
  - NxTERM:  Remove the nxterm_unregister interface.  The correct way
  to unregister a device is to unlink it.  From Gregory Nutt.
  - NxTerm:  Needs to clear display initially.  Otherwise, garbage from
    previous display may still be present from preceding NxWM window.
    From Gregory Nutt.
  - Font Cache:  Fix a memory leak in the font cache.  With a busy
    NxTerm display, this could drain off all the memory pretty quickly!
    From Gregory Nutt.
  - Graphics:  Nothing under graphics/ should set the errno.  From
    Gregory Nutt.
  - Graphics:  Fix a coordinate system error in nx_filltrapezoid().
    When no clipping rectangle is falls, it falls back to use the
    entire window as for the clip.  However, that window must then then
    be in window relative coordinates, not in absoute device
    coordinates.  From Gregory Nutt.

* Common Board Logic:

  - boardctl(): Fix compiling error when set
    CONFIG_BOARDCTL_IOCTL/CONFIG_BOARDCTL_UNIQUEID.  From Kevin Liu.

* Common Drivers:

  - INA3221:  Fix errors in INA3221 register field addresses and
    bitfield values.  Signed value was losing its signed-ness due to
    use of unsigned type for register.  From Ken Pettit.
  - Serial Upper Half:  Initialize OPOST and ONLCR in uart_register.
    From Xiang Xiao.
  - Serial Upper Half:  Don't reset the circular buffer on close since
    DMA may still be transferring data in the background if the user
    closes the handle too quickly and the handle is opened with
    O_NONBLOCK.  From Xiang Xiao.
  - 16550 UART:  Fix error: 'g_uart0port' undeclared.  From Xiang Xiao.
  - 16550 UART:  Fix typo for UART1 flow field initialization  From
    Gregory Nutt.
  - CDC/ACM HCD:  Fixes to the IOCTL method in recovery of UART pointer
    and in names of Termios-related field.  From xhbm.
  - USB Device:  Fix type for USBDEV_TRACE_INITIALIDSET in Kconfig.
    From Mateusz Szafoni.
  - TCA64xx: Fix some errors in the TCA64XX driver.  From Bruno
    Schwander.
  - SYSLOG RAMLog:  Fix error: Conflicting types for 'ramlog_addchar'
    From Xiang Xiao.
  - NRF24L01:  Fix uninitialized irq_work which was causing a
    hard_fault on interrupt handler whenever something was sent from
    nrf24l01_term  From Petri Ahonen.
  - MCP2515:  Use kmm_zalloc to allocate device state structure.  Fix
    some compiler errors. From Valmantas Paliksa.

* Architecture Common:

  - arch/ Common:  Remove architecture-specific watchdog.h and
    arm-elf.h because they are empty.  The arm-elf header file was
    never used; the empty watchdog.h header file was used in only one
    place.  From Xiang Xiao.
  - arch/ Common:  Move up_pminitialize() after timer_initialize()
    From ligd.
  - arch/ Common:  Align semi-hosting call style with other syscalls in
    architecture-specific syscall.h.  From Xiang Xiao.
  - arch/ Common:  Every file that uses serial IOCTLs (TIOC*) must
    explicity include nuttx/fs/ioctl.h.  This was included previously
    via sneak path in the now deleted arch/serial.h.  From Gregory Nutt.
  - arch/ Interfaces:  Rename sched_process_cpuload to
    nxsched_process_cpuload.  All internal sched_ functions should be
    prefixed with nx.  From Valmantas Paliksa.

* ARMv7-A:

  - ARMv7-A MMU:  Updating the cp15_wrttb and cp15_wrdacr functions to
    use inline assembly in the correct way.  The incorrect method was
    generating errors as ARMv7-a expects the MCR/MRC instructions to
    provide registers as an argument(MRC p15, 0, <Rt>, c2, c0, 0) and
    the code was providing a constant value(and hence the build
    error).  From Bilal Wasim.
  - ARMv7-A:  Remove inclusion pg_macros.h for armv7-a since this
    header file does not exist.  From zhangyuan7.
  - ARMv7-A:  Guard some assembly files if configuration not selected.
    From zhangyuan7.
  - ARMv7-A GIC:  Fix assemble error when including gic.h  From Xiang
    Xiao.
  - ARMv7-A GIC:  Don't use GIC_ICDDCR_ENABLEGRP1 for GIC NONSECURE
    since this bit doesn't exist in this mode.  From liuzhuang.

* ARMv7-R:

  - ARMv7-R Syscall:  In arch/arm/include/syscall.h, add missing
    inclusion of arch/armv7-r/syscall.h for Cortex-R.  From Xiang Xiao.

* ARMv7-M:

  - ARMv7-M Initialization:  As noted by Roland Takacs in Bitbucket
    issue 141, there is a compilation error for STM32 if CONFIG_NET and
    CONFIG_NETDEV_LATEINIT are selected.  That was due in part to the
    commit which extended up_netinitialize() with a
    !defined(CONFIG_NETDEV_LATEINIT) guard but did not add the guard to
    concrete implementations.  I say "in part" because I don't think
    that the original intent of commit 19e16cb was to enable an
    alternative initialization of MCU internal Ethernet support but
    rather to enable support of external Ethernet devices that may have
    dependencies on, for example, SPI.  However, this is still a proper
    fix to avoid the compilation error that can occur with this
    combination of configuration options.  From Gregory Nutt.
  - ARMv7-M Configuration: ARCH_HIPRI_INTERRUPT shouldn't select
    ARMV7M_USEBASEPRI.  First because that is a violation of the
    layered nature of the Kconfig architecture, but also because then
    Kconfig will generate errors when high priority interrupts are used
    with other architectures.  From Xiang Xiao.
  - ARMv7-M Vector Table:  Make the default NVIC_VECTAB_TBLOFF_MASK
    safer.  The base address of the new vector table must be aligned to
    the size of the vector table extended to the next larger power of
    2.  From Xiang Xiao.
  - ARMv7-M RAM Vectors:  Correct bad NVIC_VECTAB_TBLOFF_MASK
    definitions in previous commit.  Were missing bits in the mask.
    Raised DEBUGASSERT in armv7-m/up_ramvec_initialize.c line: 144.
    From Mateusz Szafoni.

* Expressif ESP32 Drivers:

  - ESP32 Timer ISR:  Fix backward comparison.  From Gregory Nutt.
  - ESP32 Serial:  Fix some backward arguments.   Correct 2-stop bit
    setting.  From Gregory Nutt.

* Microchip/Atmel SAMD2x/L2x Drivers:

  - SAMD2/L2 Serial:  SAMD2/L2 serial driver.  It needs
    sam_usart_enable(). to work  From Alan Carvalho de Assis.

* Microchip/Atmel SAMD3/4 Drivers:

  - SAM3/4 Ethernet:  Port Anthony Merlino's SAMv7 fix to similar
    Ethernet driver for the SAM3/4.  From Gregory Nutt.

* Microchip/Atmel SAMV7 Drivers:

  - SAMv7 SPI:  Fix DMA Tx/Rx timeout issue.  From Kevin Liu.
  - SAMv7 QSPI:  Compile error when set CONFIG_SAMV7_QSPI_DLYBCT.
    From Kevin Liu.
  - SAMv7 Ethernet:  The logic for determining the number of queues for
    SAMV71 must be extended.  All SAMv7 parts increase the number of
    queues from 3 to 6 at revision B, not just the SAMV71.  From
    Gregory Nutt.
  - SAMv7 Ethernet:  Fixes rxdesc index logic to handle Buffer Not
    Available (BNA) condition.  If a SOF is found, but no EOF, don't
    move past the frame. Instead, keep the index at the SOF buffer
    until the rest of the data is written.  This fixes a receiver
    lockup condition where the peripheral and this driver get out of
    sync with there head pointers. In this case the driver has moved
    past buffers it owns, without clearing ownership,  which results in
    the peripheral and driver in a deadlock with each other.  From
    Anthony Merlino.

* Microchip/Atmel SAMA5Dx Drivers:

  - SAMA5Dx Ethernet:  Port Anthony Merlino's SAMv7 fix to similar
    Ethernet driver for the SAMA5Dx.  From Gregory Nutt.

* Microchip/Atmel SAMA5Dx Board:

  - SAMA5D2-XULT:  Move console from FLEXCOM4 to UART1.  FLEXCOM4 does
    not work for the Arduino serial.  UART1 is used with the VCOM
    provided by the EDBG.  From Gregory Nutt.

* NXP i.MXRT:

  - i.MXRT Clock Configuration:  If SDRAM is actived it was only
    running at 40MHz.  This was becaus imxrt_clockconfig.c changed the
    SEMC clock divider after the DCD was configured.  This commit
    corrects that.  From Johannes.

* NXP i.MXRT Drivers:

  - i.MXRT GPT:  Correct register offsets.  From David Sidrane.
  - i.MXRT TMR:  Fix addressing and restructure using common offset.
    From David Sidrane.
  - i.MXRT ADC:  Error in offset.  From David Sidrane.

* NXP/Freescacle Kinetis Boards:

  - Teensy-3.x:  Fix a mismatch in types in defconfig.  From Gregory
    Nutt.

* NXP LPC17xx:

  - LPC176x Clock Configuration:  The code preserves undocumented
    reserved bits only if board does not set them to keep previous
    behavior for boards where developers (hopefully) know what values
    should be set into these bits.  From Pavel Pisa.
  - LPC17xx Clock Configuration:  The enable of EMC clocks has to be
    preserved when already enabled by loader.  EMC and related pins
    configuration has to be skipped if the system is run from SDRAM.  A
    region of SDRAM which is used by system must not be used for heap.
    From Pavel Pisa.

* NXP LPC17xx Drivers:

  - LPC17xx CAN:  The name can_txready clashes with NuttX CAN core
    global function.  LPC178x has only single LPC17_SYSCON_PCLKSEL with
    only single divisor.  From Pavel Pisa.

* NXP LPC17xx Boards:

  - Open1788:  Add missing MPU configuration option.  From Gregory Nutt.

* On Semi LC823450 Boards:

  - LC823450-XGEVK:  Remove -nostdinc to avoid build error  From
    Masayuki Ishikawa.

* STMicro STM32:

  - STM32:  Don't try including stm32_gpio.h from within chip/*.h
    header files.  Not only is bad style for a layered inclusion
    system, but it doesn't always work.  From Gregory Nutt.

* STMicro STM32 Drivers:

  - STM32 PWM: Fix polarity and IDLE state configuration From Mateusz
    Szafoni.
  - STM32 ADC, PWM and TIM:  (1) missing T1TRGO2 for JEXTSEL, (2) fix
    sample time configuration for channels. The array index for
    channels was missing, (3) fix TRGO/TRGO2 configuration, and (6)
    support for advanced timers channel 5 and 6.  From Mateusz Szafoni.
  - STM32 Heap:  Change 'if CONFIG_STM32_HAVE_CCM' to 'ifdef
    CONFIG_STM32_HAVE_CCM' to avoid a warning when
    CONFIG_STM32_HAVE_CCM is not defined.  From Gregory Nutt.
  - STM32 Oneshot Timer:  Fix an error introduced be a previous timer
    commit.  From Maximilian Kriegleder
  - STM32 Tickless Mode and Free-Running Timer:  Apply Max's
    stm32_oneshot.c fix to the tickless implementation and to the
    freerunning time.  From Mateusz Szafoni.
  - STM32 PWM: Set CCPxP and CCPxNP bits if polarity is negative.
    Missing commas in initializers could break compilation in certain
    configurations.  From Mateusz Szafoni.
  - STM32F7 Interrupts:  Add the missing macro STM32_IRQ_NIRQS used by
    arch/arm/src/stm32f7/stm32_irq.c.  From Kejun ZHOU.
  - STM32H7 DMA:  Fix AHB1 base adresses memory map. From Mateusz
    Szafoni.
  - STM32H7 SysTick:  H7 appears to ignore the SysTick CLKSOURCE bit
    and use the CPU clock in all cases.  From Mateusz Szafoni.

* STMicro STM32 Boards:

  - B-L072Z-LRWAN1:  Fix typo in SPI1 pin definitions.  From Mateusz
    Szafoni.
  - STM32F429I-DISCO:  Handle multiple calls to the LCD
    up_fbinitialize() function.  From Gregory Nutt.
  - STM32F769I-DISCO:  Florian R. Hölzlwimmer reports that
    stm32_appinitialize.c often has missing OK and NULL definitions.
    This should be fixed by including sys/types.h where they are
    defined.  From GregoryN.
  - STM32F769I-DISCO:  Remove CONFIG_STM32F7_QUADSPI=y from the
    configuration.  This was apparently set before the implementation
    was added.  Now that the implemenation was added, the configuration
    will not build because it requires that QSPI GPIO pin definitions
    be provided in the board.h header file.  From Gregory Nutt.

* TI AM335x Drivers:

  - AM335x Serial:  Eliminate an error 'TIOCSBRK undeclared.  From
    Gregory Nutt.

* C Library/Header Files:

  - strto*:  In alll strto* function family, did't consume single '-'
    or '+', allow sign in strotul(l)).  From Johannes.
  - getopt():  Add logic to reinitialize the stale context for the
    FLAT/PROTECTED builds.  In these builds getopt() global variables
    may be shared by many tasks.  If any task exits the getopt() loop
    before all command line arguments have been parsed, then getopt()
    global variables will be left in a bad state.  The next time
    getopt() is called, this logic should detect the bad state and
    force the state of getopt() to be re-initialized so that it can be
    reused.  This logic is not full proof (it would fail, for example,
    if you tried to parse the same command line twice) but should catch
    the typical misuse cases.  From Xiang Xiao.
  - sscanf(): Initialized the lastc pointer to avoid the checks for
    NULL.  Removed a bug in the floating point parsing which allowed
    several signs after each other.  From Johannes.
  - lib_vsprintf() (Legacy):  No precision specifier resulted in
    precision 0 but should be precision 6.  From Johannes.
  - lib_vsprintf() (Legacy):  Correct justification for alternate forms
    of %p and %P  From ligd.
  - lib_vsprintf() (Nano):  Add long long support.
    CONFIG_LIBC_LONG_LONG needs at least CONFIG_NANO_PRINTLEVEL 2.
    Code size for compile without CONFIG_LIBC_LONG_LONG shouldn't be
    affected.  From Johannes.
  - lib_vsprintf() (Nano):  Remove CONFIG_LIBC_PRINT_MINIMAL.  The
    output in that configuration is unsatisfactory and inappropriate
    for use with NuttX.  For example, the output from many NSH commands
    become corrupted and useless.  Doesn't belong in this context.
    From Gregory Nutt.
  - libs/libc/symtab:  Remove unused symtab_findorderedbyvalue().  From
    Xiang Xiao.
  - libs/libc/machine/arm:  Fix the minor issue in libc arm machine
    folder; MOVW/MOVT should use zero(not sign) extension.  From Xiang
    Xiao.
  - libs/libc/libc.csv:  Should be locale.h not local.h.  From Joao
    Matos.
  - libs/libc/libc.csv:  Needed logic for correct compilation if not
    using CONFIG_LIBC_WCHAR.  From Joao Matos.
  - libxx:  Always include libxx_cxa_guard.cxx in the build for for
    uclibcxx. From zhangyuan7.

  - include/stdbool.h:  Define bool only when __cplusplus isn't
    defined.  From Xiang Xiao.
  - include/nuttx/list.h:  Added a Linux-compatible list
    implementation.  From zhuyanlin.
  - include/nuttx/irq.h:  Fix enter_critical_section/spin_lock_irqsave
    macro typo error and remove the duplicated inclusion of
    arch/irq.h. From Xiang Xiao.
  - include/dlfcn.h: Correct naming of standard header file.  Should
    be dlfcn.h, not dllfcn.h.  From Gregory Nutt.
  - include/nuttx/nx/nxmu.h:  This header file could be lethal; it
    declared an #error if CONFIG_DISABLE_MQUEUE=y.  From Gregory Nutt.
  - include/nuttx/compiler.h:  Important fix for C++ users.
    compiler.h was using the value of __STDC_VERSION__ to determine if
    inline functions are supported or not.  If not then the keyword
    inline was defined out. Good for C but bad for C++ because C++
    does not define __STDC_VERSION__ at all.  C++ applications may
    draw in compiler.h indirectly via other head files and this can
    result in C++ compiler problems since 'inline' is defined out.
    This fix is to ignore the (undefined) __STDC_VERSION__ if
    __cplusplus is defined.  From Gregory Nutt.
  - include/nuttx/elf.h:  Adds missing extern "C" __cplusplus guard.
    From Anthony Merlino.
  - include/poll.h:  Remove un-named union from 'struct pollfd'.  It
    is not required by OpenGroup.org and violates the NuttX C coding
    standard because it is not C89 compatible.  From Gregory Nutt.
  - libs/libc/Makefile, libs/libnx/Makefile, and mm/Makefile:  Remove
    obj-path MKDEPS option since make dependency target (MT) is not
    supported by some toolchains.  From anchao.
  - include/nuttx/compiler.h:  Assume inline support if
    __STDC_VERSION__ not defined.  From Xiang Xiao.

* Tools:

  - tools/convert-comments.c:  Fix an error in handling of a blank C++
    comment before a comment block.  From Gregory Nutt.
  - tools/lowhex.c:  Fix an initialization problem that was causing
    some odd behavior at the beginning of lines.  From Gregory Nutt.
  - tools/nxstyle.c:  Fix logic that detects if an operator is
    correctly delimited with spaces.  sched/:  Various changes because
    sched/ C files were used as Guinea Pigs to test nstyle.c.  From
    Gregory Nutt.
  - tools/nxstyle.c:  Was confusing hex constants with strings staring
    with 'x'.  Added logic to complain about hex constants containing
    upper case characters.  From Gregory Nutt.
  - tools/nxstyle.c:  Fix logic error that prevent detecion of '/' and
    '/=' as operators.  net/:  Minor updates resulting from testing
    tools/nxstyle.  From Gregory Nutt.

* NSH Library: apps/nshlib:

  - NSH Console:  Fix copy paste errors. Some Kconfig configuration
    names needed CONFIG_ prefix.  From David Sidrane.
  - nshlib/nsh_timcmds.c:  Uninitialized struct tm caused 'date -s' to
    fail.  From Valmantas Palikša.

* Examples: apps/examples:

  - apps/examples/nxterm:  Replace direct calls to nxtk_register()
    with legal, indirect calls via boardctrl(BOARDIOC_NXTERM).
    Replace calls to (deleted) nxterm_unregister().  The correct way
    to delete a driver is by unlink'ing it.  From Gregory Nutt.
  - apps/examples/nxterm:  Most configuration options were not
    available in the Kconfig file.  From Gregory Nutt.
  - apps/examples/nxterm:  Replace illegal direct calls to
    nxterm_redraw() and nxterm_kbdin() with new boardctl() calls.
    From Gregory Nutt.
  - apps/examples/nxterm:  NxWM passed the size of the NxTK sub-window
    but nxterm example passed the size of the complete NxTK window.
    They must be made consistent.  From Gregory Nutt.

* Graphics Utilities: apps/graphics:

  - apps/graphics/NxWidgets/nxwm:  Correct an error in the type of the
    return value in CCalibration.  From Gregory Nutt.
  - apps/graphics/NxWidgets/nxwm:  Replace direct calls to
    nxtk_register() with legal, indirect calls via
    boardctrl(BOARDIOC_NXTERM).  Replace calls to (deleted)
    nxterm_unregister().  The correct way to delete a driver is by
    unlink'ing it.  From Gregory Nutt.
  - apps/graphics/NxWidgets:  Replace illegal direct calls to
    nxterm_redraw() and nxterm_kbdin() with new boardctl() calls.
    From Gregory Nutt.

* Modbus: apps/modbus:

  - apps/modbus/Kconfig:  Fix modbus master Kconfig.  Modbus Master
    ASCII compiles correctly.  From Alan Carvalho de Assis.

* Network Utilities: apps/netutils:

  - apps/netutils/dhcpc/dhcpc.c:  Fix an error for DHCP REQUEST
    receiving a NAK.In DHCP Request operation, no need to update
    ciaddr to the client address and keep it as 0.  From Kevin Liu.

* System Utilities: apps/system:

  - apps/system/vi/vi.c:  Fix an infinite loop bug that can show up in
    some cases (plus a couple of other items).  From Ken Pettit.
  - apps/system/vi: Condition KEY_CMDMODE_REPEAT with
    CONFIG_SYSTEM_VI_INCLUDE_COMMAND_REPEAT to avoid build error when
    option is not selected.  From Anthony Merlino.
  - apps/system/nxplayer/nxplayer.c:  Fix build error when only enable
    CONFIG_AUDIO_EXCLUDE_VOLUME is enabled.  From ZhongAn.
  - apps/system/system/system.c:  Correct a path name.  From anchao.
  - apps/system/taskset:  Fix command arguments are not passed.  From
    Masayuki Ishikawa.

* Testing: apps/testing:

  - apps/testing/ostest/timedmutex.c:  pthread_mutex_timedlock()
    returns EDTIMEDOUT on a timedout, not EAGAIN.  From Gregory Nutt.

* Tools: apps/tools:

  - apps/tools/mksymtab.sh:  'export LC_ALL=C' to get the traditional
    sort order  From anchao.