intConnect() and multiple ISRs - VxWorks

This is a discussion on intConnect() and multiple ISRs - VxWorks ; Can I call intConnect() multiple times to hook multiple ISRs to the same interrupt vector? My case is I have multiple devices can assert interrupts and the destination has only one external interrupt pin. I do have an interrupt mask ...

+ Reply to Thread
Results 1 to 6 of 6

Thread: intConnect() and multiple ISRs

  1. intConnect() and multiple ISRs

    Can I call intConnect() multiple times to hook multiple ISRs to the
    same interrupt vector?

    My case is I have multiple devices can assert interrupts and the
    destination has only one external interrupt pin. I do have an interrupt
    mask register to check for the source device when an interrupt comes
    in.

    I expect vxWorks is able to process ISRs in a linked list fashion for
    this kind of interrupt sharing scenrio. Anyone confirms this?

    Thank


  2. Re: intConnect() and multiple ISRs

    Frank wrote:

    >Can I call intConnect() multiple times to hook multiple ISRs to the
    >same interrupt vector?


    I think not and suspect that the most recently called overrides all
    provious calls.

    >My case is I have multiple devices can assert interrupts and the
    >destination has only one external interrupt pin. I do have an interrupt
    >mask register to check for the source device when an interrupt comes
    >in.


    It seems to me that what you need is a single handler that reads the
    register and services the various devices as they interrupt. This handler
    should be connected only once.

    Watch out for what happens when one device is being serviced and another
    tries to generate an interrupt. You may need to configure for level
    triggered interrupts rather than edge triggered.

    >I expect vxWorks is able to process ISRs in a linked list fashion for
    >this kind of interrupt sharing scenrio. Anyone confirms this?


    I know of nothing such as this, unless it's specific to a particular
    BSP. What is your hardware environment?

    --
    ================================================== ======================
    Michael Kesti | "And like, one and one don't make
    | two, one and one make one."
    mrkesti at comcast dot net | - The Who, Bargain

  3. Re: intConnect() and multiple ISRs

    "Frank" wrote:
    > Can I call intConnect() multiple times to hook multiple ISRs to the
    > same interrupt vector?


    No, the last connected ISR will hold.

    > I expect vxWorks is able to process ISRs in a linked list fashion for
    > this kind of interrupt sharing scenrio. Anyone confirms this?


    I believe, but not 100% sure, that you can just use pciIntConnect() to do
    exactly this, whether they are interrupts from PCI devices or not.

    Personally, I would probably do what Michael suggested and use one ISR to
    handle all of the devices.


    Chris



  4. Re: intConnect() and multiple ISRs

    I checked the BSP of my hardware (MPC74xx). intConnect() only suports
    one ISR hook-up. Unless I use pciIntConnect(), I can not hook multiple
    ISRs to the same interrupt vector.

    My INT is indeed level-triggered.

    Thanks for your inputs!


  5. Re: intConnect() and multiple ISRs

    I checked the BSP of my hardware (MPC74xx). intConnect() only suports
    one ISR hook-up. Unless I use pciIntConnect(), I can not hook multiple
    ISRs to the same interrupt vector.

    My INT is indeed level-triggered.

    Thanks for your inputs!


  6. Re: intConnect() and multiple ISRs

    Definatlely use pciIntConnect() for multiple ISRs as it will "chain"
    these ISRs together.

    Jamie


+ Reply to Thread