2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: include/types.h
5 * PURPOSE: Types used by all the parts of the system
6 * PROGRAMMER: David Welch <welch@cwcom.net>
7 * DEFINES: _WIN64: 64-bit architecture
8 * _WIN32: 32-bit architecture (default)
11 * 01/05/01: Portabillity changes
14 #ifndef __INCLUDE_ACPI_TYPES_H
15 #define __INCLUDE_ACPI_TYPES_H
17 /* Fixed precision types */
18 typedef signed char INT8, *PINT8;
19 typedef signed short INT16, *PINT16;
21 typedef signed int INT32, *PINT32;
23 typedef signed long long INT64, *PINT64;
25 typedef unsigned char UINT8, *PUINT8;
26 typedef unsigned short UINT16, *PUINT16;
27 typedef unsigned int UINT32, *PUINT32;
28 typedef unsigned long long UINT64, *PUINT64;
31 typedef signed long int LONG32, *PLONG32;
32 typedef unsigned long int ULONG32, *PULONG32;
33 typedef unsigned long int DWORD32, *PDWORD32;
38 /* 64-bit architecture */
40 typedef INT64 INT, *PINT;
41 typedef LONG64 LONG, *PLONG;
42 typedef DWORD64 DWORD, *PDWORD;
43 typedef UINT64 UINT, *PUINT;
44 typedef ULONG64 ULONG, *PULONG;
46 /* Pointer precision types */
47 typedef long long INT_PTR, *PINT_PTR;
48 typedef unsigned long long UINT_PTR, *PUINT_PTR;
49 typedef long long LONG_PTR, *PLONG_PTR;
50 typedef unsigned long long ULONG_PTR, *PULONG_PTR;
51 typedef unsigned long long HANDLE_PTR;
52 typedef unsigned int UHALF_PTR, *PUHALF_PTR;
53 typedef int HALF_PTR, *PHALF_PTR;
57 /* 32-bit architecture */
59 typedef INT32 INT, *PINT;
60 typedef LONG32 LONG, *PLONG;
61 typedef DWORD32 DWORD, *PDWORD;
62 typedef UINT32 UINT, *PUINT;
63 typedef ULONG32 ULONG, *PULONG;
66 /* Pointer precision types */
67 typedef int INT_PTR, *PINT_PTR;
68 typedef unsigned int UINT_PTR, *PUINT_PTR;
69 typedef long LONG_PTR, *PLONG_PTR;
70 typedef unsigned long ULONG_PTR, *PULONG_PTR;
71 typedef unsigned short UHALF_PTR, *PUHALF_PTR;
72 typedef short HALF_PTR, *PHALF_PTR;
73 typedef unsigned long HANDLE_PTR;
77 typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
79 typedef long long LONG64, *PLONG64;
81 typedef unsigned long long ULONG64, *PULONG64;
82 typedef unsigned long long DWORD64, *PDWORD64;
86 typedef unsigned char UCHAR;
88 typedef unsigned short USHORT;
89 typedef unsigned short WCHAR;
90 typedef unsigned short WORD;
93 typedef unsigned char BOOLEAN;
95 typedef BOOLEAN* PBOOLEAN;
96 typedef unsigned short *LPWSTR;
97 typedef unsigned short *PWSTR;
98 typedef unsigned char *PUCHAR;
99 typedef unsigned short *PUSHORT;
101 typedef unsigned char BYTE;
102 typedef void *LPVOID;
103 typedef float *PFLOAT;
104 typedef unsigned short *PWCH;
105 typedef unsigned short *PWORD;
107 typedef long long LONGLONG;
108 typedef unsigned long long ULONGLONG;
109 typedef long long *PLONGLONG;
110 typedef unsigned long long *PULONGLONG;
112 /* Check VOID before defining CHAR, SHORT */
121 typedef void *HANDLE;
123 typedef CCHAR *PCCHAR;
134 #define NULL ((void*)0)
135 #endif /* __cplusplus */
138 typedef const unsigned short *PCWSTR;
142 typedef union _LARGE_INTEGER
149 #ifdef ANONYMOUSUNIONS
155 #endif /* ANONYMOUSUNIONS */
157 } LARGE_INTEGER, *PLARGE_INTEGER;
159 typedef union _ULARGE_INTEGER
166 #ifdef ANONYMOUSUNIONS
172 #endif /* ANONYMOUSUNIONS */
174 } ULARGE_INTEGER, *PULARGE_INTEGER;
176 typedef struct _FILETIME
179 DWORD dwHighDateTime;
180 } FILETIME, *LPFILETIME, *PFILETIME;
185 #define STDCALL __attribute__ ((stdcall))
186 #define CDECL __attribute((cdecl))
187 #define CALLBACK WINAPI
188 #define PASCAL WINAPI
196 typedef struct _LIST_ENTRY {
197 struct _LIST_ENTRY *Flink;
198 struct _LIST_ENTRY *Blink;
199 } LIST_ENTRY, *PLIST_ENTRY;
201 typedef struct _SINGLE_LIST_ENTRY {
202 struct _SINGLE_LIST_ENTRY *Next;
203 } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
205 typedef DWORD STDCALL (*PTHREAD_START_ROUTINE) (LPVOID);
206 typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
208 typedef unsigned short *PWCHAR;
211 #define CONTEXT_CONTROL 1L
212 #define CONTEXT_FLOATING_POINT 2L
213 #define CONTEXT_INTEGER 4L
214 #define CONTEXT_DEBUG_REGISTERS 8L
216 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
217 #define CONTEXT_DEBUGGER (CONTEXT_FULL)
220 /* The doc refered me to winnt.h, so I had to look... */
221 #define SIZE_OF_80387_REGISTERS 80
223 /* Values for contextflags */
224 #define CONTEXT_i386 0x10000
225 #define CONTEXT_CONTROL (CONTEXT_i386 | 1)
226 #define CONTEXT_INTEGER (CONTEXT_i386 | 2)
227 #define CONTEXT_SEGMENTS (CONTEXT_i386 | 4)
228 #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 8)
229 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x10)
230 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
232 /* our own invention */
233 #define FLAG_TRACE_BIT 0x100
234 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
240 typedef struct _FLOATING_SAVE_AREA {
248 BYTE RegisterArea[80];
250 } FLOATING_SAVE_AREA;
252 typedef struct _CONTEXT {
262 FLOATING_SAVE_AREA FloatSave;
282 } CONTEXT, *PCONTEXT, *LPCONTEXT;
288 /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
323 /* Integer registers returned when CONTEXT_INTEGER is set. */
357 DWORD Cr; /* Condition register */
358 DWORD Xer; /* Fixed point exception register */
360 /* The following are set when CONTEXT_CONTROL is set. */
361 DWORD Msr; /* Machine status register */
362 DWORD Iar; /* Instruction address register */
363 DWORD Lr; /* Link register */
364 DWORD Ctr; /* Control register */
366 /* Control which context values are returned */
370 /* Registers returned if CONTEXT_DEBUG_REGISTERS is set. */
371 DWORD Dr0; /* Breakpoint Register 1 */
372 DWORD Dr1; /* Breakpoint Register 2 */
373 DWORD Dr2; /* Breakpoint Register 3 */
374 DWORD Dr3; /* Breakpoint Register 4 */
375 DWORD Dr4; /* Breakpoint Register 5 */
376 DWORD Dr5; /* Breakpoint Register 6 */
377 DWORD Dr6; /* Debug Status Register */
378 DWORD Dr7; /* Debug Control Register */
379 } CONTEXT, *PCONTEXT, *LPCONTEXT;
382 typedef HANDLE *PHANDLE;
384 typedef struct value_ent {
389 } WVALENT, *PWVALENT;
392 typedef const void *LPCVOID;
393 typedef BYTE *LPBYTE, *PBYTE;
398 typedef DWORD *PLCID;
400 typedef const char *LPCSTR;
404 typedef const unsigned short *LPCWSTR;
406 typedef unsigned short RTL_ATOM;
407 typedef unsigned short *PRTL_ATOM;
410 typedef struct _COORD {
415 typedef struct _SMALL_RECT {
420 } SMALL_RECT, *PSMALL_RECT;
426 LPVOID lpArgToCompletionRoutine,
427 DWORD dwTimerLowValue,
428 DWORD dwTimerHighValue
431 #include <ntos/except.h>
433 #endif /* __INCLUDE_ACPI_TYPES_H */
441 * COPYRIGHT: See COPYING in the top level directory
442 * PROJECT: ReactOS kernel
443 * FILE: include/types.h
444 * PURPOSE: Types used by all the parts of the system
445 * PROGRAMMER: David Welch <welch@cwcom.net>
450 #ifndef __INCLUDE_ACPI_TYPES_H
451 #define __INCLUDE_ACPI_TYPES_H
453 typedef unsigned char UCHAR;
455 typedef unsigned int UINT;
456 typedef unsigned long ULONG;
457 typedef unsigned short USHORT;
458 typedef unsigned short WCHAR;
459 typedef unsigned short WORD;
462 typedef unsigned char BOOLEAN;
464 typedef BOOLEAN* PBOOLEAN;
465 typedef unsigned int DWORD; /* was unsigned long */
466 typedef unsigned short *LPWSTR;
467 typedef unsigned short *PWSTR;
468 typedef unsigned char *PUCHAR;
469 typedef unsigned int *PUINT;
470 typedef unsigned long *PULONG;
471 typedef unsigned short *PUSHORT;
473 typedef unsigned char BYTE;
474 typedef void *LPVOID;
475 typedef DWORD *PDWORD;
476 typedef float *PFLOAT;
477 typedef unsigned short *PWCH;
478 typedef unsigned short *PWORD;
480 typedef long long LONGLONG;
481 typedef unsigned long long ULONGLONG;
482 typedef long long *PLONGLONG;
483 typedef unsigned long long *PULONGLONG;
485 /* Check VOID before defining CHAR, SHORT, and LONG */
495 typedef void *HANDLE;
503 typedef const unsigned short *PCWSTR;
507 typedef union _LARGE_INTEGER
514 #ifdef ANONYMOUSUNIONS
520 #endif /* ANONYMOUSUNIONS */
522 } LARGE_INTEGER, *PLARGE_INTEGER;
524 typedef union _ULARGE_INTEGER
531 #ifdef ANONYMOUSUNIONS
537 #endif /* ANONYMOUSUNIONS */
539 } ULARGE_INTEGER, *PULARGE_INTEGER;
544 #define STDCALL __attribute__ ((stdcall))
545 #define CDECL __attribute((cdecl))
546 #define CALLBACK WINAPI
547 #define PASCAL WINAPI
555 typedef struct _LIST_ENTRY {
556 struct _LIST_ENTRY *Flink;
557 struct _LIST_ENTRY *Blink;
558 } LIST_ENTRY, *PLIST_ENTRY;
560 typedef struct _SINGLE_LIST_ENTRY {
561 struct _SINGLE_LIST_ENTRY *Next;
562 } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
564 typedef DWORD STDCALL (*PTHREAD_START_ROUTINE) (LPVOID);
565 typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
567 typedef unsigned short *PWCHAR;
570 #define CONTEXT_CONTROL 1L
571 #define CONTEXT_FLOATING_POINT 2L
572 #define CONTEXT_INTEGER 4L
573 #define CONTEXT_DEBUG_REGISTERS 8L
575 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
576 #define CONTEXT_DEBUGGER (CONTEXT_FULL)
579 /* The doc refered me to winnt.h, so I had to look... */
580 #define SIZE_OF_80387_REGISTERS 80
582 /* Values for contextflags */
583 #define CONTEXT_i386 0x10000
584 #define CONTEXT_CONTROL (CONTEXT_i386 | 1)
585 #define CONTEXT_INTEGER (CONTEXT_i386 | 2)
586 #define CONTEXT_SEGMENTS (CONTEXT_i386 | 4)
587 #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 8)
588 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x10)
589 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
591 /* our own invention */
592 #define FLAG_TRACE_BIT 0x100
593 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
599 typedef struct _FLOATING_SAVE_AREA {
607 BYTE RegisterArea[80];
609 } FLOATING_SAVE_AREA;
611 typedef struct _CONTEXT {
621 FLOATING_SAVE_AREA FloatSave;
641 } CONTEXT, *PCONTEXT, *LPCONTEXT;
647 /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
682 /* Integer registers returned when CONTEXT_INTEGER is set. */
716 DWORD Cr; /* Condition register */
717 DWORD Xer; /* Fixed point exception register */
719 /* The following are set when CONTEXT_CONTROL is set. */
720 DWORD Msr; /* Machine status register */
721 DWORD Iar; /* Instruction address register */
722 DWORD Lr; /* Link register */
723 DWORD Ctr; /* Control register */
725 /* Control which context values are returned */
729 /* Registers returned if CONTEXT_DEBUG_REGISTERS is set. */
730 DWORD Dr0; /* Breakpoint Register 1 */
731 DWORD Dr1; /* Breakpoint Register 2 */
732 DWORD Dr2; /* Breakpoint Register 3 */
733 DWORD Dr3; /* Breakpoint Register 4 */
734 DWORD Dr4; /* Breakpoint Register 5 */
735 DWORD Dr5; /* Breakpoint Register 6 */
736 DWORD Dr6; /* Debug Status Register */
737 DWORD Dr7; /* Debug Control Register */
738 } CONTEXT, *PCONTEXT, *LPCONTEXT;
741 typedef HANDLE *PHANDLE;
743 typedef struct value_ent {
748 } WVALENT, *PWVALENT;
752 typedef const void *LPCVOID;
753 typedef BYTE *LPBYTE;
758 typedef DWORD *PLCID;
760 typedef const char *LPCSTR;
764 typedef const unsigned short *LPCWSTR;
766 typedef unsigned short RTL_ATOM;
767 typedef unsigned short *PRTL_ATOM;
770 typedef struct _COORD {
775 typedef struct _SMALL_RECT {
780 } SMALL_RECT, *PSMALL_RECT;
786 LPVOID lpArgToCompletionRoutine,
787 DWORD dwTimerLowValue,
788 DWORD dwTimerHighValue
791 #include <ntos/except.h>
793 #endif /* __INCLUDE_ACPI_TYPES_H */