Fab writes: Is there similar logic for the release case?
Yes - Similar logic can be applied to the release side - MPI/DAPL/IPOIB testing
all passed.
--- C:/Users/scsmith/AppData/Local/Temp/cl_spinlock_osd.h-revBASE.svn000.tmp.h
Wed May 16 14:38:16 2012
+++
C:/Users/scsmith/Documents/openIB-windows/ofw/gen1/branches/WOF3-2/inc/kernel/complib/cl_spinlock_osd.h
Thu Apr 11 08:43:59 2013
@@ -91,15 +91,8 @@
cl_spinlock_acquire(
IN cl_spinlock_t* const p_spinlock )
{
- KIRQL irql = KeGetCurrentIrql();
CL_ASSERT( p_spinlock );
-
- if (irql == DISPATCH_LEVEL) {
- KeAcquireSpinLockAtDpcLevel( &p_spinlock->lock );
- p_spinlock->irql = irql;
- }
- else
- KeAcquireSpinLock( &p_spinlock->lock, &p_spinlock->irql );
+ KeAcquireSpinLock( &p_spinlock->lock, &p_spinlock->irql );
}
CL_INLINE void cl_spinlock_release(
#ifdef NTDDI_WIN8
@@ -114,10 +107,7 @@
{
CL_ASSERT( p_spinlock );
- if (p_spinlock->irql == DISPATCH_LEVEL)
- KeReleaseSpinLockFromDpcLevel( &p_spinlock->lock );
- else
- KeReleaseSpinLock( &p_spinlock->lock, p_spinlock->irql );
+ KeReleaseSpinLock( &p_spinlock->lock, p_spinlock->irql );
}
From: Fab Tillier [mailto:[email protected]]
Sent: Wednesday, April 10, 2013 10:29 AM
To: Smith, Stan
Subject: RE: cl_spinlock_osd.h
Is there similar logic for the release case?
CL_INLINE void cl_spinlock_release(
IN cl_spinlock_t* const p_spinlock )
{
CL_ASSERT( p_spinlock );
if (p_spinlock->irql == DISPATCH_LEVEL)
KeReleaseSpinLockFromDpcLevel( &p_spinlock->lock );
else
KeReleaseSpinLock( &p_spinlock->lock,
p_spinlock->irql );
}
?
Anyway, this looks good to me. It would be great to move away from complib
altogether (at least in the kernel drivers).
Cheers,
-Fab
From:
[email protected]<mailto:[email protected]>
[mailto:[email protected]] On Behalf Of Smith, Stan
Sent: Tuesday, April 9, 2013 4:25 PM
To: [email protected]<mailto:[email protected]>
Subject: [ofw] cl_spinlock_osd.h
Remove code which is duplicated in the implementation of MS code
KeAcquireSpinLock(), as indicated by our Microsoft OFA members.
Signed-off-by: [email protected]<mailto:[email protected]>
--- inc/kernel/complib/cl_spinlock_osd.h Wed Mar 06 10:12:19 2013
+++ inc/kernel/complib/cl_spinlock_osd.h Tue Feb 26 12:08:56 2013
@@ -91,15 +91,8 @@
cl_spinlock_acquire(
IN cl_spinlock_t* const p_spinlock )
{
- KIRQL irql = KeGetCurrentIrql();
CL_ASSERT( p_spinlock );
-
- if (irql == DISPATCH_LEVEL) {
- KeAcquireSpinLockAtDpcLevel( &p_spinlock->lock );
- p_spinlock->irql = irql;
- }
- else
- KeAcquireSpinLock( &p_spinlock->lock,
&p_spinlock->irql );
+ KeAcquireSpinLock( &p_spinlock->lock, &p_spinlock->irql );
}
Basically move from
CL_INLINE void
cl_spinlock_acquire(
IN cl_spinlock_t* const p_spinlock )
{
KIRQL irql = KeGetCurrentIrql();
CL_ASSERT( p_spinlock );
if (irql == DISPATCH_LEVEL) {
KeAcquireSpinLockAtDpcLevel( &p_spinlock->lock
);
p_spinlock->irql = irql;
}
else
KeAcquireSpinLock( &p_spinlock->lock,
&p_spinlock->irql );
}
To
CL_INLINE void
cl_spinlock_acquire(
IN cl_spinlock_t* const p_spinlock )
{
CL_ASSERT( p_spinlock );
KeAcquireSpinLock( &p_spinlock->lock, &p_spinlock->irql );
}
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw