spaces -> tabs
[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 #if 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 #ifdef _PPC_
20 #define SWAPD(x) ((((x)&0xff)<<24)|(((x)&0xff00)<<8)|(((x)>>8)&0xff00)|(((x)>>24)&0xff))
21 #define SWAPW(x) ((((x)&0xff)<<8)|(((x)>>8)&0xff))
22 #define SWAPQ(x) ((SWAPD((x)&0xffffffff) << 32) | (SWAPD((x)>>32)))
23 #else
24 #define SWAPD(x) (x)
25 #define SWAPW(x) (x)
26 #define SWAPQ(x) (x)
27 #endif
28
29 #define ROUND_DOWN(n, align) \
30 (((ULONG)n) & ~((align) - 1l))
31
32 #define ROUND_UP(n, align) \
33 ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
34
35 VOID
36 NTAPI
37 RtlpGetStackLimits(PULONG_PTR StackBase,
38 PULONG_PTR StackLimit);
39
40 PEXCEPTION_REGISTRATION_RECORD
41 NTAPI
42 RtlpGetExceptionList(VOID);
43
44 VOID
45 NTAPI
46 RtlpSetExceptionList(PEXCEPTION_REGISTRATION_RECORD NewExceptionList);
47
48 BOOLEAN
49 NTAPI
50 RtlCallVectoredExceptionHandlers(
51 IN PEXCEPTION_RECORD ExceptionRecord,
52 IN PCONTEXT Context
53 );
54
55 typedef struct _DISPATCHER_CONTEXT
56 {
57 PEXCEPTION_REGISTRATION_RECORD RegistrationPointer;
58 } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;
59
60 /* These provide support for sharing code between User and Kernel RTL */
61 PVOID
62 NTAPI
63 RtlpAllocateMemory(
64 ULONG Bytes,
65 ULONG Tag);
66
67 VOID
68 NTAPI
69 RtlpFreeMemory(
70 PVOID Mem,
71 ULONG Tag);
72
73 KPROCESSOR_MODE
74 NTAPI
75 RtlpGetMode(VOID);
76
77 BOOLEAN
78 NTAPI
79 RtlpCaptureStackLimits(
80 IN ULONG_PTR Ebp,
81 IN ULONG_PTR *StackBegin,
82 IN ULONG_PTR *StackEnd
83 );
84
85 NTSTATUS
86 NTAPI
87 RtlDeleteHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
88
89 NTSTATUS
90 NTAPI
91 RtlEnterHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
92
93 NTSTATUS
94 NTAPI
95 RtlInitializeHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
96
97 NTSTATUS
98 NTAPI
99 RtlLeaveHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
100
101 BOOLEAN
102 NTAPI
103 RtlpCheckForActiveDebugger(VOID);
104
105 BOOLEAN
106 NTAPI
107 RtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
108 IN ULONG_PTR RegistrationFrameEnd,
109 IN OUT PULONG_PTR StackLow,
110 IN OUT PULONG_PTR StackHigh);
111
112 #define RtlpAllocateStringMemory RtlpAllocateMemory
113 #define RtlpFreeStringMemory RtlpFreeMemory
114
115 BOOLEAN
116 NTAPI
117 RtlpSetInDbgPrint(
118 VOID
119 );
120
121 VOID
122 NTAPI
123 RtlpClearInDbgPrint(
124 VOID
125 );
126
127 /* i386/except.S */
128
129 EXCEPTION_DISPOSITION
130 NTAPI
131 RtlpExecuteHandlerForException(PEXCEPTION_RECORD ExceptionRecord,
132 PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
133 PCONTEXT Context,
134 PVOID DispatcherContext,
135 PEXCEPTION_ROUTINE ExceptionHandler);
136
137 EXCEPTION_DISPOSITION
138 NTAPI
139 RtlpExecuteHandlerForUnwind(PEXCEPTION_RECORD ExceptionRecord,
140 PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
141 PCONTEXT Context,
142 PVOID DispatcherContext,
143 PEXCEPTION_ROUTINE ExceptionHandler);
144
145 VOID
146 NTAPI
147 RtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord,
148 IN PCONTEXT ContextRecord,
149 IN PVOID ContextData,
150 IN ULONG Size);
151
152 VOID
153 NTAPI
154 RtlpCaptureContext(OUT PCONTEXT ContextRecord);
155
156 //
157 // Debug Service calls
158 //
159 ULONG
160 NTAPI
161 DebugService(
162 IN ULONG Service,
163 IN PVOID Argument1,
164 IN PVOID Argument2,
165 IN PVOID Argument3,
166 IN PVOID Argument4
167 );
168
169 VOID
170 NTAPI
171 DebugService2(
172 IN PVOID Argument1,
173 IN PVOID Argument2,
174 IN ULONG Service
175 );
176
177 /* Tags for the String Allocators */
178 #define TAG_USTR 'RTSU'
179 #define TAG_ASTR 'RTSA'
180 #define TAG_OSTR 'RTSO'
181
182 /* Timer Queue */
183
184 extern HANDLE TimerThreadHandle;
185
186 NTSTATUS
187 RtlpInitializeTimerThread(VOID);
188
189 /* EOF */