zephyr/lib/os
Andy Ross fe04adf99b lib/os: Conditionally eliminate alloca/VLA usage
MISRA rules (see #9892) forbid alloca() and family, even though those
features can be valuable performance and memory size optimizations
useful to Zephyr.

Introduce a MISRA_SANE kconfig, which when true enables a gcc error
condition whenever a variable length array is used.

When enabled, the mempool code will use a theoretical-maximum array
size on the stack instead of one tailored to the current pool
configuration.

The rbtree code will do similarly, but because the theoretical maximum
is quite a bit larger (236 bytes on 32 bit platforms) the array is
placed into struct rbtree instead so it can live in static data (and
also so I don't have to go and retune all the test stack sizes!).
Current code only uses at most two of these (one in the scheduler when
SCHED_SCALABLE is selected, and one for dynamic kernel objects when
USERSPACE and DYNAMIC_OBJECTS are set).

This tunable is false by default, but is selected in a single test (a
subcase of tests/kernel/common) for coverage.  Note that the I2C and
SPI subsystems contain uncorrected VLAs, so a few platforms need to be
blacklisted with a filter.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2019-02-28 10:06:35 -08:00
..
assert.c misc: assert_post_action: Treat POSIX arch like others 2019-02-03 10:28:51 -08:00
base64.c lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00
CMakeLists.txt misc: Add k_panic on assert 2019-02-02 15:58:33 -08:00
crc7_sw.c lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00
crc8_sw.c lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00
crc16_sw.c lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00
crc32_sw.c lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00
fdtable.c lib: os: fdtable: Add underscore aliases for read/write/close/lseek 2019-02-28 08:45:13 -06:00
json.c lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00
Kconfig lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00
mempool.c lib/os: Conditionally eliminate alloca/VLA usage 2019-02-28 10:06:35 -08:00
printk.c printk: move into lib/os 2019-01-22 07:45:22 -05:00
rb.c lib/os: Conditionally eliminate alloca/VLA usage 2019-02-28 10:06:35 -08:00
ring_buffer.c include: misc: util.h: Rename min/max to MIN/MAX 2019-02-14 22:16:03 -05:00
thread_entry.c lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00
work_q.c lib: flatten all loose components into one lib 2019-01-22 07:45:22 -05:00