Mercurial > games > semicongine
diff fuhtark_test/include/winapi/rtutils.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/rtutils.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,301 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef __ROUTING_RTUTILS_H__ +#define __ROUTING_RTUTILS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define TRACE_USE_FILE 0x00000001 +#define TRACE_USE_CONSOLE 0x00000002 +#define TRACE_NO_SYNCH 0x00000004 + +#define TRACE_NO_STDINFO 0x00000001 +#define TRACE_USE_MASK 0x00000002 +#define TRACE_USE_MSEC 0x00000004 +#define TRACE_USE_DATE 0x00000008 + +#define INVALID_TRACEID 0xFFFFFFFF + + DWORD WINAPI TraceRegisterExA(LPCSTR lpszCallerName,DWORD dwFlags); + DWORD WINAPI TraceDeregisterA(DWORD dwTraceID); + DWORD WINAPI TraceDeregisterExA(DWORD dwTraceID,DWORD dwFlags); + DWORD WINAPI TraceGetConsoleA(DWORD dwTraceID,LPHANDLE lphConsole); + DWORD __cdecl TracePrintfA(DWORD dwTraceID,LPCSTR lpszFormat,...); + DWORD __cdecl TracePrintfExA(DWORD dwTraceID,DWORD dwFlags,LPCSTR lpszFormat,...); + DWORD WINAPI TraceVprintfExA(DWORD dwTraceID,DWORD dwFlags,LPCSTR lpszFormat,va_list arglist); + DWORD WINAPI TracePutsExA(DWORD dwTraceID,DWORD dwFlags,LPCSTR lpszString); + DWORD WINAPI TraceDumpExA(DWORD dwTraceID,DWORD dwFlags,LPBYTE lpbBytes,DWORD dwByteCount,DWORD dwGroupSize,WINBOOL bAddressPrefix,LPCSTR lpszPrefix); + +#define TraceRegisterA(a) TraceRegisterExA(a,0) +#define TraceVprintfA(a,b,c) TraceVprintfExA(a,0,b,c) +#define TracePutsA(a,b) TracePutsExA(a,0,b) +#define TraceDumpA(a,b,c,d,e,f) TraceDumpExA(a,0,b,c,d,e,f) + + DWORD WINAPI TraceRegisterExW(LPCWSTR lpszCallerName,DWORD dwFlags); + DWORD WINAPI TraceDeregisterW(DWORD dwTraceID); + DWORD WINAPI TraceDeregisterExW(DWORD dwTraceID,DWORD dwFlags); + DWORD WINAPI TraceGetConsoleW(DWORD dwTraceID,LPHANDLE lphConsole); + DWORD __cdecl TracePrintfW(DWORD dwTraceID,LPCWSTR lpszFormat,...); + DWORD __cdecl TracePrintfExW(DWORD dwTraceID,DWORD dwFlags,LPCWSTR lpszFormat,...); + DWORD WINAPI TraceVprintfExW(DWORD dwTraceID,DWORD dwFlags,LPCWSTR lpszFormat,va_list arglist); + DWORD WINAPI TracePutsExW(DWORD dwTraceID,DWORD dwFlags,LPCWSTR lpszString); + DWORD WINAPI TraceDumpExW(DWORD dwTraceID,DWORD dwFlags,LPBYTE lpbBytes,DWORD dwByteCount,DWORD dwGroupSize,WINBOOL bAddressPrefix,LPCWSTR lpszPrefix); + +#define TraceRegisterW(a) TraceRegisterExW(a,0) +#define TraceVprintfW(a,b,c) TraceVprintfExW(a,0,b,c) +#define TracePutsW(a,b) TracePutsExW(a,0,b) +#define TraceDumpW(a,b,c,d,e,f) TraceDumpExW(a,0,b,c,d,e,f) + +#ifdef UNICODE +#define TraceRegister TraceRegisterW +#define TraceDeregister TraceDeregisterW +#define TraceDeregisterEx TraceDeregisterExW +#define TraceGetConsole TraceGetConsoleW +#define TracePrintf TracePrintfW +#define TraceVprintf TraceVprintfW +#define TracePuts TracePutsW +#define TraceDump TraceDumpW +#define TraceRegisterEx TraceRegisterExW +#define TracePrintfEx TracePrintfExW +#define TraceVprintfEx TraceVprintfExW +#define TracePutsEx TracePutsExW +#define TraceDumpEx TraceDumpExW +#else +#define TraceRegister TraceRegisterA +#define TraceDeregister TraceDeregisterA +#define TraceDeregisterEx TraceDeregisterExA +#define TraceGetConsole TraceGetConsoleA +#define TracePrintf TracePrintfA +#define TraceVprintf TraceVprintfA +#define TracePuts TracePutsA +#define TraceDump TraceDumpA +#define TraceRegisterEx TraceRegisterExA +#define TracePrintfEx TracePrintfExA +#define TraceVprintfEx TraceVprintfExA +#define TracePutsEx TracePutsExA +#define TraceDumpEx TraceDumpExA +#endif + + VOID WINAPI LogErrorA(DWORD dwMessageId,DWORD cNumberOfSubStrings,LPSTR *plpwsSubStrings,DWORD dwErrorCode); + VOID WINAPI LogEventA(DWORD wEventType,DWORD dwMessageId,DWORD cNumberOfSubStrings,LPSTR *plpwsSubStrings); + VOID LogErrorW(DWORD dwMessageId,DWORD cNumberOfSubStrings,LPWSTR *plpwsSubStrings,DWORD dwErrorCode); + VOID LogEventW(DWORD wEventType,DWORD dwMessageId,DWORD cNumberOfSubStrings,LPWSTR *plpwsSubStrings); + +#ifdef UNICODE +#define LogError LogErrorW +#define LogEvent LogEventW +#else +#define LogError LogErrorA +#define LogEvent LogEventA +#endif + + HANDLE RouterLogRegisterA(LPCSTR lpszSource); + VOID RouterLogDeregisterA(HANDLE hLogHandle); + VOID RouterLogEventA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPSTR *plpszSubStringArray,DWORD dwErrorCode); + VOID RouterLogEventDataA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPSTR *plpszSubStringArray,DWORD dwDataBytes,LPBYTE lpDataBytes); + VOID RouterLogEventStringA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPSTR *plpszSubStringArray,DWORD dwErrorCode,DWORD dwErrorIndex); + VOID __cdecl RouterLogEventExA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwErrorCode,DWORD dwMessageId,LPCSTR ptszFormat,...); + VOID RouterLogEventValistExA(HANDLE hLogHandle,DWORD dwEventType,DWORD dwErrorCode,DWORD dwMessageId,LPCSTR ptszFormat,va_list arglist); + DWORD RouterGetErrorStringA(DWORD dwErrorCode,LPSTR *lplpszErrorString); + +#define RouterLogErrorA(h,msg,count,array,err) RouterLogEventA(h,EVENTLOG_ERROR_TYPE,msg,count,array,err) +#define RouterLogWarningA(h,msg,count,array,err) RouterLogEventA(h,EVENTLOG_WARNING_TYPE,msg,count,array,err) +#define RouterLogInformationA(h,msg,count,array,err) RouterLogEventA(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,err) + +#define RouterLogErrorDataA(h,msg,count,array,c,buf) RouterLogEventDataA(h,EVENTLOG_ERROR_TYPE,msg,count,array,c,buf) +#define RouterLogWarningDataA(h,msg,count,array,c,buf) RouterLogEventDataA(h,EVENTLOG_WARNING_TYPE,msg,count,array,c,buf) +#define RouterLogInformationDataA(h,msg,count,array,c,buf) RouterLogEventDataA(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,c,buf) + +#define RouterLogErrorStringA(h,msg,count,array,err,index) RouterLogEventStringA(h,EVENTLOG_ERROR_TYPE,msg,count,array,err,index) +#define RouterLogWarningStringA(h,msg,count,array,err,index) RouterLogEventStringA(h,EVENTLOG_WARNING_TYPE,msg,count,array,err,index) +#define RouterLogInformationStringA(h,msg,count,array,err,index) RouterLogEventStringA(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,err,index) + + HANDLE RouterLogRegisterW(LPCWSTR lpszSource); + VOID RouterLogDeregisterW(HANDLE hLogHandle); + VOID RouterLogEventW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPWSTR *plpszSubStringArray,DWORD dwErrorCode); + VOID RouterLogEventDataW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPWSTR *plpszSubStringArray,DWORD dwDataBytes,LPBYTE lpDataBytes); + VOID RouterLogEventStringW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwMessageId,DWORD dwSubStringCount,LPWSTR *plpszSubStringArray,DWORD dwErrorCode,DWORD dwErrorIndex); + VOID __cdecl RouterLogEventExW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwErrorCode,DWORD dwMessageId,LPCWSTR ptszFormat,...); + VOID RouterLogEventValistExW(HANDLE hLogHandle,DWORD dwEventType,DWORD dwErrorCode,DWORD dwMessageId,LPCWSTR ptszFormat,va_list arglist); + DWORD RouterGetErrorStringW(DWORD dwErrorCode,LPWSTR *lplpwszErrorString); + +#define RouterLogErrorW(h,msg,count,array,err) RouterLogEventW(h,EVENTLOG_ERROR_TYPE,msg,count,array,err) +#define RouterLogWarningW(h,msg,count,array,err) RouterLogEventW(h,EVENTLOG_WARNING_TYPE,msg,count,array,err) +#define RouterLogInformationW(h,msg,count,array,err) RouterLogEventW(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,err) + +#define RouterLogErrorDataW(h,msg,count,array,c,buf) RouterLogEventDataW(h,EVENTLOG_ERROR_TYPE,msg,count,array,c,buf) +#define RouterLogWarningDataW(h,msg,count,array,c,buf) RouterLogEventDataW(h,EVENTLOG_WARNING_TYPE,msg,count,array,c,buf) +#define RouterLogInformationDataW(h,msg,count,array,c,buf) RouterLogEventDataW(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,c,buf) + +#define RouterLogErrorStringW(h,msg,count,array,err,index) RouterLogEventStringW(h,EVENTLOG_ERROR_TYPE,msg,count,array,err,index) +#define RouterLogWarningStringW(h,msg,count,array,err,index) RouterLogEventStringW(h,EVENTLOG_WARNING_TYPE,msg,count,array,err,index) +#define RouterLogInformationStringW(h,msg,count,array,err,index) RouterLogEventStringW(h,EVENTLOG_INFORMATION_TYPE,msg,count,array,err,index) + +#ifdef UNICODE +#define RouterLogRegister RouterLogRegisterW +#define RouterLogDeregister RouterLogDeregisterW +#define RouterLogEvent RouterLogEventW +#define RouterLogError RouterLogErrorW +#define RouterLogWarning RouterLogWarningW +#define RouterLogInformation RouterLogInformationW +#define RouterLogEventData RouterLogEventDataW +#define RouterLogErrorData RouterLogErrorDataW +#define RouterLogWarningData RouterLogWarningDataW +#define RouterLogInformationData RouterLogInformationDataW +#define RouterLogEventString RouterLogEventStringW +#define RouterLogEventEx RouterLogEventExW +#define RouterLogEventValistEx RouterLogEventValistExW +#define RouterLogErrorString RouterLogErrorStringW +#define RouterLogWarningString RouterLogWarningStringW +#define RouterLogInformationString RouterLogInformationStringW +#define RouterGetErrorString RouterGetErrorStringW +#else +#define RouterLogRegister RouterLogRegisterA +#define RouterLogDeregister RouterLogDeregisterA +#define RouterLogEvent RouterLogEventA +#define RouterLogError RouterLogErrorA +#define RouterLogWarning RouterLogWarningA +#define RouterLogInformation RouterLogInformationA +#define RouterLogEventData RouterLogEventDataA +#define RouterLogErrorData RouterLogErrorDataA +#define RouterLogWarningData RouterLogWarningDataA +#define RouterLogInformationData RouterLogInformationDataA +#define RouterLogEventString RouterLogEventStringA +#define RouterLogEventEx RouterLogEventExA +#define RouterLogEventValistEx RouterLogEventValistExA +#define RouterLogErrorString RouterLogErrorStringA +#define RouterLogWarningString RouterLogWarningStringA +#define RouterLogInformationString RouterLogInformationStringA +#define RouterGetErrorString RouterGetErrorStringA +#endif + + typedef VOID (WINAPI *WORKERFUNCTION)(PVOID); + + DWORD WINAPI QueueWorkItem(WORKERFUNCTION functionptr,PVOID context,WINBOOL serviceinalertablethread); + DWORD WINAPI SetIoCompletionProc(HANDLE FileHandle,LPOVERLAPPED_COMPLETION_ROUTINE CompletionProc); + +#define NUM_ALERTABLE_THREADS 2 +#define MAX_WORKER_THREADS 10 +#define WORK_QUEUE_TIMEOUT 1 +#define THREAD_IDLE_TIMEOUT 10 + + VOID RouterAssert(PSTR pszFailedAssertion,PSTR pszFileName,DWORD dwLineNumber,PSTR pszMessage); + +#define RTASSERT(exp) +#define RTASSERTMSG(msg,exp) + +#define RTUTILS_MAX_PROTOCOL_NAME_LEN 40 +#define RTUTILS_MAX_PROTOCOL_DLL_LEN 48 + +#ifndef MAX_PROTOCOL_NAME_LEN +#define MAX_PROTOCOL_NAME_LEN RTUTILS_MAX_PROTOCOL_NAME_LEN +#else +#undef MAX_PROTOCOL_NAME_LEN +#endif +#define MAX_PROTOCOL_DLL_LEN RTUTILS_MAX_PROTOCOL_DLL_LEN + + typedef struct _MPR_PROTOCOL_0 { + DWORD dwProtocolId; + WCHAR wszProtocol[RTUTILS_MAX_PROTOCOL_NAME_LEN+1]; + WCHAR wszDLLName[RTUTILS_MAX_PROTOCOL_DLL_LEN+1]; + } MPR_PROTOCOL_0; + + DWORD WINAPI MprSetupProtocolEnum(DWORD dwTransportId,LPBYTE *lplpBuffer,LPDWORD lpdwEntriesRead); + DWORD WINAPI MprSetupProtocolFree(LPVOID lpBuffer); + +#define ROUTING_RESERVED +#define OPT1_1 +#define OPT1_2 +#define OPT2_1 +#define OPT2_2 +#define OPT3_1 +#define OPT3_2 + + struct _WAIT_THREAD_ENTRY; + struct _WT_EVENT_ENTRY; + +#define TIMER_INACTIVE 3 +#define TIMER_ACTIVE 4 + + typedef struct _WT_TIMER_ENTRY { + LONGLONG te_Timeout; + WORKERFUNCTION te_Function; + PVOID te_Context; + DWORD te_ContextSz; + WINBOOL te_RunInServer; + DWORD te_Status; + DWORD te_ServerId; + struct _WAIT_THREAD_ENTRY *teP_wte; + LIST_ENTRY te_ServerLinks; + LIST_ENTRY te_Links; + WINBOOL te_Flag; + DWORD te_TimerId; + } WT_TIMER_ENTRY,*PWT_TIMER_ENTRY; + + typedef struct _WT_WORK_ITEM { + WORKERFUNCTION wi_Function; + PVOID wi_Context; + DWORD wi_ContextSz; + WINBOOL wi_RunInServer; + struct _WT_EVENT_ENTRY *wiP_ee; + LIST_ENTRY wi_ServerLinks; + LIST_ENTRY wi_Links; + } WT_WORK_ITEM,*PWT_WORK_ITEM; + +#define WT_EVENT_BINDING WT_WORK_ITEM +#define PWT_EVENT_BINDING PWT_WORK_ITEM + + typedef struct _WT_EVENT_ENTRY { + HANDLE ee_Event; + WINBOOL ee_bManualReset; + WINBOOL ee_bInitialState; + WINBOOL ee_bDeleteEvent; + DWORD ee_Status; + WINBOOL ee_bHighPriority; + + LIST_ENTRY eeL_wi; + WINBOOL ee_bSignalSingle; + WINBOOL ee_bOwnerSelf; + INT ee_ArrayIndex; + DWORD ee_ServerId; + struct _WAIT_THREAD_ENTRY *eeP_wte; + LIST_ENTRY ee_ServerLinks; + LIST_ENTRY ee_Links; + DWORD ee_RefCount; + WINBOOL ee_bFlag; + DWORD ee_EventId; + } WT_EVENT_ENTRY,*PWT_EVENT_ENTRY; + + PWT_EVENT_ENTRY WINAPI CreateWaitEvent(HANDLE pEvent OPT1_1,LPSECURITY_ATTRIBUTES lpEventAttributes OPT1_2,WINBOOL bManualReset,WINBOOL bInitialState,LPCTSTR lpName OPT1_2,WINBOOL bHighPriority,WORKERFUNCTION pFunction OPT2_1,PVOID pContext OPT2_1,DWORD dwContextSz OPT2_1,WINBOOL bRunInServerContext OPT2_1); + PWT_EVENT_BINDING WINAPI CreateWaitEventBinding(PWT_EVENT_ENTRY pee,WORKERFUNCTION pFunction,PVOID pContext,DWORD dwContextSz,WINBOOL bRunInServerContext); + PWT_TIMER_ENTRY WINAPI CreateWaitTimer(WORKERFUNCTION pFunction,PVOID pContext,DWORD dwContextSz,WINBOOL bRunInServerContext); + DWORD WINAPI DeRegisterWaitEventBindingSelf(PWT_EVENT_BINDING pwiWorkItem); + DWORD WINAPI DeRegisterWaitEventBinding(PWT_EVENT_BINDING pwiWorkItem); + DWORD WINAPI DeRegisterWaitEventsTimers (PLIST_ENTRY pLEvents,PLIST_ENTRY pLTimers); + DWORD WINAPI DeRegisterWaitEventsTimersSelf(PLIST_ENTRY pLEvents,PLIST_ENTRY pLTimers); + DWORD WINAPI RegisterWaitEventBinding(PWT_EVENT_BINDING pwiWorkItem); + DWORD WINAPI RegisterWaitEventsTimers(PLIST_ENTRY pLEventsToAdd,PLIST_ENTRY pLTimersToAdd); + DWORD WINAPI UpdateWaitTimer(PWT_TIMER_ENTRY pte,LONGLONG *time); + VOID WINAPI WTFree (PVOID ptr); + VOID WINAPI WTFreeEvent(PWT_EVENT_ENTRY peeEvent); + VOID WINAPI WTFreeTimer(PWT_TIMER_ENTRY pteTimer); + VOID WINAPI DebugPrintWaitWorkerThreads (DWORD dwDebugLevel); + +#define DEBUGPRINT_FILTER_NONCLIENT_EVENTS 0x2 +#define DEBUGPRINT_FILTER_EVENTS 0x4 +#define DEBUGPRINT_FILTER_TIMERS 0x8 + +#define ERROR_WAIT_THREAD_UNAVAILABLE 1 +#define ERROR_WT_EVENT_ALREADY_DELETED 2 +#define TIMER_HIGH(time) (((LARGE_INTEGER*)&time)->HighPart) +#define TIMER_LOW(time) (((LARGE_INTEGER*)&time)->LowPart) + +#ifdef __cplusplus +} +#endif +#endif
