hbirr@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@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