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 /* Yes, W32 uses 16-bit wchar_t requiring GCC -fshort-wchar option */
90 typedef unsigned short WCHAR;
91 typedef unsigned short WORD;
94 typedef unsigned char BOOLEAN;
96 typedef BOOLEAN* PBOOLEAN;
97 typedef unsigned short *LPWSTR;
98 typedef unsigned short *PWSTR;
99 typedef unsigned char *PUCHAR;
100 typedef unsigned short *PUSHORT;
102 typedef unsigned char BYTE;
103 typedef void *LPVOID;
104 typedef float *PFLOAT;
105 typedef unsigned short *PWCH;
106 typedef unsigned short *PWORD;
108 typedef long long LONGLONG;
109 typedef unsigned long long ULONGLONG;
110 typedef long long *PLONGLONG;
111 typedef unsigned long long *PULONGLONG;
113 /* Check VOID before defining CHAR, SHORT */
122 typedef void *HANDLE;
124 typedef CCHAR *PCCHAR;
135 #define NULL ((void*)0)
136 #endif /* __cplusplus */
139 typedef const unsigned short *PCWSTR;
141 typedef const char* PCSZ;
143 typedef union _LARGE_INTEGER
150 #ifdef ANONYMOUSUNIONS
156 #endif /* ANONYMOUSUNIONS */
158 } LARGE_INTEGER, *PLARGE_INTEGER;
160 typedef union _ULARGE_INTEGER
167 #ifdef ANONYMOUSUNIONS
173 #endif /* ANONYMOUSUNIONS */
175 } ULARGE_INTEGER, *PULARGE_INTEGER;
177 typedef struct _FILETIME
180 DWORD dwHighDateTime;
181 } FILETIME, *LPFILETIME, *PFILETIME;
186 #define STDCALL __attribute__ ((stdcall))
187 #define CDECL __attribute((cdecl))
188 #define CALLBACK WINAPI
189 #define PASCAL WINAPI
197 typedef struct _LIST_ENTRY {
198 struct _LIST_ENTRY *Flink;
199 struct _LIST_ENTRY *Blink;
200 } LIST_ENTRY, *PLIST_ENTRY;
202 typedef struct _SINGLE_LIST_ENTRY {
203 struct _SINGLE_LIST_ENTRY *Next;
204 } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
206 typedef DWORD STDCALL (*PTHREAD_START_ROUTINE) (LPVOID);
207 typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
209 typedef unsigned short *PWCHAR;
212 #define CONTEXT_CONTROL 1L
213 #define CONTEXT_FLOATING_POINT 2L
214 #define CONTEXT_INTEGER 4L
215 #define CONTEXT_DEBUG_REGISTERS 8L
217 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
218 #define CONTEXT_DEBUGGER (CONTEXT_FULL)
221 /* The doc refered me to winnt.h, so I had to look... */
222 #define SIZE_OF_80387_REGISTERS 80
224 /* Values for contextflags */
225 #define CONTEXT_i386 0x10000
226 #define CONTEXT_CONTROL (CONTEXT_i386 | 1)
227 #define CONTEXT_INTEGER (CONTEXT_i386 | 2)
228 #define CONTEXT_SEGMENTS (CONTEXT_i386 | 4)
229 #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 8)
230 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x10)
231 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
233 /* our own invention */
234 #define FLAG_TRACE_BIT 0x100
235 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
241 typedef struct _FLOATING_SAVE_AREA {
249 BYTE RegisterArea[80];
251 } FLOATING_SAVE_AREA;
253 typedef struct _CONTEXT {
263 FLOATING_SAVE_AREA FloatSave;
283 } CONTEXT, *PCONTEXT, *LPCONTEXT;
289 /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
324 /* Integer registers returned when CONTEXT_INTEGER is set. */
358 DWORD Cr; /* Condition register */
359 DWORD Xer; /* Fixed point exception register */
361 /* The following are set when CONTEXT_CONTROL is set. */
362 DWORD Msr; /* Machine status register */
363 DWORD Iar; /* Instruction address register */
364 DWORD Lr; /* Link register */
365 DWORD Ctr; /* Control register */
367 /* Control which context values are returned */
371 /* Registers returned if CONTEXT_DEBUG_REGISTERS is set. */
372 DWORD Dr0; /* Breakpoint Register 1 */
373 DWORD Dr1; /* Breakpoint Register 2 */
374 DWORD Dr2; /* Breakpoint Register 3 */
375 DWORD Dr3; /* Breakpoint Register 4 */
376 DWORD Dr4; /* Breakpoint Register 5 */
377 DWORD Dr5; /* Breakpoint Register 6 */
378 DWORD Dr6; /* Debug Status Register */
379 DWORD Dr7; /* Debug Control Register */
380 } CONTEXT, *PCONTEXT, *LPCONTEXT;
383 typedef HANDLE *PHANDLE;
385 typedef struct value_ent {
390 } WVALENT, *PWVALENT;
393 typedef const void *LPCVOID;
394 typedef BYTE *LPBYTE, *PBYTE;
399 typedef DWORD *PLCID;
401 typedef const char *LPCSTR;
405 typedef const unsigned short *LPCWSTR;
407 typedef unsigned short RTL_ATOM;
408 typedef unsigned short *PRTL_ATOM;
411 typedef struct _COORD {
416 typedef struct _SMALL_RECT {
421 } SMALL_RECT, *PSMALL_RECT;
427 LPVOID lpArgToCompletionRoutine,
428 DWORD dwTimerLowValue,
429 DWORD dwTimerHighValue
432 #include <ntos/except.h>
434 #endif /* __INCLUDE_ACPI_TYPES_H */
442 * COPYRIGHT: See COPYING in the top level directory
443 * PROJECT: ReactOS kernel
444 * FILE: include/types.h
445 * PURPOSE: Types used by all the parts of the system
446 * PROGRAMMER: David Welch <welch@cwcom.net>
451 #ifndef __INCLUDE_ACPI_TYPES_H
452 #define __INCLUDE_ACPI_TYPES_H
454 typedef unsigned char UCHAR;
456 typedef unsigned int UINT;
457 typedef unsigned long ULONG;
458 typedef unsigned short USHORT;
459 /* Yes, W32 uses 16-bit wchar_t requiring GCC -fshort-wchar option */
460 typedef unsigned short WCHAR;
461 typedef unsigned short WORD;
464 typedef unsigned char BOOLEAN;
466 typedef BOOLEAN* PBOOLEAN;
467 typedef unsigned int DWORD; /* was unsigned long */
468 typedef unsigned short *LPWSTR;
469 typedef unsigned short *PWSTR;
470 typedef unsigned char *PUCHAR;
471 typedef unsigned int *PUINT;
472 typedef unsigned long *PULONG;
473 typedef unsigned short *PUSHORT;
475 typedef unsigned char BYTE;
476 typedef void *LPVOID;
477 typedef DWORD *PDWORD;
478 typedef float *PFLOAT;
479 typedef unsigned short *PWCH;
480 typedef unsigned short *PWORD;
482 typedef long long LONGLONG;
483 typedef unsigned long long ULONGLONG;
484 typedef long long *PLONGLONG;
485 typedef unsigned long long *PULONGLONG;
487 /* Check VOID before defining CHAR, SHORT, and LONG */
497 typedef void *HANDLE;
505 typedef const unsigned short *PCWSTR;
509 typedef union _LARGE_INTEGER
516 #ifdef ANONYMOUSUNIONS
522 #endif /* ANONYMOUSUNIONS */
524 } LARGE_INTEGER, *PLARGE_INTEGER;
526 typedef union _ULARGE_INTEGER
533 #ifdef ANONYMOUSUNIONS
539 #endif /* ANONYMOUSUNIONS */
541 } ULARGE_INTEGER, *PULARGE_INTEGER;
546 #define STDCALL __attribute__ ((stdcall))
547 #define CDECL __attribute((cdecl))
548 #define CALLBACK WINAPI
549 #define PASCAL WINAPI
557 typedef struct _LIST_ENTRY {
558 struct _LIST_ENTRY *Flink;
559 struct _LIST_ENTRY *Blink;
560 } LIST_ENTRY, *PLIST_ENTRY;
562 typedef struct _SINGLE_LIST_ENTRY {
563 struct _SINGLE_LIST_ENTRY *Next;
564 } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
566 typedef DWORD STDCALL (*PTHREAD_START_ROUTINE) (LPVOID);
567 typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
569 typedef unsigned short *PWCHAR;
572 #define CONTEXT_CONTROL 1L
573 #define CONTEXT_FLOATING_POINT 2L
574 #define CONTEXT_INTEGER 4L
575 #define CONTEXT_DEBUG_REGISTERS 8L
577 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
578 #define CONTEXT_DEBUGGER (CONTEXT_FULL)
581 /* The doc refered me to winnt.h, so I had to look... */
582 #define SIZE_OF_80387_REGISTERS 80
584 /* Values for contextflags */
585 #define CONTEXT_i386 0x10000
586 #define CONTEXT_CONTROL (CONTEXT_i386 | 1)
587 #define CONTEXT_INTEGER (CONTEXT_i386 | 2)
588 #define CONTEXT_SEGMENTS (CONTEXT_i386 | 4)
589 #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 8)
590 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x10)
591 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
593 /* our own invention */
594 #define FLAG_TRACE_BIT 0x100
595 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
601 typedef struct _FLOATING_SAVE_AREA {
609 BYTE RegisterArea[80];
611 } FLOATING_SAVE_AREA;
613 typedef struct _CONTEXT {
623 FLOATING_SAVE_AREA FloatSave;
643 } CONTEXT, *PCONTEXT, *LPCONTEXT;
649 /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
684 /* Integer registers returned when CONTEXT_INTEGER is set. */
718 DWORD Cr; /* Condition register */
719 DWORD Xer; /* Fixed point exception register */
721 /* The following are set when CONTEXT_CONTROL is set. */
722 DWORD Msr; /* Machine status register */
723 DWORD Iar; /* Instruction address register */
724 DWORD Lr; /* Link register */
725 DWORD Ctr; /* Control register */
727 /* Control which context values are returned */
731 /* Registers returned if CONTEXT_DEBUG_REGISTERS is set. */
732 DWORD Dr0; /* Breakpoint Register 1 */
733 DWORD Dr1; /* Breakpoint Register 2 */
734 DWORD Dr2; /* Breakpoint Register 3 */
735 DWORD Dr3; /* Breakpoint Register 4 */
736 DWORD Dr4; /* Breakpoint Register 5 */
737 DWORD Dr5; /* Breakpoint Register 6 */
738 DWORD Dr6; /* Debug Status Register */
739 DWORD Dr7; /* Debug Control Register */
740 } CONTEXT, *PCONTEXT, *LPCONTEXT;
743 typedef HANDLE *PHANDLE;
745 typedef struct value_ent {
750 } WVALENT, *PWVALENT;
754 typedef const void *LPCVOID;
755 typedef BYTE *LPBYTE;
760 typedef DWORD *PLCID;
762 typedef const char *LPCSTR;
766 typedef const unsigned short *LPCWSTR;
768 typedef unsigned short RTL_ATOM;
769 typedef unsigned short *PRTL_ATOM;
772 typedef struct _COORD {
777 typedef struct _SMALL_RECT {
782 } SMALL_RECT, *PSMALL_RECT;
788 LPVOID lpArgToCompletionRoutine,
789 DWORD dwTimerLowValue,
790 DWORD dwTimerHighValue
793 #include <ntos/except.h>
795 #endif /* __INCLUDE_ACPI_TYPES_H */