1 /* 2 * Copyright © 2009-2020 Inria. All rights reserved. 3 * Copyright © 2009-2012 Université Bordeaux 4 * See COPYING in top-level directory. 5 */ 6 7 #ifndef HWLOC_PORT_WINDOWS_WINDOWS_H 8 #define HWLOC_PORT_WINDOWS_WINDOWS_H 9 10 #include <inttypes.h> 11 12 #define CALLBACK 13 #define FALSE 0 14 15 #define DECLARE_HANDLE(n) typedef struct n##__ {int i;} *n 16 DECLARE_HANDLE(HINSTANCE); 17 typedef HINSTANCE HMODULE; 18 typedef int WINBOOL, BOOL; 19 typedef int64_t LONGLONG; 20 typedef uint64_t DWORDLONG; 21 typedef DWORDLONG ULONGLONG, *PULONGLONG; 22 typedef unsigned char BYTE, UCHAR; 23 typedef unsigned short WORD, USHORT; 24 typedef unsigned int UINT, UINT_PTR, DWORD, *PDWORD, *LPDWORD; 25 typedef unsigned long ULONG_PTR, DWORD_PTR, *PDWORD_PTR; 26 typedef long LONG, LONG_PTR; 27 typedef const char *LPCSTR; 28 typedef int (*FARPROC)(void); 29 typedef void *PVOID,*LPVOID; 30 typedef LONG NTSTATUS; 31 typedef char CHAR; 32 typedef CHAR *LPSTR; 33 typedef LPSTR LPTSTR; 34 typedef const void *LPCVOID; 35 typedef ULONG_PTR SIZE_T; 36 typedef LONG_PTR LRESULT; 37 typedef UINT_PTR WPARAM; 38 typedef LONG_PTR LPARAM; 39 typedef void *HGDIOBJ; 40 typedef void *HWND; 41 typedef struct tagMSG { 42 void *dummy; 43 } MSG; 44 typedef struct tagMSG *LPMSG; 45 typedef void VOID; 46 typedef WORD ATOM; 47 typedef char TCHAR; 48 typedef const TCHAR *LPCTSTR; 49 typedef void *HBRUSH; 50 typedef void *HICON; 51 typedef void *HMENU; 52 typedef void *HFONT; 53 typedef void *HPEN; 54 typedef HICON HCURSOR; 55 typedef DWORD COLORREF; 56 typedef LRESULT CALLBACK (*WNDPROC)(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); 57 typedef struct tagWNDCLASS { 58 UINT style; 59 WNDPROC lpfnWndProc; 60 int cbClsExtra; 61 int cbWndExtra; 62 HINSTANCE hInstance; 63 HICON hIcon; 64 HCURSOR hCursor; 65 HBRUSH hbrBackground; 66 LPCTSTR lpszMenuName; 67 LPCTSTR lpszClassName; 68 } WNDCLASS; 69 typedef void *HDC; 70 typedef struct tagPAINTSTRUCT { 71 HDC hdc; 72 } PAINTSTRUCT, *LPPAINTSTRUCT; 73 typedef struct _RECT { 74 LONG left; 75 LONG top; 76 LONG right; 77 LONG bottom; 78 } RECT, *LPRECT; 79 typedef void *HRGN; 80 typedef struct tagPOINT { 81 void *dummy; 82 } *LPPOINT; 83 typedef struct _SIZE { 84 unsigned cx; 85 unsigned cy; 86 } SIZE, *LPSIZE; 87 88 /* This is to cope with linux using integers for hwloc_pid_t and hwloc_thread_t 89 typedef PVOID HANDLE; */ 90 typedef int HANDLE; 91 92 #ifdef __GNUC__ 93 #define _ANONYMOUS_UNION __extension__ 94 #define _ANONYMOUS_STRUCT __extension__ 95 #else 96 #define _ANONYMOUS_UNION 97 #define _ANONYMOUS_STRUCT 98 #endif /* __GNUC__ */ 99 #define DUMMYUNIONNAME 100 #define DUMMYSTRUCTNAME 101 #define WINAPI 102 103 #define ANYSIZE_ARRAY 1 104 105 #define ERROR_INSUFFICIENT_BUFFER 122L 106 107 #define MEM_COMMIT 0x1000 108 #define MEM_RESERVE 0x2000 109 #define MEM_RELEASE 0x8000 110 111 #define PAGE_EXECUTE_READWRITE 0x0040 112 113 WINAPI HINSTANCE LoadLibrary(LPCSTR); 114 WINAPI HMODULE GetModuleHandle(LPCSTR); 115 WINAPI FARPROC GetProcAddress(HINSTANCE, LPCSTR); 116 WINAPI DWORD GetLastError(void); 117 118 DWORD_PTR WINAPI SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask); 119 BOOL WINAPI SetProcessAffinityMask(HANDLE hProcess, DWORD_PTR dwProcessAffinityMask); 120 BOOL WINAPI GetProcessAffinityMask(HANDLE hProcess, PDWORD_PTR lpProcessAffinityMask, PDWORD_PTR lpSystemAffinityMask); 121 122 HANDLE WINAPI GetCurrentThread(void); 123 HANDLE WINAPI GetCurrentProcess(void); 124 125 PVOID WINAPI VirtualAlloc(PVOID,DWORD,DWORD,DWORD); 126 127 BOOL GetNumaAvailableMemoryNode(UCHAR Node, PULONGLONG AvailableBytes); 128 129 typedef struct _SYSTEM_INFO { 130 _ANONYMOUS_UNION 131 union { 132 DWORD dwOemId; 133 _ANONYMOUS_STRUCT 134 struct { 135 WORD wProcessorArchitecture; 136 WORD wReserved; 137 } DUMMYSTRUCTNAME; 138 } DUMMYUNIONNAME; 139 DWORD dwPageSize; 140 LPVOID lpMinimumApplicationAddress; 141 LPVOID lpMaximumApplicationAddress; 142 DWORD_PTR dwActiveProcessorMask; 143 DWORD dwNumberOfProcessors; 144 DWORD dwProcessorType; 145 DWORD dwAllocationGranularity; 146 WORD wProcessorLevel; 147 WORD wProcessorRevision; 148 } SYSTEM_INFO, *LPSYSTEM_INFO; 149 150 void WINAPI GetSystemInfo(LPSYSTEM_INFO lpSystemInfo); 151 152 HANDLE WINAPI OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId); 153 #define PROCESS_SET_INFORMATION 0x0200 154 #define PROCESS_QUERY_INFORMATION 0x0400 155 156 DWORD WINAPI FormatMessage(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPTSTR lpBuffer, DWORD nSize, va_list *Arguments); 157 #define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100 158 #define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000 159 160 WORD MAKELANGID(USHORT usPrimaryLanguage, USHORT usSubLanguage); 161 #define LANG_NEUTRAL 0x00 162 #define SUBLANG_DEFAULT 0x01 163 164 HGDIOBJ GetStockObject(int fnObject); 165 BOOL DeleteObject(HGDIOBJ hObject); 166 HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj); 167 168 HWND WINAPI CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam); 169 BOOL WINAPI ShowWindow(HWND hWnd, int nCmdShow); 170 BOOL InvalidateRect(HWND hWnd, const RECT *lpRect, BOOL bErase); 171 BOOL UpdateWindow(HWND hWnd); 172 BOOL RedrawWindow(HWND hWnd, const RECT *lprcUpdate, HRGN hrgnUpdate, UINT flags); 173 BOOL DestroyWindow(HWND hWnd); 174 COLORREF RGB(BYTE byRed, BYTE byGreen, BYTE byBlue); 175 HBRUSH CreateSolidBrush(COLORREF crColor); 176 COLORREF SetBkColor(HDC hdc, COLORREF crColor); 177 COLORREF SetTextColor(HDC hdc, COLORREF crColor); 178 BOOL Rectangle(HDC hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); 179 BOOL MoveToEx(HDC hdc, int X, int Y, LPPOINT lpPoint); 180 BOOL LineTo(HDC hdc, int nXEnd, int nYEnd); 181 HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwItalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace); 182 #define FW_NORMAL 400 183 #define FW_BOLD 700 184 #define PS_SOLID 0 185 #define PS_DASH 1 186 #define PS_DOT 2 187 #define PS_DASHDOT 3 188 #define PS_DASHDOTDOT 4 189 HPEN CreatePen(int iStyle, int cWidth, COLORREF color); 190 BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cchString); 191 BOOL GetTextExtentPoint32(HDC hdc, LPCTSTR lpString, int c, LPSIZE lpSize); 192 #define TRANSPARENT 0 193 int SetBkMode(HDC hdc, int mode); 194 195 LRESULT DispatchMessage(const MSG *lpmsg); 196 BOOL TranslateMessage(const MSG *lpMsg); 197 BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); 198 VOID WINAPI PostQuitMessage(int nExitCode); 199 200 typedef struct _OSVERSIONINFOEX { 201 DWORD dwOSVersionInfoSize; 202 DWORD dwMajorVersion; 203 DWORD dwMinorVersion; 204 DWORD dwBuildNumber; 205 DWORD dwPlatformId; 206 CHAR szCSDVersion[128]; 207 WORD wServicePackMajor; 208 WORD wServicePackMinor; 209 WORD wSuiteMask; 210 BYTE wProductType; 211 BYTE wReserved; 212 } OSVERSIONINFOEX; 213 typedef OSVERSIONINFOEX* LPOSVERSIONINFO; 214 BOOL GetVersionEx(LPOSVERSIONINFO lpVersionInformation); 215 void ZeroMemory(PVOID Destination, SIZE_T Length); 216 217 BOOL GetComputerName(LPSTR lpBuffer, LPDWORD nSize); 218 219 #define WM_DESTROY 2 220 #define WM_SIZE 5 221 #define WM_PAINT 15 222 #define WM_KEYDOWN 256 223 #define WM_KEYUP 257 224 #define WM_CHAR 258 225 #define WM_MOUSEMOVE 512 226 #define WM_LBUTTONDOWN 513 227 #define WM_LBUTTONUP 514 228 229 #define MK_LBUTTON 1 230 231 #define VK_ESCAPE 0x1B 232 #define VK_CONTROL 17 233 #define VK_PRIOR 33 234 #define VK_NEXT 34 235 #define VK_END 35 236 #define VK_HOME 36 237 #define VK_LEFT 37 238 #define VK_UP 38 239 #define VK_RIGHT 39 240 #define VK_DOWN 40 241 #define VK_F5 0x74 242 243 #define RDW_INVALIDATE 1 244 245 #define SM_CYCAPTION 4 246 #define SM_CXFULLSCREEN 16 247 #define SM_CYFULLSCREEN 17 248 #define SM_CXSIZEFRAME 32 249 #define SM_CYSIZEFRAME 33 250 251 #define CW_USEDEFAULT 0x80000000 252 253 #define SW_SHOWDEFAULT 10 254 255 #define WS_OVERLAPPEDWINDOW 0xcf0000 256 257 #define MAKEINTRESOURCE(x) (LPCTSTR)(x) 258 #define IDC_SIZEALL MAKEINTRESOURCE(32646) 259 #define IDI_APPLICATION MAKEINTRESOURCE(32512) 260 261 #define DEFAULT_CHARSET 43 262 #define DEFAULT_QUALITY 43 263 #define DEFAULT_PITCH 43 264 #define OUT_DEFAULT_PRECIS 43 265 #define CLIP_DEFAULT_PRECIS 43 266 267 HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint); 268 BOOL EndPaint(HWND hWnd, const PAINTSTRUCT *lpPaint); 269 270 int GET_X_LPARAM(LPARAM lParam); 271 int GET_Y_LPARAM(LPARAM lParam); 272 273 WORD LOWORD(DWORD dwValue); 274 WORD HIWORD(DWORD dwValue); 275 276 LRESULT WINAPI DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); 277 278 BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags); 279 #define SWP_NOMOVE 0x0002 280 #define SWP_NOZORDER 0x0004 281 #define SWP_NOCOPYBITS 0x0100 282 #define SWP_NOOWNERZORDER 0x0200 283 #define SWP_DEFERERASE 0x2000 284 285 #define HWND_TOP (HWND)0 286 287 BOOL AdjustWindowRect(LPRECT lpRect, DWORD dwStyle, BOOL bMenu); 288 289 #define WHITE_BRUSH 26 290 291 HCURSOR WINAPI LoadCursor(HINSTANCE hInstance, LPCTSTR lpCursorName); 292 HICON WINAPI LoadIcon(HINSTANCE hInstance, LPCTSTR lpIconName); 293 294 int WINAPI GetSystemMetrics(int nIndex); 295 296 ATOM WINAPI RegisterClass(const WNDCLASS *lpWndClass); 297 298 /* hide Linux' host disabling _SC_LARGE_PAGESIZE */ 299 #undef HAVE_DECL__SC_LARGE_PAGESIZE 300 #define HAVE_DECL__SC_LARGE_PAGESIZE 1 301 #undef _SC_LARGE_PAGESIZE 302 #define _SC_LARGE_PAGESIZE 33 303 304 #endif /* HWLOC_PORT_WINDOWS_WINDOWS_H */ 305