xref: /reactos/win32ss/drivers/videoprt/spinlock.c (revision c2c66aff)
1 /*
2  * VideoPort driver
3  *
4  * Copyright (C) 2002, 2003, 2004 ReactOS Team
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  */
21 
22 #include "videoprt.h"
23 
24 #define NDEBUG
25 #include <debug.h>
26 
27 /*
28  * @implemented
29  */
30 
31 VP_STATUS NTAPI
VideoPortCreateSpinLock(IN PVOID HwDeviceExtension,OUT PSPIN_LOCK * SpinLock)32 VideoPortCreateSpinLock(
33    IN PVOID HwDeviceExtension,
34    OUT PSPIN_LOCK *SpinLock)
35 {
36    TRACE_(VIDEOPRT, "VideoPortCreateSpinLock\n");
37    *SpinLock = ExAllocatePool(NonPagedPool, sizeof(KSPIN_LOCK));
38    if (*SpinLock == NULL)
39       return ERROR_NOT_ENOUGH_MEMORY;
40    KeInitializeSpinLock((PKSPIN_LOCK)*SpinLock);
41    return NO_ERROR;
42 }
43 
44 /*
45  * @implemented
46  */
47 
48 VP_STATUS NTAPI
VideoPortDeleteSpinLock(IN PVOID HwDeviceExtension,IN PSPIN_LOCK SpinLock)49 VideoPortDeleteSpinLock(
50    IN PVOID HwDeviceExtension,
51    IN PSPIN_LOCK SpinLock)
52 {
53    TRACE_(VIDEOPRT, "VideoPortDeleteSpinLock\n");
54    ExFreePool(SpinLock);
55    return NO_ERROR;
56 }
57 
58 /*
59  * @implemented
60  */
61 
62 VOID NTAPI
VideoPortAcquireSpinLock(IN PVOID HwDeviceExtension,IN PSPIN_LOCK SpinLock,OUT PUCHAR OldIrql)63 VideoPortAcquireSpinLock(
64    IN PVOID HwDeviceExtension,
65    IN PSPIN_LOCK SpinLock,
66    OUT PUCHAR OldIrql)
67 {
68    TRACE_(VIDEOPRT, "VideoPortAcquireSpinLock\n");
69    KeAcquireSpinLock((PKSPIN_LOCK)SpinLock, OldIrql);
70 }
71 
72 /*
73  * @implemented
74  */
75 
76 VOID NTAPI
VideoPortAcquireSpinLockAtDpcLevel(IN PVOID HwDeviceExtension,IN PSPIN_LOCK SpinLock)77 VideoPortAcquireSpinLockAtDpcLevel(
78    IN PVOID HwDeviceExtension,
79    IN PSPIN_LOCK SpinLock)
80 {
81    TRACE_(VIDEOPRT, "VideoPortAcquireSpinLockAtDpcLevel\n");
82    KeAcquireSpinLockAtDpcLevel((PKSPIN_LOCK)SpinLock);
83 }
84 
85 /*
86  * @implemented
87  */
88 
89 VOID NTAPI
VideoPortReleaseSpinLock(IN PVOID HwDeviceExtension,IN PSPIN_LOCK SpinLock,IN UCHAR NewIrql)90 VideoPortReleaseSpinLock(
91    IN PVOID HwDeviceExtension,
92    IN PSPIN_LOCK SpinLock,
93    IN UCHAR NewIrql)
94 {
95    TRACE_(VIDEOPRT, "VideoPortReleaseSpinLock\n");
96    KeReleaseSpinLock((PKSPIN_LOCK)SpinLock, NewIrql);
97 }
98 
99 /*
100  * @implemented
101  */
102 
103 VOID NTAPI
VideoPortReleaseSpinLockFromDpcLevel(IN PVOID HwDeviceExtension,IN PSPIN_LOCK SpinLock)104 VideoPortReleaseSpinLockFromDpcLevel(
105    IN PVOID HwDeviceExtension,
106    IN PSPIN_LOCK SpinLock)
107 {
108    TRACE_(VIDEOPRT, "VideoPortReleaseSpinLockFromDpcLevel\n");
109    KeReleaseSpinLockFromDpcLevel((PKSPIN_LOCK)SpinLock);
110 }
111