Pointers

      IRQI field irqi_pdirqHead points to the head of a chain of associated DIRQs.
    Locations
      airqi locates the table of IRQI entries.

      DIRQs are allocated dynamically from the kernel resident heap.

      The IRQI array is a static part of the OS2KRNL load module.

    VM Owners
      IRQI owner id: os2krnl (0xffaa).

      DIRQ owner id: intdirq (0xff78).

    Format

    IRQI

    ┌────────────────┬──────┬──────┬────┬────────────────────────────────────────┐│Field Name      │Offset│Length│Type│Description                             │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │irqi_pdirqHead  │+0    │4     │D   │Head of shared DD chain (0 = not set)   │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │irqi_usIRQNum   │+4    │2     │W   │IRQ number                              │
    ├────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │irqi_usFlags    │+6    │2     │W   │IRQ Flags                               │
    └────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
    

    irqi_usFlags flag definitions

    ┌────────────────┬────────┬────────────────────────────────────────┐
    │Name            │Bit Mask│Description                             │
    ├────────────────┼────────┼────────────────────────────────────────┤
    │                │0x0003  │reserved                                │
    ├────────────────┼────────┼────────────────────────────────────────┤
    │irqf_fVDM       │0x0004  │If set, this IRQ is a candidate for     │
    │                │        │routing to a VDM, if it is not claimed  │
    │                │        │by a PDD                                │
    ├────────────────┼────────┼────────────────────────────────────────┤
    │irqf_fNPX       │0x0008  │If set, the IRQ is the NPX interrupt    │
    │                │        │level                                   │
    ├────────────────┼────────┼────────────────────────────────────────┤
    │irqf_fSharing   │0x0010  │If set, the IRQ is sharable.  If clear  │
    │                │        │the IRQ can not be shared by DD.        │
    ├────────────────┼────────┼────────────────────────────────────────┤
    │irqf_fSys       │0x0020  │If set, the IRQ is owned by the system  │
    │                │        │and the handler can not be changed or   │
    │                │        │removed by a device driver.  Set        │
    │                │        │initially for the slave, IRQ 2.         │
    ├────────────────┼────────┼────────────────────────────────────────┤
    │irqf_fShared    │0x0040  │If set, the IRQ can be shared by more   │
    │                │        │than 1 DD.  This bit reflects the shared│
    │                │        │parameter of the first dh_SetIRQ issued │
    │                │        │for this level.                         │
    └────────────────┴────────┴────────────────────────────────────────┘
    

    DIRQ

    ┌────────────────────┬──────┬──────┬────┬────────────────────────────────────────┐
    │Field Name          │Offset│Length│Type│Description                             │
    ├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │dirq_pdirqLink      │+0    │4     │D   │Next DIRQ structure in list             │
    ├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │dirq_f16pfn         │+4    │4     │D   │DD's interrupt handler                  │
    ├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │dirq_usDS           │+8    │2     │W   │DD's data segment                       │
    ├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │dirq_usIRQNum       │+a    │2     │W   │IRQ number                              │
    ├────────────────────┼──────┼──────┼────┼────────────────────────────────────────┤
    │dirq_pdirqFreeList  │+c    │4     │D   │list of unset DIRQs                     │
    └────────────────────┴──────┴──────┴────┴────────────────────────────────────────┘
    


    [Back] [Next]