3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/rtl/libsupp.c
6 * PURPOSE: Rtl library support routines
8 * PROGRAMMERS: No programmer listed.
11 /* INCLUDES ******************************************************************/
14 #include <internal/ps.h>
16 #include <internal/debug.h>
18 //FIXME: sort this out somehow. IAI: Sorted in new header branch
19 #define PRTL_CRITICAL_SECTION PVOID
21 /* FUNCTIONS *****************************************************************/
34 RtlAcquirePebLock(VOID
)
43 RtlReleasePebLock(VOID
)
53 return ((PEPROCESS
)(KeGetCurrentThread()->ApcState
.Process
))->Peb
;
58 RtlDeleteCriticalSection(
59 PRTL_CRITICAL_SECTION CriticalSection
)
61 return STATUS_SUCCESS
;
66 RtlSetCriticalSectionSpinCount(
67 PRTL_CRITICAL_SECTION CriticalSection
,
76 RtlEnterCriticalSection(
77 PRTL_CRITICAL_SECTION CriticalSection
)
79 ExAcquireFastMutex((PFAST_MUTEX
) CriticalSection
);
80 return STATUS_SUCCESS
;
85 RtlInitializeCriticalSection(
86 PRTL_CRITICAL_SECTION CriticalSection
)
88 ExInitializeFastMutex((PFAST_MUTEX
)CriticalSection
);
89 return STATUS_SUCCESS
;
94 RtlLeaveCriticalSection(
95 PRTL_CRITICAL_SECTION CriticalSection
)
97 ExReleaseFastMutex((PFAST_MUTEX
) CriticalSection
);
98 return STATUS_SUCCESS
;
103 RtlTryEnterCriticalSection(
104 PRTL_CRITICAL_SECTION CriticalSection
)
106 return ExTryToAcquireFastMutex((PFAST_MUTEX
) CriticalSection
);
112 RtlInitializeCriticalSectionAndSpinCount(
113 PRTL_CRITICAL_SECTION CriticalSection
,
116 ExInitializeFastMutex((PFAST_MUTEX
)CriticalSection
);
117 return STATUS_SUCCESS
;
123 CHECK_PAGED_CODE_RTL(char *file
, int line
)
125 if(KeGetCurrentIrql() > APC_LEVEL
)
127 DbgPrint("%s:%i: Pagable code called at IRQL > APC_LEVEL (%d)\n", file
, line
, KeGetCurrentIrql());