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