| /* |
| * Copyright (c) 2015 Wind River Systems, Inc. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr.h> |
| #include <tc_util.h> |
| #include <kernel_structs.h> |
| #include <irq_offload.h> |
| |
| volatile u32_t sentinel; |
| #define SENTINEL_VALUE 0xDEADBEEF |
| |
| void offload_function(void *param) |
| { |
| u32_t x = (u32_t)param; |
| |
| TC_PRINT("offload_function running\n"); |
| |
| /* Make sure we're in IRQ context */ |
| if (!_is_in_isr()) { |
| TC_PRINT("Not in IRQ context!\n"); |
| return; |
| } |
| |
| sentinel = x; |
| } |
| |
| void main(void) |
| { |
| int rv = TC_PASS; |
| |
| TC_START("test_irq_offload"); |
| |
| irq_offload(offload_function, (void *)SENTINEL_VALUE); |
| |
| if (sentinel != SENTINEL_VALUE) { |
| TC_PRINT("irq_offload() didn't work properly\n"); |
| rv = TC_FAIL; |
| } |
| |
| TC_END_RESULT(rv); |
| TC_END_REPORT(rv); |
| } |