4aa774a61f09f412f9e53386aaba8453fad543ab
[reactos.git] / include / rosrtl / thread.h
1 /* $Id$
2  */
3
4 #ifdef __cplusplus
5 extern "C"
6 {
7 #endif
8
9 NTSTATUS NTAPI RtlRosCreateUserThread
10 (
11  IN HANDLE ProcessHandle,
12  IN POBJECT_ATTRIBUTES ObjectAttributes,
13  IN BOOLEAN CreateSuspended,
14  IN LONG StackZeroBits,
15  IN OUT PULONG StackReserve OPTIONAL,
16  IN OUT PULONG StackCommit OPTIONAL,
17  IN PVOID StartAddress,
18  OUT PHANDLE ThreadHandle OPTIONAL,
19  OUT PCLIENT_ID ClientId OPTIONAL,
20  IN ULONG ParameterCount,
21  IN ULONG_PTR * Parameters
22 );
23
24 NTSTATUS CDECL RtlRosCreateUserThreadVa
25 (
26  IN HANDLE ProcessHandle,
27  IN POBJECT_ATTRIBUTES ObjectAttributes,
28  IN BOOLEAN CreateSuspended,
29  IN LONG StackZeroBits,
30  IN OUT PULONG StackReserve OPTIONAL,
31  IN OUT PULONG StackCommit OPTIONAL,
32  IN PVOID StartAddress,
33  OUT PHANDLE ThreadHandle OPTIONAL,
34  OUT PCLIENT_ID ClientId OPTIONAL,
35  IN ULONG ParameterCount,
36  ...
37 );
38
39 NTSTATUS NTAPI RtlRosInitializeContext
40 (
41  IN HANDLE ProcessHandle,
42  OUT PCONTEXT Context,
43  IN PVOID StartAddress,
44  IN PUSER_STACK UserStack,
45  IN ULONG ParameterCount,
46  IN ULONG_PTR * Parameters
47 );
48
49 NTSTATUS NTAPI RtlRosCreateStack
50 (
51  IN HANDLE ProcessHandle,
52  OUT PUSER_STACK UserStack,
53  IN LONG StackZeroBits,
54  IN OUT PULONG StackReserve OPTIONAL,
55  IN OUT PULONG StackCommit OPTIONAL
56 );
57
58 NTSTATUS NTAPI RtlRosDeleteStack
59 (
60  IN HANDLE ProcessHandle,
61  IN PUSER_STACK UserStack
62 );
63
64 /* Private functions - for ROSRTL internal use only */
65 NTSTATUS NTAPI RtlpRosGetStackLimits
66 (
67  IN PUSER_STACK UserStack,
68  OUT PVOID * StackBase,
69  OUT PVOID * StackLimit
70 );
71
72 NTSTATUS NTAPI RtlpRosValidateLinearUserStack
73 (
74  IN PVOID StackBase,
75  IN PVOID StackLimit,
76  IN BOOLEAN Direction
77 );
78
79 #define RtlpRosValidateTopDownUserStack(__B__, __L__) \
80  (RtlpRosValidateLinearUserStack((__B__), (__L__), FALSE))
81
82 #define RtlpRosValidateDownTopUserStack(__B__, __L__) \
83  (RtlpRosValidateLinearUserStack((__B__), (__L__), TRUE))
84
85 #ifdef __cplusplus
86 }
87 #endif
88
89 /* EOF */