cf55f7b2a57603a3d7305a75addc9ed5cbeb15a2
[reactos.git] / reactos / lib / rtl / rtlp.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
4 * FILE: lib/rtl/rtlp.h
5 * PURPOSE: Run-Time Libary Internal Header
6 * PROGRAMMER: Alex Ionescu
7 */
8
9 /* INCLUDES ******************************************************************/
10
11 /* PAGED_CODE equivalent for user-mode RTL */
12 #ifdef DBG
13 extern VOID FASTCALL CHECK_PAGED_CODE_RTL(char *file, int line);
14 #define PAGED_CODE_RTL() CHECK_PAGED_CODE_RTL(__FILE__, __LINE__)
15 #else
16 #define PAGED_CODE_RTL()
17 #endif
18
19 VOID
20 NTAPI
21 RtlpGetStackLimits(PULONG_PTR StackBase,
22 PULONG_PTR StackLimit);
23
24 PEXCEPTION_REGISTRATION_RECORD
25 NTAPI
26 RtlpGetExceptionList(VOID);
27
28 VOID
29 NTAPI
30 RtlpSetExceptionList(PEXCEPTION_REGISTRATION_RECORD NewExceptionList);
31
32 typedef struct _DISPATCHER_CONTEXT
33 {
34 PEXCEPTION_REGISTRATION_RECORD RegistrationPointer;
35 } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;
36
37 /* These provide support for sharing code between User and Kernel RTL */
38 PVOID
39 NTAPI
40 RtlpAllocateMemory(
41 ULONG Bytes,
42 ULONG Tag);
43
44 VOID
45 NTAPI
46 RtlpFreeMemory(
47 PVOID Mem,
48 ULONG Tag);
49
50 KPROCESSOR_MODE
51 NTAPI
52 RtlpGetMode(VOID);
53
54 BOOLEAN
55 NTAPI
56 RtlpCaptureStackLimits(
57 IN ULONG_PTR Ebp,
58 IN ULONG_PTR *StackBegin,
59 IN ULONG_PTR *StackEnd
60 );
61
62 NTSTATUS
63 NTAPI
64 RtlDeleteHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
65
66 NTSTATUS
67 NTAPI
68 RtlEnterHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
69
70 NTSTATUS
71 NTAPI
72 RtlInitializeHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
73
74 NTSTATUS
75 NTAPI
76 RtlLeaveHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
77
78 BOOLEAN
79 NTAPI
80 RtlpCheckForActiveDebugger(BOOLEAN Type);
81
82 BOOLEAN
83 NTAPI
84 RtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
85 IN ULONG_PTR RegistrationFrameEnd,
86 IN OUT PULONG_PTR StackLow,
87 IN OUT PULONG_PTR StackHigh);
88
89 #define RtlpAllocateStringMemory RtlpAllocateMemory
90 #define RtlpFreeStringMemory RtlpFreeMemory
91
92 BOOLEAN
93 NTAPI
94 RtlpSetInDbgPrint(IN BOOLEAN NewValue);
95
96 /* i386/except.S */
97
98 EXCEPTION_DISPOSITION
99 NTAPI
100 RtlpExecuteHandlerForException(PEXCEPTION_RECORD ExceptionRecord,
101 PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
102 PCONTEXT Context,
103 PVOID DispatcherContext,
104 PEXCEPTION_ROUTINE ExceptionHandler);
105
106 EXCEPTION_DISPOSITION
107 NTAPI
108 RtlpExecuteHandlerForUnwind(PEXCEPTION_RECORD ExceptionRecord,
109 PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
110 PCONTEXT Context,
111 PVOID DispatcherContext,
112 PEXCEPTION_ROUTINE ExceptionHandler);
113
114 VOID
115 NTAPI
116 RtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord,
117 IN PCONTEXT ContextRecord,
118 IN PVOID ContextData,
119 IN ULONG Size);
120
121 PVOID
122 NTAPI
123 RtlpGetExceptionAddress(VOID);
124
125 VOID
126 NTAPI
127 RtlpCaptureContext(OUT PCONTEXT ContextRecord);
128
129 /* i386/debug.S */
130 NTSTATUS
131 NTAPI
132 DebugService(IN ULONG Service,
133 IN const void* Buffer,
134 IN ULONG Length,
135 IN PVOID Argument1,
136 IN PVOID Argument2);
137
138 NTSTATUS
139 NTAPI
140 DebugService2(IN PVOID Argument1,
141 IN PVOID Argument2,
142 IN ULONG Service);
143
144 /* Tags for the String Allocators */
145 #define TAG_USTR TAG('U', 'S', 'T', 'R')
146 #define TAG_ASTR TAG('A', 'S', 'T', 'R')
147 #define TAG_OSTR TAG('O', 'S', 'T', 'R')
148
149 /* Timer Queue */
150
151 extern HANDLE TimerThreadHandle;
152
153 NTSTATUS
154 RtlpInitializeTimerThread(VOID);
155
156 /* EOF */