double interrupts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have an ISR that seems to happen twice for each
interrupt.  I have verified that interrupt pin is
deactivated when I receive the second interrupt.

I understand that that Linux has some sort of queuing
for interrupts, but have not be able to find much
information on this.  How do I stop this second
interrupt?


The following code is for a Linux 2.4 kernel.

_syscall1(int, nice, int, increment)
/*===========================================================================
===========================================================================*/
static int wait_4_irq_thread(void *unused)
{
	/*
	 * This thread doesn't need any user-level access,
	 * so get rid of all our resources
	 */
 
	daemonize();
	reparent_to_init();
	
	/* Setup a nice name */
	strcpy(current->comm, "16is7xx");
	
	/* this is an isr so let's get rude and set it as 
top priority */
	nice(-40);

	/* Send me a signal to get me die (for debugging) */
	do {	 	  			wait_event_interruptible(is7xx_wait,
(is7xx_interrupt_dev_id != NULL));
		if(is7xx_interrupt_dev_id != NULL) {
			is7xx_handle_irq();
			is7xx_interrupt_dev_id = NULL;
			enable_irq(is7xx_interrupt_irq);
		}
	} while (!signal_pending(current));
	complete_and_exit(&is7xx_exited, 0);
}


/*===========================================================================
===========================================================================*/
static void is7xx_interrupt(int irq, void *dev_id,
struct pt_regs *regs)
{
	if(irq == IS7XX_IRQ) {
	  	is7xx_interrupt_dev_id = dev_id;
	     	is7xx_interrupt_irq = irq;
	  	disable_irq(irq);
		wake_up(&is7xx_wait);	  
	} else {
	  	printk(KERN_ERR "wrong 16is7-- serial interrupt"
				"expected %d got %d\n",IS7XX_IRQ, irq);
	}}



 
____________________________________________________________________________________
Any questions? Get answers on any topic at www.Answers.yahoo.com.  Try it now.

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux