[ros-dev] [ros-diffs] [cgutman] 36580: - Raise IRQL to DISPATCH_LEVEL before using KeAcquireSpinLockAtDpcLevel/KeReleaseSpinLockFromDpcLevel
Aleksey Bragin
aleksey at reactos.org
Mon Sep 29 11:11:37 CEST 2008
Is it really supposed to be so?
Why don't you just use KeAcquireSpinlock, which would save you the
current IRQL level?
For me it looks like a hack.
WBR,
Aleksey Bragin.
On Sep 28, 2008, at 11:58 PM, cgutman at svn.reactos.org wrote:
> Author: cgutman
> Date: Sun Sep 28 14:58:09 2008
> New Revision: 36580
>
> URL: http://svn.reactos.org/svn/reactos?rev=36580&view=rev
> Log:
> - Raise IRQL to DISPATCH_LEVEL before using
> KeAcquireSpinLockAtDpcLevel/KeReleaseSpinLockFromDpcLevel
>
> Modified:
> branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c
>
> Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/
> protocol.c
> URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-
> fixes/drivers/network/ndis/ndis/protocol.c?
> rev=36580&r1=36579&r2=36580&view=diff
> ======================================================================
> ========
> --- branches/aicom-network-fixes/drivers/network/ndis/ndis/
> protocol.c [iso-8859-1] (original)
> +++ branches/aicom-network-fixes/drivers/network/ndis/ndis/
> protocol.c [iso-8859-1] Sun Sep 28 14:58:09 2008
> @@ -67,6 +67,7 @@
> {
> UINT BufferedLength;
> UINT PacketLength;
> + KIRQL OldIrql;
>
> NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
>
> @@ -75,6 +76,8 @@
> #endif
>
> NdisQueryPacket(Packet, NULL, NULL, NULL, &PacketLength);
> +
> + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
>
> NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n"));
> KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock);
> @@ -102,6 +105,8 @@
> Adapter->NdisMiniportBlock.IndicatedPacket
> [KeGetCurrentProcessorNumber()] = NULL;
> }
> KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
> +
> + KeLowerIrql(OldIrql);
>
> return STATUS_SUCCESS;
> }
>
More information about the Ros-dev
mailing list