/Zephyr-latest/arch/common/ |
D | shared_irq.c | 30 if (client->isr) { in z_shared_isr() 31 client->isr(client->arg); in z_shared_isr() 66 if (entry->isr == z_irq_spurious) { in z_isr_install() 67 /* this is the first time a ISR/arg pair is registered in z_isr_install() 70 entry->isr = routine; in z_isr_install() 76 } else if (entry->isr != z_shared_isr) { in z_isr_install() 77 /* INTID is being used by another ISR/arg pair. in z_isr_install() 78 * Push back the ISR/arg pair registered in _sw_isr_table in z_isr_install() 82 shared_entry->clients[shared_entry->client_num].isr = entry->isr; in z_isr_install() 87 entry->isr = z_shared_isr; in z_isr_install() [all …]
|
D | isr_tables_shell.c | 14 if ((entry->isr == z_irq_spurious) || (entry->isr == NULL)) { in dump_isr_table_entry() 18 const char *name = symtab_find_symbol_name((uintptr_t)entry->isr, NULL); in dump_isr_table_entry() 22 shell_print(sh, "%4d: %p(%p)", idx, entry->isr, entry->arg); in dump_isr_table_entry() 66 SHELL_CMD_ARG_REGISTER(isr_table, &isr_table_cmds, "ISR tables shell command",
|
/Zephyr-latest/subsys/modem/backends/ |
D | modem_backend_uart_isr.c | 30 receive_rb = &backend->isr.receive_rdb[backend->isr.receive_rdb_used]; in modem_backend_uart_isr_irq_handler_receive_ready() 71 if (ring_buf_is_empty(&backend->isr.transmit_rb) == true) { in modem_backend_uart_isr_irq_handler_transmit_ready() 77 size = ring_buf_get_claim(&backend->isr.transmit_rb, &buffer, UINT32_MAX); in modem_backend_uart_isr_irq_handler_transmit_ready() 80 ring_buf_get_finish(&backend->isr.transmit_rb, 0); in modem_backend_uart_isr_irq_handler_transmit_ready() 82 ring_buf_get_finish(&backend->isr.transmit_rb, (uint32_t)ret); in modem_backend_uart_isr_irq_handler_transmit_ready() 85 atomic_sub(&backend->isr.transmit_buf_len, (uint32_t)ret); in modem_backend_uart_isr_irq_handler_transmit_ready() 110 ring_buf_reset(&backend->isr.receive_rdb[0]); in modem_backend_uart_isr_open() 111 ring_buf_reset(&backend->isr.receive_rdb[1]); in modem_backend_uart_isr_open() 112 ring_buf_reset(&backend->isr.transmit_rb); in modem_backend_uart_isr_open() 113 atomic_set(&backend->isr.transmit_buf_len, 0); in modem_backend_uart_isr_open() [all …]
|
/Zephyr-latest/tests/kernel/interrupt/src/ |
D | dynamic_isr.c | 32 * @brief Test dynamic ISR installation 36 * @details This routine locates an unused entry in the software ISR table, 37 * installs a dynamic ISR to the unused entry by calling the dynamic 38 * configured function, and verifies that the ISR is successfully installed 39 * by checking the software ISR table entry. 49 if (_sw_isr_table[i].isr == z_irq_spurious) { in ZTEST() 54 zassert_true(_sw_isr_table[i].isr == z_irq_spurious, in ZTEST() 55 "could not find slot for dynamic isr"); in ZTEST() 57 printk("installing dynamic ISR for IRQ %d\n", in ZTEST() 64 zassert_true(_sw_isr_table[i + IRQ_OFFSET].isr == dyn_isr && in ZTEST() [all …]
|
D | dynamic_shared_irq.c | 32 /* note: no need to check the state of the SW ISR tables after in dynamic_shared_irq_suite_after() 58 if (_sw_isr_table[table_idx].isr == &z_irq_spurious) { in get_irq_slot() 113 zassert_true(_sw_isr_table[fixture.irq1_table_idx + TABLE_OFFSET].isr == test_isr_0, in dynamic_shared_irq_suite_before() 114 "wrong _sw_isr_table ISR at irq1"); in dynamic_shared_irq_suite_before() 123 zassert_true(_sw_isr_table[fixture.irq1_table_idx + TABLE_OFFSET].isr == z_shared_isr, in dynamic_shared_irq_suite_before() 124 "wrong _sw_isr_table ISR at irq1"); in dynamic_shared_irq_suite_before() 141 zassert_true(_sw_isr_table[fixture.irq2_table_idx + TABLE_OFFSET].isr == test_isr_2, in dynamic_shared_irq_suite_before() 142 "wrong _sw_isr_table ISR at irq2"); in dynamic_shared_irq_suite_before() 157 * (i.e: multiple ISR/arg pairs are called whenever the interrupt 184 * @brief Test writing to a vector after an ISR/arg disconnect. [all …]
|
D | nested_irq.c | 29 * In terms of priority, the IRQ1 is triggered from the ISR of the IRQ0; 117 /* Validate nested ISR result token */ in isr0() 128 * This routine tests the interrupt nesting feature, which allows an ISR to be 130 * lower priority ISR resumes execution once the higher priority ISR has 136 * 2. [isr0] Set ISR 0 result token and trigger IRQ 1 (higher priority) 137 * 3. [isr1] Set ISR 1 result token and return 138 * 4. [isr0] Validate ISR 1 result token and return 139 * 5. [thread] Validate ISR 0 result token 165 /* Validate ISR result token */ in ZTEST()
|
D | regular_isr.c | 46 * - Trigger interrupt and check if isr handler has executed or not. 80 "Both ISR should execute"); in ZTEST() 90 "Both ISR should not execute again(%d)(%d)", in ZTEST() 99 * at the state that the ISR is suppose to update. This has been shown in ZTEST() 102 * Adding a nop instruction allows QEMU to post the ISR before any state in ZTEST() 113 "Both ISR should execute again(%d)(%d)", in ZTEST() 122 "Both ISR should execute again(%d)(%d)", in ZTEST()
|
/Zephyr-latest/include/zephyr/ |
D | sw_isr_table.h | 9 * @brief Software-managed ISR table 11 * Data types for a software-managed ISR table, with a parameter per-ISR. 35 * Note the order: arg first, then ISR. This allows a table entry to be 36 * loaded arg -> r0, isr -> r3 in _isr_wrapper with one ldmia instruction, 41 void (*isr)(const void *); member 44 /* The software ISR table itself, an array of these structures indexed by the 64 * @brief Get the Software ISR table offset Kconfig for the given aggregator level 78 * @brief Get an interrupt controller node's level base ISR table offset. 89 * @brief Get the SW ISR table offset for an instance of interrupt controller 93 * @return Software ISR table offset of the interrupt controller [all …]
|
/Zephyr-latest/soc/cdns/xtensa_sample_controller/include/ |
D | _soc_inthandlers.h | 95 e->isr(e->arg); in _xtensa_handle_one_int1() 101 e->isr(e->arg); in _xtensa_handle_one_int1() 107 e->isr(e->arg); in _xtensa_handle_one_int1() 115 e->isr(e->arg); in _xtensa_handle_one_int1() 121 e->isr(e->arg); in _xtensa_handle_one_int1() 128 e->isr(e->arg); in _xtensa_handle_one_int1() 134 e->isr(e->arg); in _xtensa_handle_one_int1() 144 e->isr(e->arg); in _xtensa_handle_one_int1() 150 e->isr(e->arg); in _xtensa_handle_one_int1() 156 e->isr(e->arg); in _xtensa_handle_one_int1() [all …]
|
/Zephyr-latest/tests/benchmarks/latency_measure/src/ |
D | int_to_thread.c | 11 * @brief Measure time from ISR back to interrupted thread 14 * 1. ISR returning to the interrupted kernel thread 15 * 2. ISR returning to a different (kernel) thread 16 * 3. ISR returning to a different (user) thread 18 * In all three scenarios, the source of the ISR is a software generated 34 * @brief Test ISR used to measure time to return to thread 119 * ISR expected to have awakened higher priority start_thread in alt_thread_entry() 179 "%-40s - Return from ISR to interrupted thread", in int_to_thread() 180 "isr.resume.interrupted.thread.kernel"); in int_to_thread() 190 "%-40s - Return from ISR to another thread", in int_to_thread() [all …]
|
/Zephyr-latest/tests/kernel/gen_isr_table/src/ |
D | main.c | 65 * with isr used here, so add a workaround 84 * by default, and conflicts with ISR used for testing. Move IRQs for this 206 static int check_vector(void *isr, int offset) in check_vector() argument 218 if (_irq_vector_table[TABLE_INDEX(offset)] != (uint32_t)isr) { in check_vector() 233 static int check_sw_isr(void *isr, uintptr_t arg, int offset) in check_sw_isr() argument 241 TC_PRINT("bad argument in SW isr table\n"); in check_sw_isr() 245 if (e->isr != isr) { in check_sw_isr() 246 TC_PRINT("Bad ISR in SW isr table\n"); in check_sw_isr() 247 TC_PRINT("expected %p got %p\n", (void *)isr, e->isr); in check_sw_isr() 273 * isr and the corresponding parameters. [all …]
|
/Zephyr-latest/doc/kernel/services/ |
D | interrupts.rst | 6 An :dfn:`interrupt service routine` (ISR) is a function that executes 8 An ISR normally preempts the execution of the current thread, 10 Thread execution resumes only once all ISR work has been completed. 22 An ISR has the following key properties: 24 * An **interrupt request (IRQ) signal** that triggers the ISR. 30 to associate a given interrupt source with a given ISR. 31 Only a single ISR can be associated with a specific IRQ at any given time. 36 (usually of the same type). The argument value passed to an ISR's function 39 The kernel provides a default ISR for all unused IDT entries. This ISR 42 The kernel supports **interrupt nesting**. This allows an ISR to be preempted [all …]
|
/Zephyr-latest/subsys/bluetooth/controller/ll_sw/openisa/hal/RV32M1/ |
D | ll_irqs.h | 14 * We'll use the INTMUX ISR for channel 2 instead of LPTMR1 ISR 21 * We'll use the INTMUX ISR for channel 3 instead of radio ISR
|
/Zephyr-latest/tests/kernel/smp_abort/src/ |
D | main.c | 32 static void isr(const void *args) in isr() function 36 *(var->sync) = true; /* Flag that ISR is in progress */ in isr() 51 irq_offload(isr, var); in thread_entry() 64 * Each thread will run on its own CPU and invoke an ISR. in ZTEST() 65 * Each ISR will wait until the next thread enters its ISR in ZTEST() 68 * the active thread that was interrupted by an ISR. in ZTEST()
|
/Zephyr-latest/drivers/usb/udc/ |
D | Kconfig.nrf | 19 Size of the stack used in the driver for nRF USBD ISR event handling. 22 int "nRF UDC driver maximum number of ISR event messages" 26 Maximum number of messages for handling of nRF USBD ISR events.
|
/Zephyr-latest/subsys/bluetooth/controller/ll_sw/openisa/lll/ |
D | lll_prof.c | 30 /* sample the packet timer, use it to calculate ISR latency in lll_prof_latency_capture() 31 * and generate the profiling event at the end of the ISR. in lll_prof_latency_capture() 41 /* PA enable is overwriting packet end used in ISR profiling, hence in lll_prof_radio_end_backup() 52 /* get the ISR latency sample */ in lll_prof_cputime_capture() 55 /* sample the packet timer again, use it to calculate ISR execution time in lll_prof_cputime_capture() 67 * to ISR entry in lll_prof_send() 92 /* calculate the elapsed time in us since ISR entry */ in lll_prof_send()
|
/Zephyr-latest/drivers/stepper/ |
D | Kconfig.stepper_event_template | 5 bool "$(module-str) guarantee non ISR callbacks upon stepper events" 9 code is not run inside of an ISR. Can be disabled, but 10 then registered stepper event callback must be ISR safe.
|
/Zephyr-latest/arch/arm/core/cortex_m/ |
D | isr_wrapper.c | 23 * @brief Wrapper around ISRs when inserted in software ISR table 25 * When inserted in the vector table, _isr_wrapper() demuxes the ISR table 27 * ISR with its corresponding argument. When returning from the ISR, it 53 * entering an ISR. in _isr_wrapper() 77 (entry->isr)(entry->arg); in _isr_wrapper()
|
/Zephyr-latest/tests/arch/arm/arm_runtime_nmi/src/ |
D | arm_runtime_nmi.c | 27 /* ISR triggered correctly: test passed! */ in nmi_test_isr() 43 * First we configure the NMI isr using z_arm_nmi_set_handler() api. 46 * The registered NMI isr should fire immediately. 54 /* Configure the NMI isr */ in ZTEST() 74 zassert_true(nmi_triggered, "Isr not triggered!\n"); in ZTEST()
|
/Zephyr-latest/drivers/entropy/ |
D | Kconfig.smartbond | 36 int "ISR-mode random number pool size" 41 hardware to make them ready for ISR consumers. 45 int "ISR-mode random number pool low-water threshold" 49 ISR consumers. As soon as the number of available bytes in the
|
D | Kconfig.nrf5 | 53 int "ISR-mode random number pool size" 58 hardware to make them ready for ISR consumers. 62 int "ISR-mode random number pool low-water threshold" 66 ISR consumers. As soon as the number of available bytes in the
|
D | Kconfig.stm32 | 39 int "ISR-mode random number pool size" 44 hardware to make them ready for ISR consumers. 48 int "ISR-mode random number pool low-water threshold" 52 ISR consumers. As soon as the number of available bytes in the
|
/Zephyr-latest/tests/arch/arm/arm_irq_advanced_features/src/ |
D | arm_dynamic_direct_interrupts.c | 36 * in the ROM ISR table. in ZTEST() 43 /* Attach the ISR handler at run time. */ in ZTEST() 60 /* Confirm test flag is set by the dynamic direct ISR handler. */ in ZTEST() 67 /* Attach an alternative ISR handler at run-time. */ in ZTEST() 84 /* Confirm test flag is set by the dynamic direct ISR handler. */ in ZTEST()
|
/Zephyr-latest/tests/arch/x86/direct_isr/src/ |
D | direct_isr.c | 51 * - Trigger interrupt and check if isr handler has executed or not. 80 "Both ISR should not execute"); in ZTEST() 92 "Both ISR should execute"); in ZTEST() 102 "Both ISR should not execute again"); in ZTEST() 109 "Both ISR should execute again(%d)(%d)", in ZTEST() 118 "Both ISR should execute again(%d)(%d)", in ZTEST()
|
/Zephyr-latest/arch/arm/core/cortex_a_r/ |
D | isr_wrapper.S | 38 * @brief Wrapper around ISRs when inserted in software ISR table 40 * When inserted in the vector table, _isr_wrapper() demuxes the ISR table 42 * ISR with its corresponding argument. When returning from the ISR, it 122 * ISR stack usage at the mercy of the interrupted thread and this can 200 * Skip calling the isr if it is a spurious interrupt. 211 ldm r1!,{r0,r3} /* arg in r0, ISR in r3 */ 212 blx r3 /* call ISR */ 236 * @brief Wrapper around ISRs when inserted in software ISR table 238 * When inserted in the vector table, _isr_wrapper() demuxes the ISR table 240 * ISR with its corresponding argument. When returning from the ISR, it [all …]
|