1 /*
2  * Copyright (c) 2024 Intel Corporation
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 
6 
7 #ifndef ZEPHYR_KERNEL_INCLUDE_IPI_H_
8 #define ZEPHYR_KERNEL_INCLUDE_IPI_H_
9 
10 #include <zephyr/kernel.h>
11 #include <stdint.h>
12 #include <zephyr/sys/atomic.h>
13 
14 #define IPI_ALL_CPUS_MASK  ((1 << CONFIG_MP_MAX_NUM_CPUS) - 1)
15 
16 #define IPI_CPU_MASK(cpu_id)   \
17 	(IS_ENABLED(CONFIG_IPI_OPTIMIZE) ? BIT(cpu_id) : IPI_ALL_CPUS_MASK)
18 
19 
20 void z_sched_ipi(void);
21 
22 /* defined in ipi.c when CONFIG_SMP=y */
23 #ifdef CONFIG_SMP
24 void flag_ipi(uint32_t ipi_mask);
25 void signal_pending_ipi(void);
26 atomic_val_t ipi_mask_create(struct k_thread *thread);
27 #else
28 #define flag_ipi(ipi_mask) do { } while (false)
29 #define signal_pending_ipi() do { } while (false)
30 #endif /* CONFIG_SMP */
31 
32 
33 #endif /* ZEPHYR_KERNEL_INCLUDE_IPI_H_ */
34