Commit 81cb80d9 authored by Filip Kokosinski's avatar Filip Kokosinski Committed by Fabio Baltieri
Browse files

samples/synchronization: fix thread b pinning



This commit adds a brief thread b suspend while the sample sets its
affinity mask.

If the call to `k_thread_cpu_pin` is being made while the thread is
actively running, then we get `-EINVAL` and the affinity mask is left
unchanged.

Signed-off-by: default avatarFilip Kokosinski <fkokosinski@antmicro.com>
parent 39a70be4
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -110,7 +110,16 @@ int main(void)
#if PIN_THREADS
	if (arch_num_cpus() > 1) {
		k_thread_cpu_pin(&thread_a_data, 0);

		/*
		 * Thread b is a static thread that is spawned immediately. This means that the
		 * following `k_thread_cpu_pin` call can fail with `-EINVAL` if the thread is
		 * actively running. Let's suspend the thread and resume it after the affinity mask
		 * is set.
		 */
		k_thread_suspend(thread_b);
		k_thread_cpu_pin(thread_b, 1);
		k_thread_resume(thread_b);
	}
#endif