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)