92 lines
2 KiB
C
92 lines
2 KiB
C
/*++
|
|
|
|
Copyright (c) 1989 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
tlock.c
|
|
|
|
Abstract:
|
|
|
|
Test program for exinterlockedincrement/decrement routines
|
|
|
|
Environment:
|
|
|
|
This program can either be compiled into a kernel mode test,
|
|
OR you can link intrloc2.obj or i386\intrlock.obj (or whatever)
|
|
into it and run it in user mode.
|
|
|
|
Author:
|
|
|
|
Bryan Willman (bryanwi) 3-Aug-90
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
#include "exp.h"
|
|
|
|
|
|
main()
|
|
{
|
|
INTERLOCKED_RESULT RetVal;
|
|
LONG SpinVar; // talk about a hack...
|
|
LONG LongVar;
|
|
SHORT ShortVar;
|
|
KSPIN_LOCK Lock;
|
|
|
|
Lock = &SpinVar;
|
|
|
|
LongVar = 0;
|
|
ShortVar = 0;
|
|
|
|
RetVal = ExInterlockedDecrementLong(&LongVar, &Lock);
|
|
if ((RetVal != ResultNegative) ||
|
|
(LongVar != -1)) {
|
|
DbgPrint("t&Lock failure #L1\n");
|
|
}
|
|
|
|
RetVal = ExInterlockedDecrementLong(&LongVar, &Lock);
|
|
if ((RetVal != ResultNegative) ||
|
|
(LongVar != -2)) {
|
|
DbgPrint("t&Lock failure #L2\n");
|
|
}
|
|
|
|
RetVal = ExInterlockedIncrementLong(&LongVar, &Lock);
|
|
if ((RetVal != ResultNegative) ||
|
|
(LongVar != -1)) {
|
|
DbgPrint("t&Lock failure #L3\n");
|
|
}
|
|
|
|
RetVal = ExInterlockedIncrementLong(&LongVar, &Lock);
|
|
if ((RetVal != ResultZero) ||
|
|
(LongVar != 0)) {
|
|
DbgPrint("t&Lock failure #L4\n");
|
|
}
|
|
|
|
RetVal = ExInterlockedIncrementLong(&LongVar, &Lock);
|
|
if ((RetVal != ResultPositive) ||
|
|
(LongVar != 1)) {
|
|
DbgPrint("t&Lock failure #L5\n");
|
|
}
|
|
|
|
RetVal = ExInterlockedIncrementLong(&LongVar, &Lock);
|
|
if ((RetVal != ResultPositive) ||
|
|
(LongVar != 2)) {
|
|
DbgPrint("t&Lock failure #L6\n");
|
|
}
|
|
|
|
RetVal = ExInterlockedDecrementLong(&LongVar, &Lock);
|
|
if ((RetVal != ResultPositive) ||
|
|
(LongVar != 1)) {
|
|
DbgPrint("t&Lock failure #L7\n");
|
|
}
|
|
|
|
RetVal = ExInterlockedDecrementLong(&LongVar, &Lock);
|
|
if ((RetVal != ResultZero) ||
|
|
(LongVar != 0)) {
|
|
DbgPrint("t&Lock failure #L8\n");
|
|
}
|
|
}
|