You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/08/02 23:06:55 UTC

svn commit: r428149 - in /incubator/harmony/enhanced/drlvm/trunk: build/make/components/vm/hythr.xml vm/vmcore/src/thread/hythr/hythr.def vm/vmcore/src/thread/hythr/hythr.exp vm/vmcore/src/thread/hythr/hythreads.cpp vm/vmcore/src/thread/hythr/hythreads.h

Author: geirm
Date: Wed Aug  2 14:06:54 2006
New Revision: 428149

URL: http://svn.apache.org/viewvc?rev=428149&view=rev
Log:
HARMONY-926

Make necessary fixes to threading so that we can work
with launcher.  In theory, we're good to go with the 
launcher.

Modified:
    incubator/harmony/enhanced/drlvm/trunk/build/make/components/vm/hythr.xml
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.def
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.exp
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.cpp
    incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.h

Modified: incubator/harmony/enhanced/drlvm/trunk/build/make/components/vm/hythr.xml
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/build/make/components/vm/hythr.xml?rev=428149&r1=428148&r2=428149&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/build/make/components/vm/hythr.xml (original)
+++ incubator/harmony/enhanced/drlvm/trunk/build/make/components/vm/hythr.xml Wed Aug  2 14:06:54 2006
@@ -27,7 +27,7 @@
 
 <project name="vm.hythr">
     <target name="init" depends="common_vm">
-        <property name="build.depends" value="extra.apr,vm.vmcore" />
+        <property name="build.depends" value="extra.apr,extra.aprutil" />
         <property name="libname" value="hythr" />
         <property name="outtype" value="shared" />
         <property name="src" location="${build.vm.home}" />
@@ -62,7 +62,7 @@
             </select>
 
             <select os="win">
-                <defineset define="_USRDLL" />
+                <defineset define="_USRDLL,APR_DECLARE_STATIC" />
             </select>
 
             <select os="lnx">
@@ -90,8 +90,10 @@
                 <linkerarg value="-Wl,--version-script,${src}/vmcore/src/thread/hythr/hythr.exp" />
             </select>
 
+            <libset libs="${extra.apr.lib}"
+                    dir="${extra.apr.libdir}" />
+
             <select os="win">
-                <libset libs="${vm.vmcore.lib}" dir="${vm.vmcore.libdir}" />
                 <syslibset libs="advapi32,ws2_32" />
             </select>
         </linker>

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.def
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.def?rev=428149&r1=428148&r2=428149&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.def (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.def Wed Aug  2 14:06:54 2006
@@ -1,21 +1,22 @@
 LIBRARY	HYTHR
 
 EXPORTS
-	hythread_monitor_init_with_name 
-	hythread_monitor_destroy 
-	hythread_monitor_try_enter 
-	hythread_monitor_enter
-	hythread_monitor_notify_all 
-	hythread_attach 
-	hythread_create 
-	hythread_detach 
-	hythread_global
-        hythread_self
-	hythread_tls_alloc
-	hythread_tls_free 
-	hythread_tls_set 
-
-        hythread_monitor_wait
-        hythread_monitor_exit
-	hythread_tls_get
+       hythread_attach
+       hythread_create
+       hythread_detach
+       hythread_exit
+       hythread_global
+       hythread_monitor_destroy
+       hythread_monitor_enter
+       hythread_monitor_exit
+       hythread_monitor_init_with_name
+       hythread_monitor_notify
+       hythread_monitor_notify_all
+       hythread_monitor_try_enter
+       hythread_monitor_wait
+       hythread_self
+       hythread_tls_alloc
+       hythread_tls_free
+       hythread_tls_get
+       hythread_tls_set
  

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.exp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.exp?rev=428149&r1=428148&r2=428149&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.exp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythr.exp Wed Aug  2 14:06:54 2006
@@ -1,20 +1,22 @@
 HYTHR_0.1 {
-	global :
-	hythread_monitor_init_with_name;
-	hythread_monitor_destroy;
-	hythread_monitor_try_enter;
-	hythread_monitor_enter;
-	hythread_monitor_notify_all;
-	hythread_attach;
-	hythread_create;
-	hythread_detach;
-	hythread_global;
-        hythread_self;
-	hythread_tls_alloc;
-	hythread_tls_free;
-	hythread_tls_set;
-        hythread_monitor_wait;
-        hythread_monitor_exit;
-	hythread_tls_get;
-	local : *;
+    global :
+    hythread_attach;
+    hythread_create;
+    hythread_detach;
+    hythread_exit;
+    hythread_global;
+    hythread_monitor_destroy;
+    hythread_monitor_enter;
+    hythread_monitor_exit;
+    hythread_monitor_init_with_name;
+    hythread_monitor_notify;
+    hythread_monitor_notify_all;
+    hythread_monitor_try_enter;
+    hythread_monitor_wait;
+    hythread_self;
+    hythread_tls_alloc;
+    hythread_tls_free;
+    hythread_tls_get;
+    hythread_tls_set;
+    local : *;
 };

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.cpp
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.cpp?rev=428149&r1=428148&r2=428149&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.cpp (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.cpp Wed Aug  2 14:06:54 2006
@@ -53,6 +53,7 @@
 // Will do all initilalization of thread library.
 // init global_monitor now.
 JNIEXPORT void  __cdecl hythread_init (void*  lib)  {
+    apr_initialize();
     hythread_monitor_init_with_name(&p_global_monitor, 0, "Thread Global Monitor");
     hythread_monitor_t *mon = (hythread_monitor_t*)hythread_global(GLOBAL_MONITOR_NAME);
     *mon = p_global_monitor;
@@ -118,6 +119,12 @@
     return 0; 
 }
 JNIEXPORT int __cdecl
+hythread_monitor_notify(hythread_monitor_t monitor){ 
+    apr_status_t stat = apr_thread_cond_signal(monitor->cond);
+    RET_ON_ERROR(stat)
+    return 0; 
+}
+JNIEXPORT int __cdecl
 hythread_monitor_notify_all (hythread_monitor_t monitor){ 
     apr_status_t stat = apr_thread_cond_broadcast(monitor->cond);
     RET_ON_ERROR(stat)
@@ -257,5 +264,27 @@
     RET_ON_ERROR(stat);
     return 0;
 }
+
+
+JNIEXPORT int __cdecl
+hythread_exit (hythread_monitor_t monitor) {
+   apr_status_t stat;
+   apr_os_thread_t aott;
+   apr_thread_t *att = NULL;
+
+   // att = (apr_thread_t*)apr_pcalloc(get_pool(), sizeof(apr_thread_t*));	
+   aott = apr_os_thread_current();
+   stat = apr_os_thread_put(&att, &aott, get_pool());
+   RET_ON_ERROR(stat);
+    
+   if (monitor) {
+      hythread_monitor_exit(monitor);
+   }
+
+   return apr_thread_exit(att, 0);
+}
+
+
+
 
 }// extern "C"

Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.h
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.h?rev=428149&r1=428148&r2=428149&view=diff
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.h (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/thread/hythr/hythreads.h Wed Aug  2 14:06:54 2006
@@ -51,6 +51,8 @@
 JNIEXPORT int __cdecl 
 hythread_monitor_exit (hythread_monitor_t monitor);
 JNIEXPORT int __cdecl
+hythread_monitor_notify (hythread_monitor_t monitor);
+JNIEXPORT int __cdecl
 hythread_monitor_notify_all (hythread_monitor_t monitor);
 JNIEXPORT int __cdecl
 hythread_monitor_wait (hythread_monitor_t monitor);
@@ -63,6 +65,8 @@
 JNIEXPORT void __cdecl 
 hythread_detach (hythread_t handle);
 JNIEXPORT hythread_t __cdecl hythread_self();
+JNIEXPORT int __cdecl
+hythread_exit (hythread_monitor_t monitor);
 
 JNIEXPORT unsigned* __cdecl 
 hythread_global (char* name);