zephyr/include
Andy Ross 11a050b2c3 kernel/sched: Fix edge case in MetaIRQ preemption of cooperative threads
When a MetaIRQ preempts a cooperative thread, that thread would be
added back to the generic run queue.  When the MetaIRQ is done, the
highest priority thread will be selected to run, which may obviously
be a cooperative thread of a higher priority than the one that was
preempted.

But that's wrong, because the original thread was promised that it
would NOT be preempted until it reached a scheduling point on its own
(that's the whole point of a cooperative thread, of course).

We need to track the thread that got preempted (one per CPU) and
return to it instead of whatever else the scheduler might have found.

Fixes #20255

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2019-11-15 13:09:02 +01:00
..
app_memory
arch
audio
bluetooth
cmsis_rtos_v1
cmsis_rtos_v2
console
crypto
data
debug
dfu
disk
display
drivers
dt-bindings
fs
linker
logging
mgmt
misc
net
nvs
posix
power
random
settings
shell
stats
storage
sys
toolchain
usb
zephyr
adc.h
atomic.h
base64.h
cache.h
can.h
clock_control.h
console.h
counter.h
crc.h
device.h
disk_access.h
display.h
dma.h
entropy.h
exc_handle.h
fatal.h
fcb.h
flash_map.h
flash.h
fs.h
generated_dts_board.h
gna.h
gpio.h
hwinfo.h
i2c.h
i2s.h
init.h
ipm.h
irq_nextlevel.h
irq_offload.h
irq.h
json.h
kernel_includes.h
kernel_structs.h
kernel_version.h
kernel.h
led_strip.h
led.h
pinmux.h
power.h
ptp_clock.h
pwm.h
ring_buffer.h
sched_priq.h
sensor.h
shared_irq.h
spi.h
spinlock.h
stats.h
sw_isr_table.h
sys_clock.h
sys_io.h
syscall_handler.h
syscall.h
timeout_q.h
toolchain.h
tracing.h
tty.h
uart.h
wait_q.h
watchdog.h
zephyr.h