4344e27c26
Update reserved function names starting with one underscore, replacing them as follows: '_k_' with 'z_' '_K_' with 'Z_' '_handler_' with 'z_handl_' '_Cstart' with 'z_cstart' '_Swap' with 'z_swap' This renaming is done on both global and those static function names in kernel/include and include/. Other static function names in kernel/ are renamed by removing the leading underscore. Other function names not starting with any prefix listed above are renamed starting with a 'z_' or 'Z_' prefix. Function names starting with two or three leading underscores are not automatcally renamed since these names will collide with the variants with two or three leading underscores. Various generator scripts have also been updated as well as perf, linker and usb files. These are drivers/serial/uart_handlers.c include/linker/kobject-text.ld kernel/include/syscall_handler.h scripts/gen_kobject_list.py scripts/gen_syscall_header.py Signed-off-by: Patrik Flykt <patrik.flykt@intel.com>
85 lines
2.1 KiB
C
85 lines
2.1 KiB
C
/*
|
|
* Copyright (c) 2014, Wind River Systems, Inc.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief Software-managed ISR table
|
|
*
|
|
* Data types for a software-managed ISR table, with a parameter per-ISR.
|
|
*/
|
|
|
|
#ifndef ZEPHYR_INCLUDE_SW_ISR_TABLE_H_
|
|
#define ZEPHYR_INCLUDE_SW_ISR_TABLE_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if !defined(_ASMLANGUAGE)
|
|
#include <zephyr/types.h>
|
|
#include <toolchain.h>
|
|
|
|
/*
|
|
* Note the order: arg first, then ISR. This allows a table entry to be
|
|
* loaded arg -> r0, isr -> r3 in _isr_wrapper with one ldmia instruction,
|
|
* on ARM Cortex-M (Thumb2).
|
|
*/
|
|
struct _isr_table_entry {
|
|
void *arg;
|
|
void (*isr)(void *);
|
|
};
|
|
|
|
/* The software ISR table itself, an array of these structures indexed by the
|
|
* irq line
|
|
*/
|
|
extern struct _isr_table_entry _sw_isr_table[];
|
|
|
|
/*
|
|
* Data structure created in a special binary .intlist section for each
|
|
* configured interrupt. gen_irq_tables.py pulls this out of the binary and
|
|
* uses it to create the IRQ vector table and the _sw_isr_table.
|
|
*
|
|
* More discussion in include/linker/intlist.ld
|
|
*/
|
|
struct _isr_list {
|
|
/** IRQ line number */
|
|
s32_t irq;
|
|
/** Flags for this IRQ, see ISR_FLAG_* definitions */
|
|
s32_t flags;
|
|
/** ISR to call */
|
|
void *func;
|
|
/** Parameter for non-direct IRQs */
|
|
void *param;
|
|
};
|
|
|
|
/** This interrupt gets put directly in the vector table */
|
|
#define ISR_FLAG_DIRECT (1 << 0)
|
|
|
|
#define _MK_ISR_NAME(x, y) __isr_ ## x ## _irq_ ## y
|
|
|
|
/* Create an instance of struct _isr_list which gets put in the .intList
|
|
* section. This gets consumed by gen_isr_tables.py which creates the vector
|
|
* and/or SW ISR tables.
|
|
*/
|
|
#define Z_ISR_DECLARE(irq, flags, func, param) \
|
|
static struct _isr_list Z_GENERIC_SECTION(.intList) __used \
|
|
_MK_ISR_NAME(func, __COUNTER__) = \
|
|
{irq, flags, &func, (void *)param}
|
|
|
|
#define IRQ_TABLE_SIZE (CONFIG_NUM_IRQS - CONFIG_GEN_IRQ_START_VECTOR)
|
|
|
|
#ifdef CONFIG_DYNAMIC_INTERRUPTS
|
|
void z_isr_install(unsigned int irq, void (*routine)(void *), void *param);
|
|
#endif
|
|
|
|
#endif /* _ASMLANGUAGE */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ZEPHYR_INCLUDE_SW_ISR_TABLE_H_ */
|