You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/08/11 21:13:36 UTC

svn commit: r803248 - in /commons/sandbox/runtime/trunk/src/main/native: include/acr_vm.h os/darwin/platform.c os/hpux/platform.c os/linux/platform.c os/solaris/platform.c os/unix/main.c os/win32/main.c os/win32/platform.c

Author: mturk
Date: Tue Aug 11 19:13:35 2009
New Revision: 803248

URL: http://svn.apache.org/viewvc?rev=803248&view=rev
Log:
Split init to API calls Initialize and PlatformInitialize

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/acr_vm.h
    commons/sandbox/runtime/trunk/src/main/native/os/darwin/platform.c
    commons/sandbox/runtime/trunk/src/main/native/os/hpux/platform.c
    commons/sandbox/runtime/trunk/src/main/native/os/linux/platform.c
    commons/sandbox/runtime/trunk/src/main/native/os/solaris/platform.c
    commons/sandbox/runtime/trunk/src/main/native/os/unix/main.c
    commons/sandbox/runtime/trunk/src/main/native/os/win32/main.c
    commons/sandbox/runtime/trunk/src/main/native/os/win32/platform.c

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr_vm.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_vm.h?rev=803248&r1=803247&r2=803248&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_vm.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_vm.h Tue Aug 11 19:13:35 2009
@@ -40,9 +40,21 @@
  */
 ACR_DECLARE(JNIEnv *)ACR_GetJNIEnv(void);
 
+/**
+ * Initialize the ACR
+ */
+ACR_DECLARE(int) ACR_Initialize(JavaVM *vm);
+
+/**
+ * Initialize the ACR platform
+ * @param env JNI environment to use or INVALID_HANDLE_VALUE if not exiting yet.
+ * @param ios Maximum size of the IO handle system.
+ */
+ACR_DECLARE(int) ACR_PlatformInitialize(JNIEnv *env, int ios);
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif /* _ACR_VM_H */
+

Modified: commons/sandbox/runtime/trunk/src/main/native/os/darwin/platform.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/darwin/platform.c?rev=803248&r1=803247&r2=803248&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/darwin/platform.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/darwin/platform.c Tue Aug 11 19:13:35 2009
@@ -20,6 +20,7 @@
 #include "acr_string.h"
 #include "acr_platform.h"
 #include "acr_error.h"
+#include "acr_vm.h"
 #include <locale.h>
 #include <langinfo.h>
 
@@ -33,6 +34,15 @@
     acr_int32_t i;
 } struct_align_t;
 
+static int initialized = 0;
+ACR_DECLARE(int) ACR_PlatformInitialize(JNIEnv *_E, int ios)
+{
+    if (initialized++)
+        return 0;
+    acr_page_size = (acr_size_t)getpagesize();
+    return acr_ioh_init(ios);
+}
+
 ACR_JNI_EXPORT_DECLARE(void, Platform, init0)(ACR_JNISTDARGS,
                                               jintArray p)
 {
@@ -42,7 +52,7 @@
     UNREFERENCED_O;
 
     (*_E)->GetIntArrayRegion(_E, p, 0, 16, &ia[0]);
-    if ((e = acr_ioh_init(ia[0]))) {
+    if ((e = ACR_PlatformInitialize(_E, ia[0]))) {
         /* Error initializing descriptor map table.
          * We cannot continue.
          */
@@ -63,7 +73,6 @@
 #endif
     ia[6]  =   PATH_MAX;
     ia[7]  =   PATH_MAX;
-    acr_page_size = (acr_size_t)getpagesize();
     ia[8]  =   (jint)acr_page_size;
     ia[9]  =   (jint)sizeof(struct_align_t);
 

Modified: commons/sandbox/runtime/trunk/src/main/native/os/hpux/platform.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/hpux/platform.c?rev=803248&r1=803247&r2=803248&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/hpux/platform.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/hpux/platform.c Tue Aug 11 19:13:35 2009
@@ -20,6 +20,7 @@
 #include "acr_string.h"
 #include "acr_platform.h"
 #include "acr_error.h"
+#include "acr_vm.h"
 #include <locale.h>
 #include <langinfo.h>
 
@@ -33,6 +34,15 @@
     acr_int32_t i;
 } struct_align_t;
 
+static int initialized = 0;
+ACR_DECLARE(int) ACR_PlatformInitialize(JNIEnv *_E, int ios)
+{
+    if (initialized++)
+        return 0;
+    acr_page_size = (acr_size_t)getpagesize();
+    return acr_ioh_init(ios);
+}
+
 ACR_JNI_EXPORT_DECLARE(void, Platform, init0)(ACR_JNISTDARGS,
                                               jintArray p)
 {
@@ -42,7 +52,7 @@
     UNREFERENCED_O;
 
     (*_E)->GetIntArrayRegion(_E, p, 0, 16, &ia[0]);
-    if ((e = acr_ioh_init(ia[0]))) {
+    if ((e = ACR_PlatformInitialize(_E, ia[0]))) {
         /* Error initializing descriptor map table.
          * We cannot continue.
          */
@@ -63,7 +73,6 @@
 #endif
     ia[6]  =   PATH_MAX;
     ia[7]  =   PATH_MAX;
-    acr_page_size = (acr_size_t)getpagesize();
     ia[8]  =   (jint)acr_page_size;
     ia[9]  =   (jint)sizeof(struct_align_t);
 

Modified: commons/sandbox/runtime/trunk/src/main/native/os/linux/platform.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/linux/platform.c?rev=803248&r1=803247&r2=803248&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/linux/platform.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/linux/platform.c Tue Aug 11 19:13:35 2009
@@ -20,6 +20,7 @@
 #include "acr_string.h"
 #include "acr_platform.h"
 #include "acr_error.h"
+#include "acr_vm.h"
 #include <locale.h>
 #include <langinfo.h>
 
@@ -33,6 +34,15 @@
     acr_int32_t i;
 } struct_align_t;
 
+static int initialized = 0;
+ACR_DECLARE(int) ACR_PlatformInitialize(JNIEnv *_E, int ios)
+{
+    if (initialized++)
+        return 0;
+    acr_page_size = (acr_size_t)getpagesize();
+    return acr_ioh_init(ios);
+}
+
 ACR_JNI_EXPORT_DECLARE(void, Platform, init0)(ACR_JNISTDARGS,
                                               jintArray p)
 {
@@ -42,7 +52,7 @@
     UNREFERENCED_O;
 
     (*_E)->GetIntArrayRegion(_E, p, 0, 16, &ia[0]);
-    if ((e = acr_ioh_init(ia[0]))) {
+    if ((e = ACR_PlatformInitialize(_E, ia[0]))) {
         /* Error initializing descriptor map table.
          * We cannot continue.
          */
@@ -63,7 +73,6 @@
 #endif
     ia[6]  =   PATH_MAX;
     ia[7]  =   PATH_MAX;
-    acr_page_size = (acr_size_t)getpagesize();
     ia[8]  =   (jint)acr_page_size;
     ia[9]  =   (jint)sizeof(struct_align_t);
     (*_E)->SetIntArrayRegion(_E, p, 0, 16, &ia[0]);

Modified: commons/sandbox/runtime/trunk/src/main/native/os/solaris/platform.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/solaris/platform.c?rev=803248&r1=803247&r2=803248&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/solaris/platform.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/solaris/platform.c Tue Aug 11 19:13:35 2009
@@ -20,6 +20,7 @@
 #include "acr_string.h"
 #include "acr_platform.h"
 #include "acr_error.h"
+#include "acr_vm.h"
 #include <locale.h>
 #include <langinfo.h>
 
@@ -33,6 +34,15 @@
     acr_int32_t i;
 } struct_align_t;
 
+static int initialized = 0;
+ACR_DECLARE(int) ACR_PlatformInitialize(JNIEnv *_E, int ios)
+{
+    if (initialized++)
+        return 0;
+    acr_page_size = (acr_size_t)getpagesize();
+    return acr_ioh_init(ios);
+}
+
 ACR_JNI_EXPORT_DECLARE(void, Platform, init0)(ACR_JNISTDARGS,
                                               jintArray p)
 {
@@ -42,7 +52,7 @@
     UNREFERENCED_O;
 
     (*_E)->GetIntArrayRegion(_E, p, 0, 16, &ia[0]);
-    if ((e = acr_ioh_init(ia[0]))) {
+    if ((e = ACR_PlatformInitialize(_E, ia[0]))) {
         /* Error initializing descriptor map table.
          * We cannot continue.
          */
@@ -63,7 +73,6 @@
 #endif
     ia[6]  =   PATH_MAX;
     ia[7]  =   PATH_MAX;
-    acr_page_size = (acr_size_t)getpagesize();
     ia[8]  =   (jint)acr_page_size;
     ia[9]  =   (jint)sizeof(struct_align_t);
 

Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/main.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/main.c?rev=803248&r1=803247&r2=803248&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/main.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/main.c Tue Aug 11 19:13:35 2009
@@ -63,6 +63,26 @@
     free(t);
 }
 
+static int initialized = 0;
+ACR_DECLARE(int) ACR_Initialize(JavaVM *vm)
+{
+
+    if (initialized++)
+        return 0;
+
+    acr_pvm = vm;
+
+    if (pthread_key_create(&acr_thread_key, acr_thread_key_destructor))
+        return ACR_GET_OS_ERROR();
+
+    acr_default_umask = umask(0777);
+    (void)umask(acr_default_umask);
+    acr_default_perms = ~acr_default_umask & 0777;
+
+    return 0;
+}
+
+
 /* Called by the JVM when ACR is loaded */
 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
 {
@@ -73,20 +93,16 @@
     if ((*vm)->GetEnv(vm, &epp, JNI_VERSION_1_4)) {
         return JNI_ERR;
     }
-    acr_pvm = vm;
-    if (pthread_key_create(&acr_thread_key, acr_thread_key_destructor)) {
-
+    if (ACR_Initialize(vm)) {
+        /* Error during our init phase */
         return JNI_ERR;
     }
     if ((env = ACR_GetJNIEnv()) == NULL)
         return JNI_ERR;
     if (ACR_InitCoreClasses(env) != ACR_SUCCESS)
         return JNI_ERR;
-    if (ACR_InitClazzCache(env) != ACR_SUCCESS)
+    if (ACR_InitClazzCache(env)  != ACR_SUCCESS)
         return JNI_ERR;
-    acr_default_umask = umask(0777);
-    (void)umask(acr_default_umask);
-    acr_default_perms = ~acr_default_umask & 0777;
 
     return JNI_VERSION_1_4;
 }

Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/main.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/main.c?rev=803248&r1=803247&r2=803248&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/main.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/main.c Tue Aug 11 19:13:35 2009
@@ -228,19 +228,13 @@
     L"SeTakeOwnershipPrivilege",
     NULL
 };
-/* Called by the JVM when ACR is loaded */
-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
+
+static int initialized = 0;
+ACR_DECLARE(int) ACR_Initialize(JavaVM *vm)
 {
-    UINT    em;
-    DWORD   rc;
-    JNIEnv *env;
-    void   *epp;
-    const wchar_t **pp = &sePrivileges[0];
 
-    UNREFERENCED(reserved);
-    if ((*vm)->GetEnv(vm, &epp, JNI_VERSION_1_4)) {
-        return JNI_ERR;
-    }
+    if (initialized++)
+        return 0;
     acr_pvm = vm;
 
     GetSystemInfo(acr_osinf);
@@ -257,7 +251,7 @@
     }
     /* Allocate a TLS index. */
     if ((dll_tls_index = TlsAlloc()) == TLS_OUT_OF_INDEXES) {
-        return JNI_ERR;
+        return ACR_GET_OS_ERROR();
     }
     while (*pp) {
         if ((rc = ACR_EnablePrivilege(*pp)) != ERROR_SUCCESS) {
@@ -269,18 +263,39 @@
         }
         ++pp;
     }
-
-    env = epp;
-    if (ACR_InitCoreClasses(env) != ACR_SUCCESS)
-        return JNI_ERR;
-    if (ACR_InitClazzCache(env) != ACR_SUCCESS)
-        return JNI_ERR;
     /* Do not display file not found messge boxes.
      * Return the error to the application instead
      */
     em = SetErrorMode(0);
     SetErrorMode(em | SEM_NOOPENFILEERRORBOX);
 
+    return 0;
+}
+
+/* Called by the JVM when ACR is loaded */
+JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
+{
+    UINT    em;
+    DWORD   rc;
+    JNIEnv *env;
+    void   *epp;
+    const wchar_t **pp = &sePrivileges[0];
+
+    UNREFERENCED(reserved);
+    if ((*vm)->GetEnv(vm, &epp, JNI_VERSION_1_4)) {
+        return JNI_ERR;
+    }
+    if (ACR_Initialize(vm)) {
+        /* Error during our init phase */
+        return JNI_ERR;
+    }
+    if ((env = ACR_GetJNIEnv()) == NULL)
+        return JNI_ERR;
+    if (ACR_InitCoreClasses(env) != ACR_SUCCESS)
+        return JNI_ERR;
+    if (ACR_InitClazzCache(env)  != ACR_SUCCESS)
+        return JNI_ERR;
+
     return JNI_VERSION_1_4;
 }
 
@@ -314,3 +329,4 @@
     }
     return tlsd->env;
 }
+

Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/platform.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/platform.c?rev=803248&r1=803247&r2=803248&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/platform.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/platform.c Tue Aug 11 19:13:35 2009
@@ -20,6 +20,7 @@
 #include "acr_string.h"
 #include "acr_platform.h"
 #include "acr_error.h"
+#include "acr_vm.h"
 
 static const char unknown[] = "unknown";
 extern PSID acr_everyone_sid;
@@ -34,6 +35,21 @@
     acr_int32_t i;
 } struct_align_t;
 
+static int initialized = 0;
+ACR_DECLARE(int) ACR_PlatformInitialize(JNIEnv *_E, int ios)
+{
+    if (initialized++)
+        return 0;
+    acr_page_size = (acr_size_t)acr_osinf->dwPageSize;
+    if (!acr_everyone_sid) {
+        acr_everyone_sid = ACR_AllocateWellKnownSid(_E, WinWorldSid);
+    }
+    if (!acr_adminsgr_sid) {
+        acr_adminsgr_sid = ACR_AllocateWellKnownSid(_E, WinBuiltinAdministratorsSid);
+    }
+    return acr_ioh_init(ios);
+}
+
 ACR_JNI_EXPORT_DECLARE(void, Platform, init0)(ACR_JNISTDARGS,
                                               jintArray p)
 {
@@ -43,7 +59,7 @@
     UNREFERENCED_O;
 
     (*_E)->GetIntArrayRegion(_E, p, 0, 16, &ia[0]);
-    if ((e = acr_ioh_init(ia[0]))) {
+    if ((e = ACR_PlatformInitialize(_E, ia[0]))) {
         /* Error initializing descriptor map table.
          * We cannot continue.
          */
@@ -64,19 +80,11 @@
 #endif
     ia[6]  =   248;
     ia[7]  =   32760;
-    acr_page_size = (acr_size_t)acr_osinf->dwPageSize;
     ia[8]  =   (jint)acr_page_size;
     ia[9]  =   (jint)sizeof(struct_align_t);
 
     (*_E)->SetIntArrayRegion(_E, p, 0, 16, &ia[0]);
 
-    if (!acr_everyone_sid) {
-        acr_everyone_sid = ACR_AllocateWellKnownSid(_E, WinWorldSid);
-    }
-    if (!acr_adminsgr_sid) {
-        acr_adminsgr_sid = ACR_AllocateWellKnownSid(_E, WinBuiltinAdministratorsSid);
-    }
-
 }
 
 ACR_JNI_EXPORT_DECLARE(jboolean, Platform, supported)(ACR_JNISTDARGS)