zephyr/kernel
Andy Ross 96ccc46e03 kernel/sched: Put k_thread_start() under a single lock
Similar to the suspend refactoring earlier, this really nees to be
done in an atomic block.  There were two confirmable races here,
though it's not completely clear either was being hit in practice:

1. The bit operations in z_mark_thread_as_started() aren't atomic so
   it needs to be protected.

2. The intermediate state in z_ready_thread() could result in a dead
   or suspended thread being added to the ready queue if another
   context tried a simultaneous abort or suspend.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2020-02-03 09:31:56 -05:00
..
include kernel/sched: Put k_thread_start() under a single lock 2020-02-03 09:31:56 -05:00
atomic_c.c kernel: fix the bug in atomic_c.c 2019-09-26 21:13:20 -04:00
CMakeLists.txt cmake: Add target for generating header files 2020-01-29 11:44:57 -06:00
compiler_stack_protect.c kernel: Fix gcc-9.2 warning with _StackCheckHandler 2019-10-04 05:22:30 -07:00
device.c kernel: device: Add const qualifier to device_config 2020-01-22 06:32:36 -06:00
errno.c headers: Refactor kernel and arch headers. 2019-11-06 16:07:32 -08:00
fatal.c kernel: rename z_arch_ to arch_ 2019-11-07 15:21:46 -08:00
futex.c kernel: rename z_arch_ to arch_ 2019-11-07 15:21:46 -08:00
idle.c kernel: rename z_arch_ to arch_ 2019-11-07 15:21:46 -08:00
init.c coverage: do not dump coverage data by default 2020-01-30 16:04:03 -05:00
Kconfig kernel: kconfig: Make SCHED_IPI_SUPPORTED invisible 2020-01-20 18:38:10 -05:00
Kconfig.power_mgmt kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
mailbox.c global: Remove leading/trailing blank lines in files 2019-12-11 19:17:27 +01:00
mem_domain.c kernel: fix k_mem_partition data types 2019-12-12 14:48:42 -08:00
mem_slab.c kernel: mem_slab: error handling 2020-01-20 17:19:54 -05:00
mempool.c mempool: use k_malloc heap for ISR allocations 2020-01-24 09:27:59 -08:00
msg_q.c kernel: msgq: error handling 2020-01-20 17:19:54 -05:00
mutex.c kernel: mutex: add error checking 2020-01-20 17:19:54 -05:00
pipes.c kernel: pipe: runtime error checking 2020-01-20 17:19:54 -05:00
poll.c kernel: poll: Allow 0 event input 2020-01-03 11:26:46 -08:00
queue.c kernel/queue: Fix SMP race 2020-01-21 14:47:52 -08:00
sched.c kernel/sched: Put k_thread_start() under a single lock 2020-02-03 09:31:56 -05:00
sem.c kernel/sem: Fix SMP race 2020-02-03 09:31:56 -05:00
smp.c kernel: cleanup and formally define CPU start fn 2020-01-13 16:35:10 -05:00
stack.c kernel: stack: error handling 2020-01-20 17:19:54 -05:00
system_work_q.c kernel: system_work_q: Set dedicated "sysworkq" name. 2018-10-19 07:58:45 -04:00
thread_abort.c kernel/sched: Move thread suspend and abort under the scheduler lock 2020-01-08 14:21:10 +01:00
thread.c kernel/sched: Put k_thread_start() under a single lock 2020-02-03 09:31:56 -05:00
timeout.c kernel/sys_clock.h: Deprecate and convert uses of old conversions 2019-11-08 11:08:58 +01:00
timer.c kernel/sys_clock.h: Deprecate and convert uses of old conversions 2019-11-08 11:08:58 +01:00
userspace_handler.c kernel: remove vestigal printk references 2019-10-01 16:15:06 -05:00
userspace.c kernel: use 'thread' for thread variable consistently 2019-12-21 19:57:57 -05:00
version.c doc: add kernel version API to doxygen 2018-12-08 17:24:53 -05:00
work_q.c kernel: work_q: error handling 2020-01-20 17:19:54 -05:00