Fwd: facing a problem with irq handler,please help me

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

 








nw i got the follwing result when i inserted this module:
----------------------------------------------------------------------
Oct  2 14:46:47 AnkurAggarwal kernel: Ank$: Hello module registered successfully!
Oct  2 14:46:47 AnkurAggarwal kernel: Ank$: Memory allocation successful
Oct  2 14:46:47 AnkurAggarwal kernel: Ank$: Port Available
Oct  2 14:46:47 AnkurAggarwal kernel: Ank$:cdev successful
Oct  2 14:46:47 AnkurAggarwal kernel: Ank$: Generation of Interrupt starts
Oct  2 14:46:47 AnkurAggarwal kernel: Anks:ret:-16
Oct  2 14:46:47 AnkurAggarwal kernel: Press a key...
Oct  2 14:46:47 AnkurAggarwal kernel: >>> PARALLEL PORT INT HANDLED
Oct  2 14:46:47 AnkurAggarwal kernel: Ank$: ret=-16
Oct  2 14:46:47 AnkurAggarwal kernel: Generating interrupt now on all output pins (intr/ACK = pin 10)
Oct  2 14:46:47 AnkurAggarwal kernel: Interrupt generated. You should see the handler-message
-----------------------------------------------------------------------------------------------------------------------
the return value for request_irq() is negative but still it shows the handler message. what could be the  problem ???
i observed 1 thing in driver codes that enable_irq is rarely used after request_irq(),but the tutorial i reffered used it. why so???

i will be glad for your inputs...
thanks

On Fri, Oct 2, 2009 at 1:39 PM, Jason Nymble <jason.nymble@xxxxxxxxx> wrote:

On 02 Oct 2009, at 9:30 AM, Harinderjit Singh Sandhu wrote:

i want to know which statement is turning it off.....

On Thu, Oct 1, 2009 at 9:03 PM, Greg KH <greg@xxxxxxxxx> wrote:
On Thu, Oct 01, 2009 at 08:55:27PM +0530, Harinderjit Singh Sandhu wrote:
> this is the code for the small module that i wrote

The problem is in your interrupt handler:

> // interrupt handler
> irqreturn_t interrupt_handler (int irqn, void *dev)
> {
>
>         printk("Press a key  ");
>
>
>         return IRQ_HANDLED;
>
>
> }

You aren't really handling the interrupt by turning it off in the
hardware.  So the kernel sees an interrupt storm for your device and
shuts it off to save the system from going crazy.

What are you trying to do with this sample module?

greg k-h

You need to clear the hardware interrupt in some way (to acknowledge to the hardware that you've seen it essentially). Often this means reading a register value. It depends on your hardware...



--
---------------------
Harinderjit Singh
Sent from Delhi, DL, India



--
---------------------
Harinderjit Singh

[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