zephyr/include
Jakub Rzeszutko 46a02322ec shell: allow commands to suspend shell thread
It was possible to deadlock the shell when command
suspended shell's thread and next another thread wanted
to print something on the shell.

To avoid that shell releases mutex before entering command
handler. Due to this change some  adapations to shell
internal print functions have been applied.

This change addresses following usecase:
1. A command handler needs to call a (system) function which
communicate results via a callback, and this callback is expected
to print these results. The callback is called by the system from
another thread.
2. To achieve that, the handler needs to pass `struct shell *`
to callbacks, but also some other data specific to callback.
Thus, handles allocates some structure will those fields on
the stack.
3. The handler schedules this callback to be called.
4. As a reference to stack structure is passed to the callback,
the handler can't return immediately (or stack data will go out
of scope and will be overwritten).
5. So, the handler blocks waiting for callback to finish.

Previously, this scenario led to deadlock when the callback
trying or print to shell. With these changes, it just works,
as long as main handler and callback serialize there access
to the shell structure (i.e. when callback prints, the main
handler is blocked waiting for its completion).

Signed-off-by: Jakub Rzeszutko <jakub.rzeszutko@nordicsemi.no>
2019-02-14 13:40:28 +01:00
..
app_memory app_shmem: overhaul partition specification 2019-02-08 07:04:30 -05:00
arch dts: Convert CONFIG_CCM to DT_CCM 2019-02-08 10:29:57 -06:00
audio
bluetooth Bluetooth: Add definitions for GATT Caching 2019-02-08 18:07:34 +02:00
cmsis_rtos_v1
cmsis_rtos_v2 CMSIS RTOS V2: Introduce CMSIS RTOS V2 API header file 2018-12-20 12:23:22 +01:00
crypto
debug include: remove unused header file gdb_server.h 2019-01-22 07:45:22 -05:00
dfu dfu/flash_img: use flash_map instead of flash API 2019-02-08 09:13:09 -06:00
display doc: add missing cfb API 2019-01-03 12:38:28 -05:00
drivers console: Remove CONFIG_WEBSOCKET_CONSOLE code 2019-02-11 22:29:58 -05:00
dt-bindings interrupt_controller: RV32M1: add intmux driver / DT bindings 2019-01-25 11:59:46 -05:00
fs
linker LD: Assert when CONFIG_PRIVILEGED_STACK_TEXT_AREA is too small 2019-02-12 10:28:38 -05:00
logging logging: Fix typo in logging comment 2019-02-12 07:50:06 -05:00
mgmt smp: shell: Add support for SMP in new shell. 2019-01-15 17:19:20 -05:00
misc libc: set up memory partitions 2019-02-08 07:04:30 -05:00
net net: sockets: Add dummy shutdown() implementation. 2019-02-13 07:00:51 -06:00
nvs doc: group file system/storage APIs 2018-12-10 20:38:09 -05:00
posix lib: posix: fs: Convert to use generic fdtable 2018-11-04 22:04:11 +01:00
random
settings doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
shell shell: allow commands to suspend shell thread 2019-02-14 13:40:28 +01:00
toolchain userspace: remove APPLICATION_MEMORY feature 2019-02-08 07:04:30 -05:00
usb usb: hid: Add HID Device concept 2019-02-08 11:23:04 -05:00
zephyr jwt: Add JSON web token library 2019-02-08 15:32:58 -06:00
adc.h include: adc: Fix async ADC API documentation 2018-12-04 15:52:18 -05:00
aio_comparator.h
atomic.h atomic: Add atomic_set_bit_to() API 2019-01-25 17:35:44 -05:00
base64.h
cache.h
can.h C++ : Fix error: template with C linkage 2019-01-25 11:19:56 -05:00
clock_control.h
console.h doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
counter.h api: counter: rename counter_disable_channel_alarm() 2019-02-08 10:47:40 +01:00
crc.h crc: Move crc7 into CRC single header 2018-12-30 16:24:10 -05:00
crc8.h crc: deprecate old headers and issue warning when used 2018-12-04 08:52:46 -06:00
crc16.h crc: move all crc APIs into one header 2018-12-04 08:52:46 -06:00
crc32.h crc: deprecate old headers and issue warning when used 2018-12-04 08:52:46 -06:00
device.h drivers: Modify drivers to use DEVICE_AND_API_INIT() 2019-01-15 10:39:34 -08:00
disk_access.h
display.h drivers: display: Add RGB 565 pixel format to display api 2019-02-07 14:28:55 -06:00
dma.h doc: add peripherals reference 2019-01-30 18:38:48 -05:00
entropy.h drivers: entropy: Use likely()/unlikely() macros to speed up the API 2018-10-30 11:16:34 +01:00
exc_handle.h kernel: Fix type of Z_EXC_HANDLE 2018-11-16 09:18:27 -08:00
fcb.h
flash_map.h dts: flash_map: Automatically generate of the list of flash area 2019-02-07 10:31:27 -06:00
flash.h
fs.h doc: consolidated filesystem API reference 2019-02-05 07:04:40 -05:00
generated_dts_board.h cmake: Fix the generation of fixup files 2019-01-28 12:18:38 -05:00
gna.h doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
gpio.h Revert "gpio: enable callback to specify pin in addition to pin_mask" 2019-02-06 07:18:15 -05:00
hwinfo.h drivers: hwinfo: fix build with NEWLIB_LIBC=y 2019-02-10 12:24:04 -05:00
i2c.h drivers: i2c: document problematic API and deprecated unused functions 2019-02-07 22:04:28 -05:00
i2s.h i2s: add i2s_configure() as a system call 2018-11-15 16:20:36 -05:00
init.h drivers: Modify drivers to use DEVICE_AND_API_INIT() 2019-01-15 10:39:34 -08:00
ipm.h
irq_nextlevel.h
irq_offload.h
irq.h kernel: add dynamic interrupt API 2018-11-10 11:01:22 -05:00
json.h
kernel_includes.h kernel/work_q: Spinlockify 2019-02-08 14:49:39 -05:00
kernel_version.h doc: add kernel version API to doxygen 2018-12-08 17:24:53 -05:00
kernel.h kernel: Reworking _K_TIMER_INITIALIZER and _K_PIPE_INITIALIZER for C++ 2019-02-13 11:06:56 -06:00
led_strip.h
led.h
pinmux.h
power.h power: Fix naming of Kconfig options controlling deep sleep states 2019-02-12 07:46:32 -05:00
ptp_clock.h
pwm.h
ring_buffer.h lib: ring_buffer: add raw byte access mode 2018-10-09 13:58:44 -04:00
rtc.h rtc: Fix call to counter API in adaptation layer 2019-02-07 16:14:00 -05:00
sched_priq.h
sensor.h C++ : Fix error: template with C linkage 2019-01-25 11:19:56 -05:00
shared_irq.h
spi.h docs: spi.h: removed dev doxygen comment from struct spi_config 2018-12-17 08:19:21 -06:00
spinlock.h spinlock: Support ztest mocking 2019-02-08 14:49:39 -05:00
stats.h include: stats.h: Packed attribute was incorrect. 2018-12-07 10:32:41 -05:00
sw_isr_table.h arch: common: add function for updating IRQ table 2018-11-10 11:01:22 -05:00
sys_clock.h sys_clock: Change function signature 2018-12-11 14:37:10 -08:00
sys_io.h
syscall.h syscall: Return bool in a boolean function 2018-11-30 08:05:11 -08:00
toolchain.h
tracing.h debug: CTF Tracing with POSIX backend 2019-02-01 08:56:02 -05:00
tty.h doc: regular misspelling scan 2018-12-26 13:27:14 -05:00
uart.h api: uart: Revert to using bitmasks for errors. 2019-02-13 09:21:53 -05:00
watchdog.h drivers: watchdog: remove deprecated apis 2019-02-01 10:37:49 -06:00
zephyr.h