/*
 * Copyright (c) 2015 Intel corporation
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @file
 * @brief IRQ Offload interface
 */
#ifndef ZEPHYR_INCLUDE_IRQ_OFFLOAD_H_
#define ZEPHYR_INCLUDE_IRQ_OFFLOAD_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <arch/cpu.h>

#ifdef CONFIG_IRQ_OFFLOAD
/**
 * @brief Run a function in interrupt context
 *
 * This function synchronously runs the provided function in interrupt
 * context, passing in the supplied parameter. Useful for test code
 * which needs to show that kernel objects work correctly in interrupt
 * context.
 *
 * @param routine The function to run
 * @param parameter Argument to pass to the function when it is run as an
 * interrupt
 */
static inline void irq_offload(irq_offload_routine_t routine, void *parameter)
{
	z_arch_irq_offload(routine, parameter);
}
#endif

#ifdef __cplusplus
}
#endif

#endif /* _SW_IRQ_H_ */
