Add MAX value definitions to go along with irq_t and irq_mapped_t

This commit is contained in:
Gregory Nutt 2017-03-03 11:48:20 -06:00
parent e1218c4b4b
commit fc5fca5145
2 changed files with 24 additions and 4 deletions

View File

@ -644,10 +644,10 @@ config ARCH_MINIMAL_VECTORTABLE
This table is index by the hardware IRQ number and provides a value This table is index by the hardware IRQ number and provides a value
in the range of 0 to CONFIG_ARCH_NUSER_INTERRUPTS that is the new, in the range of 0 to CONFIG_ARCH_NUSER_INTERRUPTS that is the new,
mapped index into the vector table. Unused, unmapped interrupts mapped index into the vector table. Unused, unmapped interrupts
should be set to (irq_mapped_t)-1. So, for example, if g_irqmap[37] should be set to IRQMAPPED_MAX. So, for example, if g_irqmap[37]
== 24, then the hardware interrupt vector 37 will be mapped to the == 24, then the hardware interrupt vector 37 will be mapped to the
interrupt vector table at index 24. if g_irqmap[42] == interrupt vector table at index 24. if g_irqmap[42] ==
(irq_mapped_t)-1, then hardware interrupt vector 42 is not used and IRQMAPPED_MAX, then hardware interrupt vector 42 is not used and
if it occurs will result in an unexpected interrupt crash. if it occurs will result in an unexpected interrupt crash.
config ARCH_NUSER_INTERRUPTS config ARCH_NUSER_INTERRUPTS

View File

@ -52,14 +52,34 @@
* Pre-processor Definitions * Pre-processor Definitions
****************************************************************************/ ****************************************************************************/
#ifndef __ASSEMBLY__
/* IRQ detach is a convenience definition. Detaching an interrupt handler /* IRQ detach is a convenience definition. Detaching an interrupt handler
* is equivalent to setting a NULL interrupt handler. * is equivalent to setting a NULL interrupt handler.
*/ */
#ifndef __ASSEMBLY__
# define irq_detach(isr) irq_attach(isr, NULL, NULL) # define irq_detach(isr) irq_attach(isr, NULL, NULL)
/* Maximum/minimum values of IRQ integer types */
# if NR_IRQS <= 256
# define IRQT_MAX UINT8_MAX
# elif NR_IRQS <= 65536
# define IRQT_MAX UINT16_MAX
# else
# define IRQT_MAX UINT32_MAX
# endif # endif
# ifdef CONFIG_ARCH_MINIMAL_VECTORTABLE
# if CONFIG_ARCH_NUSER_INTERRUPTS <= 256
# define IRQMAPPED_MAX UINT8_MAX
# elif CONFIG_ARCH_NUSER_INTERRUPTS <= 65536
# define IRQMAPPED_MAX UINT16_MAX
# else
# define IRQMAPPED_MAX UINT32_MAX
# endif
#endif /* __ASSEMBLY__ */
/**************************************************************************** /****************************************************************************
* Public Types * Public Types
****************************************************************************/ ****************************************************************************/