- Remove deprecated CHECKPOINT/CHECKPOINT1 macros which basically translated into...
[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 #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 #else
23 #define SWAPD(x) x
24 #define SWAPW(x) x
25 #endif
26
27 VOID
28 NTAPI
29 RtlpGetStackLimits(PULONG_PTR StackBase,
30 PULONG_PTR StackLimit);
31
32 PEXCEPTION_REGISTRATION_RECORD
33 NTAPI
34 RtlpGetExceptionList(VOID);
35
36 VOID
37 NTAPI
38 RtlpSetExceptionList(PEXCEPTION_REGISTRATION_RECORD NewExceptionList);
39
40 typedef struct _DISPATCHER_CONTEXT
41 {
42 PEXCEPTION_REGISTRATION_RECORD RegistrationPointer;
43 } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;
44
45 /* These provide support for sharing code between User and Kernel RTL */
46 PVOID
47 NTAPI
48 RtlpAllocateMemory(
49 ULONG Bytes,
50 ULONG Tag);
51
52 VOID
53 NTAPI
54 RtlpFreeMemory(
55 PVOID Mem,
56 ULONG Tag);
57
58 KPROCESSOR_MODE
59 NTAPI
60 RtlpGetMode(VOID);
61
62 BOOLEAN
63 NTAPI
64 RtlpCaptureStackLimits(
65 IN ULONG_PTR Ebp,
66 IN ULONG_PTR *StackBegin,
67 IN ULONG_PTR *StackEnd
68 );
69
70 NTSTATUS
71 NTAPI
72 RtlDeleteHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
73
74 NTSTATUS
75 NTAPI
76 RtlEnterHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
77
78 NTSTATUS
79 NTAPI
80 RtlInitializeHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
81
82 NTSTATUS
83 NTAPI
84 RtlLeaveHeapLock(PRTL_CRITICAL_SECTION CriticalSection);
85
86 BOOLEAN
87 NTAPI
88 RtlpCheckForActiveDebugger(BOOLEAN Type);
89
90 BOOLEAN
91 NTAPI
92 RtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
93 IN ULONG_PTR RegistrationFrameEnd,
94 IN OUT PULONG_PTR StackLow,
95 IN OUT PULONG_PTR StackHigh);
96
97 #define RtlpAllocateStringMemory RtlpAllocateMemory
98 #define RtlpFreeStringMemory RtlpFreeMemory
99
100 BOOLEAN
101 NTAPI
102 RtlpSetInDbgPrint(IN BOOLEAN NewValue);
103
104 /* i386/except.S */
105
106 EXCEPTION_DISPOSITION
107 NTAPI
108 RtlpExecuteHandlerForException(PEXCEPTION_RECORD ExceptionRecord,
109 PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
110 PCONTEXT Context,
111 PVOID DispatcherContext,
112 PEXCEPTION_ROUTINE ExceptionHandler);
113
114 EXCEPTION_DISPOSITION
115 NTAPI
116 RtlpExecuteHandlerForUnwind(PEXCEPTION_RECORD ExceptionRecord,
117 PEXCEPTION_REGISTRATION_RECORD RegistrationFrame,
118 PCONTEXT Context,
119 PVOID DispatcherContext,
120 PEXCEPTION_ROUTINE ExceptionHandler);
121
122 VOID
123 NTAPI
124 RtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord,
125 IN PCONTEXT ContextRecord,
126 IN PVOID ContextData,
127 IN ULONG Size);
128
129 PVOID
130 NTAPI
131 RtlpGetExceptionAddress(VOID);
132
133 VOID
134 NTAPI
135 RtlpCaptureContext(OUT PCONTEXT ContextRecord);
136
137 /* i386/debug.S */
138 NTSTATUS
139 NTAPI
140 DebugService(IN ULONG Service,
141 IN const void* Buffer,
142 IN ULONG Length,
143 IN PVOID Argument1,
144 IN PVOID Argument2);
145
146 NTSTATUS
147 NTAPI
148 DebugService2(IN PVOID Argument1,
149 IN PVOID Argument2,
150 IN ULONG Service);
151
152 /* Tags for the String Allocators */
153 #define TAG_USTR TAG('U', 'S', 'T', 'R')
154 #define TAG_ASTR TAG('A', 'S', 'T', 'R')
155 #define TAG_OSTR TAG('O', 'S', 'T', 'R')
156
157 /* Timer Queue */
158
159 extern HANDLE TimerThreadHandle;
160
161 NTSTATUS
162 RtlpInitializeTimerThread(VOID);
163
164 /* EOF */