The SMP testing missed the case where _Swap() decides to return back into the _current. Obviously there is no valid switch handle for the running thread into which we can restore, and everything blows up. (What happened is that the new scheduler code opened up a spot where k_thread_priority_set() does a _reschedule() unconditionally and doens't check to see whether or not it's needed like the old code). But that isn't incorrect! It's entirely possible that _Swap() may find that no thread is runnable except _current (due, for example, to another CPU racing the other thread you expected off to sleep or something). Don't blow up, check and return a noop. Signed-off-by: Andy Ross <andrew.j.ross@intel.com> |
||
|---|---|---|
| .. | ||
| gen_offset.h | ||
| kernel_internal.h | ||
| kernel_offsets.h | ||
| kernel_structs.h | ||
| ksched.h | ||
| kswap.h | ||
| offsets_short.h | ||
| syscall_handler.h | ||
| timeout_q.h | ||
| wait_q.h | ||