irq_dispatch: Add argument pointer to irq_dispatch

Provide a user defined callback context for irq's, such that when
registering a callback users can provide a pointer that will get
passed back when the isr is called.
This commit is contained in:
Mark Schulte
2017-02-27 06:27:56 -06:00
committed by Gregory Nutt
parent f97a99e051
commit b3222bbc8a
385 changed files with 1636 additions and 1624 deletions
+4 -4
View File
@@ -262,7 +262,7 @@ static void gpio_porthandler(uint32_t regbase, int irqbase, uint32_t irqset, voi
****************************************************************************/
#if CONFIG_AVR32_GPIOIRQSETA != 0
static int gpio0_interrupt(int irq, FAR void *context)
static int gpio0_interrupt(int irq, FAR void *context, FAR void *arg)
{
gpio_porthandler(AVR32_GPIO0_BASE, __IRQ_GPIO_PA0,
CONFIG_AVR32_GPIOIRQSETA, context);
@@ -271,7 +271,7 @@ static int gpio0_interrupt(int irq, FAR void *context)
#endif
#if CONFIG_AVR32_GPIOIRQSETB != 0
static int gpio1_interrupt(int irq, FAR void *context)
static int gpio1_interrupt(int irq, FAR void *context, FAR void *arg)
{
gpio_porthandler(AVR32_GPIO1_BASE, __IRQ_GPIO_PB0,
CONFIG_AVR32_GPIOIRQSETB, context);
@@ -310,10 +310,10 @@ void gpio_irqinitialize(void)
/* Then attach the GPIO interrupt handlers */
#if CONFIG_AVR32_GPIOIRQSETA != 0
irq_attach(AVR32_IRQ_GPIO0, gpio0_interrupt);
irq_attach(AVR32_IRQ_GPIO0, gpio0_interrupt, NULL);
#endif
#if CONFIG_AVR32_GPIOIRQSETB != 0
irq_attach(AVR32_IRQ_GPIO1, gpio1_interrupt);
irq_attach(AVR32_IRQ_GPIO1, gpio1_interrupt, NULL);
#endif
}
+2 -2
View File
@@ -174,7 +174,7 @@ static int up_getgrp(unsigned int irq)
*
****************************************************************************/
static int avr32_xcptn(int irq, FAR void *context)
static int avr32_xcptn(int irq, FAR void *context, FAR void *arg)
{
(void)up_irq_save();
_alert("PANIC!!! Exception IRQ: %d\n", irq);
@@ -223,7 +223,7 @@ void up_irqinitialize(void)
for (irq = 0; irq < AVR32_IRQ_NEVENTS; irq++)
{
irq_attach(irq, avr32_xcptn);
irq_attach(irq, avr32_xcptn, NULL);
}
/* Initialize GPIO interrupt facilities */
+3 -3
View File
@@ -160,7 +160,7 @@ static int up_setup(struct uart_dev_s *dev);
static void up_shutdown(struct uart_dev_s *dev);
static int up_attach(struct uart_dev_s *dev);
static void up_detach(struct uart_dev_s *dev);
static int up_interrupt(int irq, void *context);
static int up_interrupt(int irq, void *context, FAR void *arg);
static int up_ioctl(struct file *filep, int cmd, unsigned long arg);
static int up_receive(struct uart_dev_s *dev, uint32_t *status);
static void up_rxint(struct uart_dev_s *dev, bool enable);
@@ -408,7 +408,7 @@ static int up_attach(struct uart_dev_s *dev)
/* Attach the IRQ */
return irq_attach(priv->irq, up_interrupt);
return irq_attach(priv->irq, up_interrupt, NULL);
}
/****************************************************************************
@@ -440,7 +440,7 @@ static void up_detach(struct uart_dev_s *dev)
*
****************************************************************************/
static int up_interrupt(int irq, void *context)
static int up_interrupt(int irq, void *context, FAR void *arg)
{
struct uart_dev_s *dev = NULL;
struct up_dev_s *priv;
+2 -2
View File
@@ -157,7 +157,7 @@ static void rtc_waitnotbusy(void)
*
****************************************************************************/
static int at32uc3_timerisr(int irq, uint32_t *regs)
static int at32uc3_timerisr(int irq, uint32_t *regs, void *arg)
{
/* Clear the pending timer interrupt */
@@ -219,7 +219,7 @@ void avr_timer_initialize(void)
/* Attach the timer interrupt vector */
(void)irq_attach(AVR32_IRQ_RTC, (xcpt_t)at32uc3_timerisr);
(void)irq_attach(AVR32_IRQ_RTC, (xcpt_t)at32uc3_timerisr, NULL);
/* Enable RTC interrupts */
+7 -7
View File
@@ -90,8 +90,8 @@ static int usart1_setup(struct uart_dev_s *dev);
static void usart1_shutdown(struct uart_dev_s *dev);
static int usart1_attach(struct uart_dev_s *dev);
static void usart1_detach(struct uart_dev_s *dev);
static int usart1_rxinterrupt(int irq, void *context);
static int usart1_txinterrupt(int irq, void *context);
static int usart1_rxinterrupt(int irq, void *context, FAR void *arg);
static int usart1_txinterrupt(int irq, void *context, FAR void *arg);
static int usart1_ioctl(struct file *filep, int cmd, unsigned long arg);
static int usart1_receive(struct uart_dev_s *dev, FAR unsigned int *status);
static void usart1_rxint(struct uart_dev_s *dev, bool enable);
@@ -245,9 +245,9 @@ static int usart1_attach(struct uart_dev_s *dev)
* written.
*/
(void)irq_attach(AT90USB_IRQ_U1RX, usart1_rxinterrupt);
(void)irq_attach(AT90USB_IRQ_U1DRE, usart1_txinterrupt);
//(void)irq_attach(AT90USB_IRQ_U1TX, usart1_txinterrupt);
(void)irq_attach(AT90USB_IRQ_U1RX, usart1_rxinterrupt, NULL);
(void)irq_attach(AT90USB_IRQ_U1DRE, usart1_txinterrupt, NULL);
//(void)irq_attach(AT90USB_IRQ_U1TX, usart1_txinterrupt, NULL);
return OK;
}
@@ -284,7 +284,7 @@ static void usart1_detach(struct uart_dev_s *dev)
*
****************************************************************************/
static int usart1_rxinterrupt(int irq, void *context)
static int usart1_rxinterrupt(int irq, void *context, FAR void *arg)
{
uint8_t ucsr1a = UCSR1A;
@@ -310,7 +310,7 @@ static int usart1_rxinterrupt(int irq, void *context)
*
****************************************************************************/
static int usart1_txinterrupt(int irq, void *context)
static int usart1_txinterrupt(int irq, void *context, FAR void *arg)
{
uint8_t ucsr1a = UCSR1A;
+2 -2
View File
@@ -114,7 +114,7 @@
*
****************************************************************************/
static int at90usb_timerisr(int irq, uint32_t *regs)
static int at90usb_timerisr(int irq, uint32_t *regs, void *arg)
{
/* Process timer interrupt */
@@ -168,7 +168,7 @@ void avr_timer_initialize(void)
/* Attach the timer interrupt vector */
(void)irq_attach(AT90USB_IRQ_T1COMPA, (xcpt_t)at90usb_timerisr);
(void)irq_attach(AT90USB_IRQ_T1COMPA, (xcpt_t)at90usb_timerisr, NULL);
/* Enable the interrupt on compare match A */
+6 -6
View File
@@ -295,7 +295,7 @@ static void avr_dispatchrequest(FAR const struct usb_ctrlreq_s *ctrl);
static int avr_ep0configure(void);
static void avr_setaddress(uint8_t address);
static void avr_ep0setup(void);
static int avr_epinterrupt(int irq, FAR void *context);
static int avr_epinterrupt(int irq, FAR void *context, FAR void *arg);
/* General interrupt handling **************************************************/
@@ -305,7 +305,7 @@ static void avr_genvbus(void);
static inline void avr_gensuspend(void);
static void avr_genwakeup(void);
static inline void avr_geneor(void);
static int avr_geninterrupt(int irq, FAR void *context);
static int avr_geninterrupt(int irq, FAR void *context, FAR void *arg);
/* USB device controller operations ********************************************/
@@ -1877,7 +1877,7 @@ static inline void avr_epNinterrupt(void)
*
****************************************************************************/
static int avr_epinterrupt(int irq, FAR void *context)
static int avr_epinterrupt(int irq, FAR void *context, FAR void *arg)
{
usbtrace(TRACE_INTENTRY(AVR_TRACEINTID_EPINT), irq);
@@ -2061,7 +2061,7 @@ static inline void avr_geneor(void)
*
****************************************************************************/
static int avr_geninterrupt(int irq, FAR void *context)
static int avr_geninterrupt(int irq, FAR void *context, FAR void *arg)
{
usbtrace(TRACE_INTENTRY(AVR_TRACEINTID_GENINT), irq);
@@ -2783,7 +2783,7 @@ void up_usbinitialize(void)
/* Attach USB controller general interrupt handler */
if (irq_attach(AT90USB_IRQ_USBGEN, avr_geninterrupt) != 0)
if (irq_attach(AT90USB_IRQ_USBGEN, avr_geninterrupt, NULL) != 0)
{
usbtrace(TRACE_DEVERROR(AVR_TRACEERR_IRQREGISTRATION), AT90USB_IRQ_USBGEN);
goto errout;
@@ -2791,7 +2791,7 @@ void up_usbinitialize(void)
/* Attach USB controller endpoint/pipe interrupt handler */
if (irq_attach(AT90USB_IRQ_USBEP, avr_epinterrupt) != 0)
if (irq_attach(AT90USB_IRQ_USBEP, avr_epinterrupt, NULL) != 0)
{
usbtrace(TRACE_DEVERROR(AVR_TRACEERR_IRQREGISTRATION), AT90USB_IRQ_USBEP);
goto errout;
+14 -14
View File
@@ -114,8 +114,8 @@ static int usart0_setup(struct uart_dev_s *dev);
static void usart0_shutdown(struct uart_dev_s *dev);
static int usart0_attach(struct uart_dev_s *dev);
static void usart0_detach(struct uart_dev_s *dev);
static int usart0_rxinterrupt(int irq, void *context);
static int usart0_txinterrupt(int irq, void *context);
static int usart0_rxinterrupt(int irq, void *context, FAR void *arg);
static int usart0_txinterrupt(int irq, void *context, FAR void *arg);
static int usart0_ioctl(struct file *filep, int cmd, unsigned long arg);
static int usart0_receive(struct uart_dev_s *dev, FAR unsigned int *status);
static void usart0_rxint(struct uart_dev_s *dev, bool enable);
@@ -131,8 +131,8 @@ static int usart1_setup(struct uart_dev_s *dev);
static void usart1_shutdown(struct uart_dev_s *dev);
static int usart1_attach(struct uart_dev_s *dev);
static void usart1_detach(struct uart_dev_s *dev);
static int usart1_rxinterrupt(int irq, void *context);
static int usart1_txinterrupt(int irq, void *context);
static int usart1_rxinterrupt(int irq, void *context, FAR void *arg);
static int usart1_txinterrupt(int irq, void *context, FAR void *arg);
static int usart1_ioctl(struct file *filep, int cmd, unsigned long arg);
static int usart1_receive(struct uart_dev_s *dev, FAR unsigned int *status);
static void usart1_rxint(struct uart_dev_s *dev, bool enable);
@@ -388,9 +388,9 @@ static int usart0_attach(struct uart_dev_s *dev)
* written.
*/
(void)irq_attach(ATMEGA_IRQ_U0RX, usart0_rxinterrupt);
(void)irq_attach(ATMEGA_IRQ_U0DRE, usart0_txinterrupt);
//(void)irq_attach(ATMEGA_IRQ_U0TX, usart0_txinterrupt);
(void)irq_attach(ATMEGA_IRQ_U0RX, usart0_rxinterrupt, NULL);
(void)irq_attach(ATMEGA_IRQ_U0DRE, usart0_txinterrupt, NULL);
//(void)irq_attach(ATMEGA_IRQ_U0TX, usart0_txinterrupt, NULL);
return OK;
}
#endif
@@ -410,9 +410,9 @@ static int usart1_attach(struct uart_dev_s *dev)
* written.
*/
(void)irq_attach(ATMEGA_IRQ_U1RX, usart1_rxinterrupt);
(void)irq_attach(ATMEGA_IRQ_U1DRE, usart1_txinterrupt);
//(void)irq_attach(ATMEGA_IRQ_U1TX, usart1_txinterrupt);
(void)irq_attach(ATMEGA_IRQ_U1RX, usart1_rxinterrupt, NULL);
(void)irq_attach(ATMEGA_IRQ_U1DRE, usart1_txinterrupt, NULL);
//(void)irq_attach(ATMEGA_IRQ_U1TX, usart1_txinterrupt, NULL);
return OK;
}
#endif
@@ -468,7 +468,7 @@ static void usart1_detach(struct uart_dev_s *dev)
****************************************************************************/
#ifdef CONFIG_AVR_USART0
static int usart0_rxinterrupt(int irq, void *context)
static int usart0_rxinterrupt(int irq, void *context, FAR void *arg)
{
uint8_t ucsr0a = UCSR0A;
@@ -486,7 +486,7 @@ static int usart0_rxinterrupt(int irq, void *context)
#endif
#ifdef CONFIG_AVR_USART1
static int usart1_rxinterrupt(int irq, void *context)
static int usart1_rxinterrupt(int irq, void *context, FAR void *arg)
{
uint8_t ucsr1a = UCSR1A;
@@ -514,7 +514,7 @@ static int usart1_rxinterrupt(int irq, void *context)
****************************************************************************/
#ifdef CONFIG_AVR_USART0
static int usart0_txinterrupt(int irq, void *context)
static int usart0_txinterrupt(int irq, void *context, FAR void *arg)
{
uint8_t ucsr0a = UCSR0A;
@@ -534,7 +534,7 @@ static int usart0_txinterrupt(int irq, void *context)
#endif
#ifdef CONFIG_AVR_USART1
static int usart1_txinterrupt(int irq, void *context)
static int usart1_txinterrupt(int irq, void *context, FAR void *arg)
{
uint8_t ucsr1a = UCSR1A;
+3 -3
View File
@@ -114,7 +114,7 @@
*
****************************************************************************/
static int atmega_timerisr(int irq, uint32_t *regs)
static int atmega_timerisr(int irq, uint32_t *regs, FAR void *arg);
{
/* Process timer interrupt */
@@ -169,9 +169,9 @@ void avr_timer_initialize(void)
/* Attach the timer interrupt vector */
#if defined(ATMEGA_IRQ_T1COMPA)
(void)irq_attach(ATMEGA_IRQ_T1COMPA, (xcpt_t)atmega_timerisr);
(void)irq_attach(ATMEGA_IRQ_T1COMPA, (xcpt_t)atmega_timerisr, NULL);
#elif defined(ATMEGA_IRQ_TIM1_COMPA)
(void)irq_attach(ATMEGA_IRQ_TIM1_COMPA, (xcpt_t)atmega_timerisr);
(void)irq_attach(ATMEGA_IRQ_TIM1_COMPA, (xcpt_t)atmega_timerisr, NULL);
#else
# error "Unable to find IRQ for timer"
#endif