hbirr(a)svn.reactos.com wrote:
 - Implemented KeAcquireInterruptSpinLock and
KeReleaseInterruptSpinLock.
- Implemented the interrupt handling for smp machines.
Updated files:
trunk/reactos/include/ddk/kefuncs.h
trunk/reactos/include/ntos/zwtypes.h
trunk/reactos/ntoskrnl/io/irq.c
trunk/reactos/ntoskrnl/ke/i386/irq.c
trunk/reactos/ntoskrnl/ke/spinlock.c
_______________________________________________
Ros-svn mailing list
Ros-svn(a)reactos.com
http://reactos.com:8080/mailman/listinfo/ros-svn
 Hi,
Thanks for adding this feature to the kernel, I only have one problem
with it... Would it be possible to modify the code to use the documented
KINTERRUPT structure? This would (already does) wreck havoc on the new
header system, which uses documented Windows structures (except in
extreme cases where our code is very old, and those structures were
unavailable, ie the Ob Manager structures... although enventually that
code will have to be updated).
The correct KINTERRUPT structure is:
typedef struct _KINTERRUPT {
    CSHORT              Type;
    CSHORT              Size;
    LIST_ENTRY          InterruptListEntry;
    PKSERVICE_ROUTINE   ServiceRoutine;
    PVOID               ServiceContext;
    KSPIN_LOCK          SpinLock;
    ULONG               TickCount;
    PKSPIN_LOCK         ActualLock;
    PVOID               DispatchAddress;
    ULONG               Vector;
    KIRQL               Irql;
    KIRQL               SynchronizeIrql;
    BOOLEAN             FloatingSave;
    BOOLEAN             Connected;
    CHAR                Number;
    UCHAR               ShareVector;
    KINTERRUPT_MODE     Mode;
    ULONG               ServiceCount;
    ULONG               DispatchCount;
    ULONG               DispatchCode[106];
} *KINTERRUPT*, *PKINTERRUPT;
vs ours:
typedef struct _KINTERRUPT
{
   ULONG Vector;
   KAFFINITY ProcessorEnableMask;
   KSPIN_LOCK SpinLock;
   PKSPIN_LOCK ActualLock;
   BOOLEAN Shareable;
   BOOLEAN FloatingSave;
   CHAR ProcessorNumber;
   PKSERVICE_ROUTINE ServiceRoutine;
   PVOID ServiceContext;
   LIST_ENTRY Entry;
   KIRQL Irql;
   KIRQL SynchLevel;
   KINTERRUPT_MODE InterruptMode;
} KINTERRUPT;
Type/Size are Windows Ob Manager headers for each Object...if you look
in KOBJECTS you'll find the right value...but we don't check for this
yet, so it's not important yet. I don't know what "Shareable" is
however. But we only need to rename/reposition some of the items.
ProcessorEnableMask also seems to be missing in the real defintion.
If you'd be kind enough to do these changes, I would really appreciate
it. If you have any comments, let me know.
Best regards, and happy new year,
Alex Ionescu