commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mt...@apache.org
Subject svn commit: r763196 - /commons/sandbox/runtime/trunk/src/main/native/include/arch/windows/acr_arch.h
Date Wed, 08 Apr 2009 11:48:57 GMT
Author: mturk
Date: Wed Apr  8 11:48:56 2009
New Revision: 763196

URL: http://svn.apache.org/viewvc?rev=763196&view=rev
Log:
Use APR late dll macros and extend them with defalt return value

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/arch/windows/acr_arch.h

Modified: commons/sandbox/runtime/trunk/src/main/native/include/arch/windows/acr_arch.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/arch/windows/acr_arch.h?rev=763196&r1=763195&r2=763196&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/arch/windows/acr_arch.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/arch/windows/acr_arch.h Wed Apr
 8 11:48:56 2009
@@ -48,12 +48,14 @@
     JNIEXPORT RT JNICALL Java_org_apache_commons_runtime_platform_windows_##CL##_##FN
 
 typedef enum {
-    SYSDLL_KERNEL32 = 0,    // kernel32 From WinBase.h
-    SYSDLL_NTDLL    = 1,    // ntdll    From our real kernel
-    SYSDLL_USER32   = 2,    // user32   From WinUser.h
-    SYSDLL_IPHLPAPI = 3,    // iphlpapi From Iphlpapi.h
-    SYSDLL_JVM      = 4,    // jvm      From our own jvm.dll
-    SYSDLL_defined  = 5     // must define as last idx_ + 1
+    SYSDLL_KERNEL32     = 0,    // kernel32 From WinBase.h
+    SYSDLL_NTDLL        = 1,    // ntdll    From our real kernel
+    SYSDLL_USER32       = 2,    // user32   From WinUser.h
+    SYSDLL_IPHLPAPI     = 3,    // iphlpapi From Iphlpapi.h
+    SYSDLL_WINSOCKAPI   = 4,    // mswsock  From WinSock.h
+    SYSDLL_WINSOCK2API  = 5,    // ws2_32   From WinSock2.h
+    SYSDLL_JVM          = 6,    // jvm      From our own jvm.dll
+    SYSDLL_defined      = 6     // must define as last idx_ + 1
 } acr_dlltoken_e;
 
 /* Copied from http://source.winehq.org/source/include/winternl.h */
@@ -193,33 +195,44 @@
 
 /* The acr_load_dll_func call WILL return def if the function cannot be loaded */
 
-#define ACR_DECLARE_LATE_DLL_FUNC(lib, rettype, def,                        \
-                                  calltype, fn, ord, args, names)           \
-    typedef rettype (calltype *acr_late_fpt_##fn) args;                     \
-    static acr_late_fpt_##fn acr_late_pfn_##fn = NULL;                      \
-    static APR_INLINE rettype acr_late_##fn args                            \
-    {   if (!acr_late_pfn_##fn)                                             \
-            acr_late_pfn_##fn = (acr_late_fpt_##fn)                         \
+#define ACR_DECLARE_LATE_DLL_FUNC(lib, rettype, def, calltype,              \
+                                  fn, ord, args, names)                     \
+    typedef rettype (calltype *acr_winapi_fpt_##fn) args;                   \
+    static acr_winapi_fpt_##fn acr_winapi_pfn_##fn = NULL;                  \
+    static int acr_winapi_chk_##fn = 0;                                     \
+    static __inline int acr_winapi_ld_##fn()                                \
+    {   if (acr_winapi_pfn_##fn) return 1;                                  \
+        if (acr_winapi_chk_##fn ++) return 0;                               \
+        if (!acr_winapi_pfn_##fn)                                           \
+            acr_winapi_pfn_##fn = (acr_winapi_fpt_##fn)                     \
                                       acr_load_dll_func(lib, #fn, ord);     \
-        if (acr_late_pfn_##fn)                                              \
-            return (*(acr_late_pfn_##fn)) names;                            \
-        else return def; } //
-
-#define ACR_DECLARE_LATE_DLL_CALL(lib, rettype,                             \
-                                    calltype, fn, fnx, ord, args, names)    \
-    typedef rettype (calltype *acr_late_fpt_##fn) args;                     \
-    static acr_late_fpt_##fn acr_late_pfn_##fn = NULL;                      \
-    static APR_INLINE rettype acr_late_##fn args                            \
-    {   if (!acr_late_pfn_##fn)                                             \
-            acr_late_pfn_##fn = (acr_late_fpt_##fn)                         \
+        if (acr_winapi_pfn_##fn) return 1; else return 0; };                \
+    static __inline rettype acr_winapi_##fn args                            \
+    {   if (acr_winapi_ld_##fn())                                           \
+            return (*(acr_winapi_pfn_##fn)) names;                          \
+        else { SetLastError(ERROR_INVALID_FUNCTION); return def;}           \
+    } //
+
+#define ACR_DECLARE_LATE_DLL_VOID(lib, def, calltype,                       \
+                                  fn, ord, args, names)                     \
+    typedef void (calltype *acr_winapi_fpt_##fn) args;                      \
+    static acr_winapi_fpt_##fn acr_winapi_pfn_##fn = NULL;                  \
+    static int acr_winapi_chk_##fn = 0;                                     \
+    static __inline int acr_winapi_ld_##fn()                                \
+    {   if (acr_winapi_pfn_##fn) return 1;                                  \
+        if (acr_winapi_chk_##fn ++) return 0;                               \
+        if (!acr_winapi_pfn_##fn)                                           \
+            acr_winapi_pfn_##fn = (acr_winapi_fpt_##fn)                     \
                                       acr_load_dll_func(lib, #fn, ord);     \
-        if (!acr_late_pfn_##fn)                                             \
-            acr_late_pfn_##fn = (acr_late_fpt_##fn)                         \
-                                      acr_load_dll_func(lib, #fnx, ord);    \
-        if (acr_late_pfn_##fn)                                              \
-            (*(acr_late_pfn_##fn)) names;                                   \
+        if (acr_winapi_pfn_##fn) return 1; else return 0; };                \
+    static __inline void acr_winapi_##fn args                               \
+    {   if (acr_winapi_ld_##fn())                                           \
+            (*(acr_winapi_pfn_##fn)) names;                                 \
+        else { SetLastError(ERROR_INVALID_FUNCTION); }                      \
     } //
 
+#define ACR_HAVE_LATE_DLL_FUNC(fn) acr_winapi_ld_##fn()
+
 
 #ifdef ACR_WANT_LATE_DLL
 
@@ -230,7 +243,7 @@
     OUT LPFILETIME lpUserTime),
     (lpIdleTime, lpKernelTime, lpUserTime));
 #undef  GetSystemTimes
-#define GetSystemTimes acr_late_GetSystemTimes
+#define GetSystemTimes acr_winapi_GetSystemTimes
 
 ACR_DECLARE_LATE_DLL_FUNC(SYSDLL_KERNEL32, BOOL, FALSE,
                           WINAPI, IsWow64Process, 0, (
@@ -238,7 +251,7 @@
     OUT PBOOL Wow64Process),
     (hProcess, Wow64Process));
 #undef  IsWow64Process
-#define IsWow64Process acr_late_IsWow64Process
+#define IsWow64Process acr_winapi_IsWow64Process
 
 ACR_DECLARE_LATE_DLL_FUNC(SYSDLL_NTDLL, NTSTATUS, 1,
                           WINAPI, NtQuerySystemInformation, 0, (
@@ -248,7 +261,7 @@
     OUT PULONG ReturnLength),
     (SystemInformationClass, SystemInformation, SystemInformationLength, ReturnLength));
 #undef  NtQuerySystemInformation
-#define NtQuerySystemInformation acr_late_NtQuerySystemInformation
+#define NtQuerySystemInformation acr_winapi_NtQuerySystemInformation
 
 ACR_DECLARE_LATE_DLL_FUNC(SYSDLL_NTDLL, NTSTATUS, 1,
                           WINAPI, NtQueryInformationProcess, 0, (
@@ -259,7 +272,7 @@
     OUT PULONG ReturnLength),
     (ProcessHandle, ProcessInformationClass, ProcessInformation, ProcessInformationLength,
ReturnLength));
 #undef  NtQueryInformationProcess
-#define NtQueryInformationProcess acr_late_NtQueryInformationProcess
+#define NtQueryInformationProcess acr_winapi_NtQueryInformationProcess
 
 ACR_DECLARE_LATE_DLL_FUNC(SYSDLL_KERNEL32, BOOL, FALSE,
                           WINAPI, GetPerformanceInfo, 0, (
@@ -267,7 +280,7 @@
     DWORD cb),
     (pPerformanceInformation, cb));
 #undef  GetPerformanceInfo
-#define GetPerformanceInfo acr_late_GetPerformanceInfo
+#define GetPerformanceInfo acr_winapi_GetPerformanceInfo
 
 ACR_DECLARE_LATE_DLL_FUNC(SYSDLL_IPHLPAPI, DWORD, ERROR_INVALID_FUNCTION,
                           WINAPI, GetExtendedTcpTable, 0, (
@@ -279,7 +292,7 @@
     ULONG Reserved),
     (pTcpTable, pdwSize, bOrder, ulAf, TableClass, Reserved));
 #undef  GetExtendedTcpTable
-#define GetExtendedTcpTable acr_late_GetExtendedTcpTable
+#define GetExtendedTcpTable acr_winapi_GetExtendedTcpTable
 
 ACR_DECLARE_LATE_DLL_FUNC(SYSDLL_IPHLPAPI, DWORD, ERROR_INVALID_FUNCTION,
                           WINAPI, GetExtendedUdpTable, 0, (
@@ -291,16 +304,63 @@
     ULONG Reserved),
     (pUdpTable, pdwSize, bOrder, ulAf, TableClass, Reserved));
 #undef  GetExtendedUdpTable
-#define GetExtendedUdpTable acr_late_GetExtendedUdpTable
+#define GetExtendedUdpTable acr_winapi_GetExtendedUdpTable
+
+#if !defined(POLLERR)
+/* Event flag definitions for WSAPoll(). */
+#define POLLRDNORM  0x0100
+#define POLLRDBAND  0x0200
+#define POLLIN      (POLLRDNORM | POLLRDBAND)
+#define POLLPRI     0x0400
+
+#define POLLWRNORM  0x0010
+#define POLLOUT     (POLLWRNORM)
+#define POLLWRBAND  0x0020
+
+#define POLLERR     0x0001
+#define POLLHUP     0x0002
+#define POLLNVAL    0x0004
+
+typedef struct pollfd {
+    SOCKET  fd;
+    SHORT   events;
+    SHORT   revents;
+
+} WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD;
+
+#endif /* !defined(POLLERR) */
+#ifdef WSAPoll
+#undef WSAPoll
+#endif
+ACR_DECLARE_LATE_DLL_FUNC(SYSDLL_IPHLPAPI, DWORD, ERROR_INVALID_FUNCTION,
+                          WINAPI, GetExtendedUdpTable, 0, (
+
+APR_DECLARE_LATE_DLL_FUNC(SYSDLL_WINSOCK2API, int, ERROR_INVALID_FUNCTION,
+                          WSAAPI, WSAPoll, 0, (
+    IN OUT LPWSAPOLLFD fdArray,
+    IN ULONG fds,
+    IN INT timeout),
+    (fdArray, fds, timeout));
+#define WSAPoll acr_winapi_WSAPoll
+#define HAVE_POLL   1
+
+#ifdef SetDllDirectoryW
+#undef SetDllDirectoryW
+#endif
+APR_DECLARE_LATE_DLL_FUNC(SYSDLL_KERNEL32, BOOL, FALSE,
+                          WINAPI, SetDllDirectoryW, 0, (
+    IN LPCWSTR lpPathName),
+    (lpPathName));
+#define SetDllDirectoryW acr_winapi_SetDllDirectoryW
 
 ACR_DECLARE_LATE_DLL_CALL(SYSDLL_JVM, void, JNICALL,
                           JVM_DumpAllStacks,
-                          _JVM_DumpAllStacks@8, 0, (
+                         _JVM_DumpAllStacks@8, 0, (
     JNIEnv *lpEnv,
     jclass jClazz),
     (lpEnv, jClazz));
 #undef  JVM_DumpAllStacks
-#define JVM_DumpAllStacks acr_late_JVM_DumpAllStacks
+#define JVM_DumpAllStacks acr_winapi_JVM_DumpAllStacks
 
 #undef ACR_WANT_LATE_DLL
 #endif



Mime
View raw message