|  | /* | 
|  | * Copyright (c) 2018,2024 Intel Corporation | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  | #include <zephyr/kernel.h> | 
|  | #include <zephyr/irq_offload.h> | 
|  |  | 
|  | /* Make offload_sem visible outside testing, in order to release | 
|  | * it outside when error happened. | 
|  | */ | 
|  | K_SEM_DEFINE(offload_sem, 1, 1); | 
|  |  | 
|  | void irq_offload(irq_offload_routine_t routine, const void *parameter) | 
|  | { | 
|  | #ifdef CONFIG_IRQ_OFFLOAD_NESTED | 
|  | arch_irq_offload(routine, parameter); | 
|  | #else | 
|  | k_sem_take(&offload_sem, K_FOREVER); | 
|  | arch_irq_offload(routine, parameter); | 
|  | k_sem_give(&offload_sem); | 
|  | #endif /* CONFIG_IRQ_OFFLOAD_NESTED */ | 
|  | } |