2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS System Libraries
5 * PURPOSE: Run-Time Libary Internal Header
6 * PROGRAMMER: Alex Ionescu
9 /* INCLUDES ******************************************************************/
11 /* PAGED_CODE equivalent for user-mode RTL */
13 extern VOID FASTCALL
CHECK_PAGED_CODE_RTL(char *file
, int line
);
14 #define PAGED_CODE_RTL() CHECK_PAGED_CODE_RTL(__FILE__, __LINE__)
16 #define PAGED_CODE_RTL()
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)))
29 #define ROUND_DOWN(n, align) \
30 (((ULONG)n) & ~((align) - 1l))
32 #define ROUND_UP(n, align) \
33 ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
37 RtlpGetStackLimits(PULONG_PTR StackBase
,
38 PULONG_PTR StackLimit
);
40 PEXCEPTION_REGISTRATION_RECORD
42 RtlpGetExceptionList(VOID
);
46 RtlpSetExceptionList(PEXCEPTION_REGISTRATION_RECORD NewExceptionList
);
50 RtlCallVectoredExceptionHandlers(
51 IN PEXCEPTION_RECORD ExceptionRecord
,
55 typedef struct _DISPATCHER_CONTEXT
57 PEXCEPTION_REGISTRATION_RECORD RegistrationPointer
;
58 } DISPATCHER_CONTEXT
, *PDISPATCHER_CONTEXT
;
60 /* These provide support for sharing code between User and Kernel RTL */
79 RtlpCaptureStackLimits(
81 IN ULONG_PTR
*StackBegin
,
82 IN ULONG_PTR
*StackEnd
87 RtlDeleteHeapLock(PRTL_CRITICAL_SECTION CriticalSection
);
91 RtlEnterHeapLock(PRTL_CRITICAL_SECTION CriticalSection
);
95 RtlInitializeHeapLock(PRTL_CRITICAL_SECTION CriticalSection
);
99 RtlLeaveHeapLock(PRTL_CRITICAL_SECTION CriticalSection
);
103 RtlpCheckForActiveDebugger(BOOLEAN Type
);
107 RtlpHandleDpcStackException(IN PEXCEPTION_REGISTRATION_RECORD RegistrationFrame
,
108 IN ULONG_PTR RegistrationFrameEnd
,
109 IN OUT PULONG_PTR StackLow
,
110 IN OUT PULONG_PTR StackHigh
);
112 #define RtlpAllocateStringMemory RtlpAllocateMemory
113 #define RtlpFreeStringMemory RtlpFreeMemory
117 RtlpSetInDbgPrint(IN BOOLEAN NewValue
);
121 EXCEPTION_DISPOSITION
123 RtlpExecuteHandlerForException(PEXCEPTION_RECORD ExceptionRecord
,
124 PEXCEPTION_REGISTRATION_RECORD RegistrationFrame
,
126 PVOID DispatcherContext
,
127 PEXCEPTION_ROUTINE ExceptionHandler
);
129 EXCEPTION_DISPOSITION
131 RtlpExecuteHandlerForUnwind(PEXCEPTION_RECORD ExceptionRecord
,
132 PEXCEPTION_REGISTRATION_RECORD RegistrationFrame
,
134 PVOID DispatcherContext
,
135 PEXCEPTION_ROUTINE ExceptionHandler
);
139 RtlpCheckLogException(IN PEXCEPTION_RECORD ExceptionRecord
,
140 IN PCONTEXT ContextRecord
,
141 IN PVOID ContextData
,
146 RtlpGetExceptionAddress(VOID
);
150 RtlpCaptureContext(OUT PCONTEXT ContextRecord
);
155 DebugService(IN ULONG Service
,
156 IN
const void* Buffer
,
163 DebugService2(IN PVOID Argument1
,
167 /* Tags for the String Allocators */
168 #define TAG_USTR TAG('U', 'S', 'T', 'R')
169 #define TAG_ASTR TAG('A', 'S', 'T', 'R')
170 #define TAG_OSTR TAG('O', 'S', 'T', 'R')
174 extern HANDLE TimerThreadHandle
;
177 RtlpInitializeTimerThread(VOID
);