* Start working on fixing doxygen warnings
* Upgrade doxyfile to Doxygen 1.9.1
* Clean up some unmatched groups and add some exclusions
* Fix docs for rtos::ThisThread not showing up
* Fix up KV store docs
* Fix incorrect @files, some more incorrect groups
* Fix lots of broken links
* Start fixing mbedtls groups
* Fix more mbedtls docs
* Fix remaining mbedtls files with missing or incorrect grouping
* Fix a huge amount of PSA docs errors
* Fix a few more mbedtls docs errors
* Fix __cplusplus not defined for docs, clean up call in callback typedef, fix some docs errors
* Fix some broken doc links in HAL headers
* Fix more PSA doc errors
* Fix some doxygen errors in networking code
* Fix lots of network related doc errors
* Try and fix some CI failures
* Use Doxygen Action instead of doxygen in Mbed container to get the right version
* Try removing docs check
* Add first part of doxygen action
* Add next part of doxygen action
* Fix yaml syntax error
* Add in license check fix
* Try using verbose scancode
* Fix some more docs issues, workaround scancode-toolkit#3179
* Clean up the LoRaRadio get_state() function on each implementation. Also fix some other compile and doc errors.
* Fix all remaining doxygen errors
* Fix escaping, for realsies this time
* Remove Doxygen unsupported config options, fix some more get_status() declarations
* Fix some UNITTESTS build errors
* Fix one more compile error
* Another unittest error
* Lots of usability improvements for the I2C API. Better docs and new top-level functions.
* Document frequencies
* Tabs to spaces
* More style fixes
* Run astyle
* Clean up docs
* Add note about addressing, change 10 bit to 11 bit
* Fix spellcheck
* Fix paste error
* Oops, fix accidental change
When a Thread object's stack memory is not provided, its `start()`
member function dynamically allocates its stack from the heap. If
allocation fails, there is no way to catch it because
* `std::nothrow` is missing after the `new` keyword. As Mbed OS
is built with `-fno-exceptions` (C++ exceptions disabled), failed
allocation results in an unrecoverable fault.
* The attempted `nullptr` check, which doesn't work anyway due to
the first point, is an assertion instead of error returning.
Assertions should be used as a development tool to ensure code
behaves correctly. But out-of-memory is a completely valid runtime
situation.
This commit adds the missing `std::nothrow`, and makes `Thread::start()`
return `osErrorNoMemory` if allocation fails so the caller can handle
it.
Note: A case when a thread should never fail due to lack of memory
is the main thread. But the main thread's stack is a pre-allocated
array in the static memory, passed to the `Thread()` constructor
during thread creation, so it's not impacted by this change.
Production code should not contain any test-specific checks. Rather
than checking `UNITTEST`, unit tests can directly set
`MBED_CONF_RTOS_PRESENT=1` to make RTOS available for testing.
Note: The cellular ATHandler test also has `MBED_CONF_RTOS_PRESENT=1`
added because `ATHandler.cpp` contains a check of this variable.