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