harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From odea...@apache.org
Subject svn commit: r803118 - in /harmony/enhanced: classlib/trunk/modules/portlib/src/main/native/thread/unix/ drlvm/trunk/make/ drlvm/trunk/make/vm/ drlvm/trunk/vm/include/open/ drlvm/trunk/vm/thread/src/
Date Tue, 11 Aug 2009 13:44:27 GMT
Author: odeakin
Date: Tue Aug 11 13:44:26 2009
New Revision: 803118

URL: http://svn.apache.org/viewvc?rev=803118&view=rev
Log:
Add thread library function table to DRLVM, enabled by building with hy.no.thr=true option.

Added:
    harmony/enhanced/drlvm/trunk/vm/thread/src/thread_classlib_defs.h   (with props)
Modified:
    harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/thread/unix/makefile
    harmony/enhanced/drlvm/trunk/make/build-native.xml
    harmony/enhanced/drlvm/trunk/make/vm/common-vm.xml
    harmony/enhanced/drlvm/trunk/make/vm/hythr.xml
    harmony/enhanced/drlvm/trunk/vm/include/open/hythread.h
    harmony/enhanced/drlvm/trunk/vm/include/open/hythread_ext.h
    harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.exp
    harmony/enhanced/drlvm/trunk/vm/thread/src/thread_init.c
    harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h

Modified: harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/thread/unix/makefile
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/thread/unix/makefile?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/thread/unix/makefile (original)
+++ harmony/enhanced/classlib/trunk/modules/portlib/src/main/native/thread/unix/makefile Tue
Aug 11 13:44:26 2009
@@ -27,6 +27,6 @@
 OSLIBS += -lpthread
 MDLLIBFILES = $(LIBPATH)libhypool.a $(LIBPATH)libhycommon.a
 DLLNAME = ../libhythr$(HY_SHLIB_SUFFIX)
-EXPNAME = HYTHR_0.1
+EXPNAME = HYTHR_0.2
 
 include $(HY_HDK)/build/make/rules.mk

Modified: harmony/enhanced/drlvm/trunk/make/build-native.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/make/build-native.xml?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/make/build-native.xml (original)
+++ harmony/enhanced/drlvm/trunk/make/build-native.xml Tue Aug 11 13:44:26 2009
@@ -28,6 +28,10 @@
     </macrodef>
     
     <target name="setup-native-build" depends="-plugin-cpptasks">
+
+        <condition property="no.thr.mode">
+            <equals arg1="${hy.no.thr}" arg2="true"/>
+        </condition>
         
         <condition property="is.gcc">
             <equals arg1="${hy.cpp.compiler}" arg2="gcc"/>

Modified: harmony/enhanced/drlvm/trunk/make/vm/common-vm.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/make/vm/common-vm.xml?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/make/vm/common-vm.xml (original)
+++ harmony/enhanced/drlvm/trunk/make/vm/common-vm.xml Tue Aug 11 13:44:26 2009
@@ -32,6 +32,8 @@
             
             <defineset define="${refs.comp.mode}" if="refs.comp.mode"/>
 
+            <defineset define="HY_NO_THR" if="no.thr.mode" />
+
             <defineset define="NDEBUG" unless="is.cfg.debug"/>
             <defineset define="_DEBUG" if="is.cfg.debug" />
             <defineset define="VM_STATS" if="is.cfg.debug"/>

Modified: harmony/enhanced/drlvm/trunk/make/vm/hythr.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/make/vm/hythr.xml?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/make/vm/hythr.xml (original)
+++ harmony/enhanced/drlvm/trunk/make/vm/hythr.xml Tue Aug 11 13:44:26 2009
@@ -30,6 +30,7 @@
               <pathelement location="${drlvm.include.dir}" />
               <path refid="vm.include"/>
               <pathelement location="${vm.home}/thread/src" />
+              <pathelement location="${hy.hdk}/include" />
             </includepath>
 
             <fileset dir="${vm.home}/thread/src">

Modified: harmony/enhanced/drlvm/trunk/vm/include/open/hythread.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/include/open/hythread.h?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/include/open/hythread.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/include/open/hythread.h Tue Aug 11 13:44:26 2009
@@ -125,6 +125,67 @@
     UDATA yield_count;
 } HyThreadMonitorTracing;
 
+#ifdef HY_NO_THR
+
+/* Thread library version defines */
+#define HYTHREAD_MAJOR_VERSION_NUMBER  1
+#define HYTHREAD_MINOR_VERSION_NUMBER  0
+#define HYTHREAD_CAPABILITY_BASE  0
+#define HYTHREAD_CAPABILITY_STANDARD  1
+#define HYTHREAD_CAPABILITY_MASK ((U_64)(HYTHREAD_CAPABILITY_STANDARD))
+#define HYTHREAD_SET_VERSION(threadLibraryVersion, capabilityMask) \
+  (threadLibraryVersion)->majorVersionNumber = HYTHREAD_MAJOR_VERSION_NUMBER; \
+  (threadLibraryVersion)->minorVersionNumber = HYTHREAD_MINOR_VERSION_NUMBER; \
+  (threadLibraryVersion)->capabilities = (capabilityMask)
+#define HYTHREAD_SET_VERSION_DEFAULT(threadLibraryVersion) \
+  (threadLibraryVersion)->majorVersionNumber = HYTHREAD_MAJOR_VERSION_NUMBER; \
+  (threadLibraryVersion)->minorVersionNumber = HYTHREAD_MINOR_VERSION_NUMBER; \
+  (threadLibraryVersion)->capabilities = HYTHREAD_CAPABILITY_MASK
+
+typedef struct HyThreadLibraryVersion
+{
+  U_16 majorVersionNumber;
+  U_16 minorVersionNumber;
+  U_32 padding;
+  U_64 capabilities;
+} HyThreadLibraryVersion;
+
+/* Thread library function table */
+typedef struct HyThreadLibrary {
+  struct HyThreadLibraryVersion threadVersion;
+
+  IDATA (PVMCALL sem_destroy) (struct HyThreadLibrary *threadLibraryFuncs, hysem_t s);
+  IDATA (PVMCALL sem_init) (struct HyThreadLibrary *threadLibraryFuncs, hysem_t * sp, I_32
initValue);
+  IDATA (PVMCALL sem_post) (struct HyThreadLibrary *threadLibraryFuncs, hysem_t s);
+  IDATA (PVMCALL sem_wait) (struct HyThreadLibrary *threadLibraryFuncs, hysem_t s);
+
+  IDATA (PVMCALL thread_attach) (struct HyThreadLibrary *threadLibraryFuncs, hythread_t *
handle);
+  IDATA (PVMCALL thread_create) (struct HyThreadLibrary *threadLibraryFuncs, hythread_t *
handle, UDATA stacksize, UDATA priority,
+                UDATA suspend, hythread_entrypoint_t entrypoint,
+                void *entryarg);
+  void  (PVMCALL thread_detach) (struct HyThreadLibrary *threadLibraryFuncs, hythread_t thread);
+  void  (PVMCALL NORETURN thread_exit) (struct HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor);
+  UDATA *(PVMCALL thread_global) (struct HyThreadLibrary *threadLibraryFuncs, char *name);
+  IDATA (PVMCALL thread_monitor_destroy) (struct HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor);
+  IDATA (PVMCALL thread_monitor_enter) (struct HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor);
+  IDATA (PVMCALL thread_monitor_exit) (struct HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor);
+  IDATA (PVMCALL thread_monitor_init_with_name) (struct HyThreadLibrary *threadLibraryFuncs,
hythread_monitor_t * handle, UDATA flags, char *name);
+  IDATA (PVMCALL thread_monitor_notify) (struct HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor);
+  IDATA (PVMCALL thread_monitor_notify_all) (struct HyThreadLibrary *threadLibraryFuncs,
hythread_monitor_t monitor);
+  IDATA (PVMCALL thread_monitor_wait) (struct HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor);
+  hythread_t (PVMCALL thread_self) (struct HyThreadLibrary *threadLibraryFuncs);
+  IDATA (PVMCALL thread_sleep) (struct HyThreadLibrary *threadLibraryFuncs, I_64 millis);
+  IDATA (PVMCALL thread_tls_alloc) (struct HyThreadLibrary *threadLibraryFuncs, hythread_tls_key_t
* handle);
+  IDATA (PVMCALL thread_tls_free) (struct HyThreadLibrary *threadLibraryFuncs, hythread_tls_key_t
key);
+  void *(PVMCALL thread_tls_get) (struct HyThreadLibrary *threadLibraryFuncs, hythread_t
thread, hythread_tls_key_t key);
+  IDATA (PVMCALL thread_tls_set) (struct HyThreadLibrary *threadLibraryFuncs, hythread_t
thread, hythread_tls_key_t key, void *value);
+
+  void *self_handle;
+} HyThreadLibrary;
+
+#endif /* HY_NO_THR */
+
+
 #define HYSIZEOF_HyThreadMonitorTracing 24
 
 

Modified: harmony/enhanced/drlvm/trunk/vm/include/open/hythread_ext.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/include/open/hythread_ext.h?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/include/open/hythread_ext.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/include/open/hythread_ext.h Tue Aug 11 13:44:26 2009
@@ -175,7 +175,7 @@
 typedef struct HyLatch *hylatch_t;
 
 typedef struct HyThread *hythread_iterator_t;
-typedef struct HyThreadLibrary *hythread_library_t;
+typedef struct HyThreadLibraryInternal *hythread_library_t;
 typedef U_32  hythread_thin_monitor_t;
 typedef void (*hythread_event_callback_proc)(void);
 typedef int (HYTHREAD_PROC *hythread_wrapper_t)(void*);

Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.exp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.exp?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.exp (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/hythr.exp Tue Aug 11 13:44:26 2009
@@ -1,6 +1,9 @@
-HYTHR_0.1 {
+HYTHR_0.2 {
     global :
 get_tls_helper;
+hythread_allocate_library;
+hythread_startup_library;
+hythread_shutdown_library;
 hythread_detach;
 hythread_detach_ex;
 hythread_tls_alloc;

Added: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_classlib_defs.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_classlib_defs.h?rev=803118&view=auto
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/thread_classlib_defs.h (added)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/thread_classlib_defs.h Tue Aug 11 13:44:26
2009
@@ -0,0 +1,174 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+/* Definitions of wrapper functions in thread library function table */
+
+#ifndef THREAD_CLASSLIB_DEFS_H
+#define THREAD_CLASSLIB_DEFS_H
+
+#include "hythread.h"
+
+#if defined(PLATFORM_POSIX)
+#define THREXPORT
+#else  // !PLATFORM_POSIX
+#define THREXPORT __declspec(dllexport)
+#endif 
+
+IDATA VMCALL hysem_destroy_cl(HyThreadLibrary *threadLibraryFuncs, hysem_t s) 
+{
+    return hysem_destroy(s);
+}
+
+IDATA VMCALL hysem_init_cl(HyThreadLibrary *threadLibraryFuncs, hysem_t * sp, I_32 initValue)

+{
+    /* Just return 0 - hysem_init does not exist in DRLVM */
+    return 0;
+}
+
+IDATA VMCALL hysem_post_cl(HyThreadLibrary *threadLibraryFuncs, hysem_t s)
+{
+    return hysem_post(s);
+}
+
+IDATA VMCALL hysem_wait_cl(HyThreadLibrary *threadLibraryFuncs, hysem_t s)
+{
+    return hysem_wait(s);
+}
+
+IDATA VMCALL hythread_attach_cl(HyThreadLibrary *threadLibraryFuncs, hythread_t * handle)
+{
+    return hythread_attach(handle);
+}
+
+IDATA VMCALL hythread_create_cl(HyThreadLibrary *threadLibraryFuncs, hythread_t * handle,

+                         UDATA stacksize, UDATA priority,
+                         UDATA suspend, hythread_entrypoint_t entrypoint,
+                         void *entryarg)
+{
+    return hythread_create(handle, stacksize, priority, suspend, entrypoint, entryarg);
+}
+
+void VMCALL hythread_detach_cl(HyThreadLibrary *threadLibraryFuncs, hythread_t thread)
+{
+    hythread_detach(thread);
+}
+
+void VMCALL hythread_exit_cl(HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t monitor)
+{
+    hythread_exit(monitor);
+}
+
+
+UDATA * VMCALL hythread_global_cl(HyThreadLibrary *threadLibraryFuncs, char *name) 
+{
+    return hythread_global(name);
+}
+
+IDATA VMCALL hythread_monitor_destroy_cl(HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor)
+{
+    return hythread_monitor_destroy(monitor);
+}
+
+IDATA VMCALL hythread_monitor_enter_cl(HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor) 
+{
+    return hythread_monitor_enter(monitor);
+}
+
+IDATA VMCALL hythread_monitor_exit_cl(HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor) 
+{
+    return hythread_monitor_exit(monitor);
+}
+
+IDATA VMCALL hythread_monitor_init_with_name_cl(HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
* handle, UDATA flags, char *name) 
+{
+    return hythread_monitor_init_with_name(handle, flags, name);
+}
+
+IDATA VMCALL hythread_monitor_notify_cl(HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor) 
+{
+    return hythread_monitor_notify(monitor);
+}
+
+IDATA VMCALL hythread_monitor_notify_all_cl(HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor) 
+{
+    return hythread_monitor_notify_all(monitor);
+}
+
+IDATA VMCALL hythread_monitor_wait_cl(HyThreadLibrary *threadLibraryFuncs, hythread_monitor_t
monitor) 
+{
+    return hythread_monitor_wait(monitor);
+}
+
+hythread_t VMCALL hythread_self_cl(HyThreadLibrary *threadLibraryFuncs)
+{
+    return hythread_self();
+}
+
+IDATA VMCALL hythread_sleep_cl(HyThreadLibrary *threadLibraryFuncs, I_64 millis)
+{
+    return hythread_sleep(millis);
+}
+
+IDATA VMCALL hythread_tls_alloc_cl(HyThreadLibrary *threadLibraryFuncs, hythread_tls_key_t
* handle)
+{
+    return hythread_tls_alloc(handle);
+}
+
+IDATA VMCALL hythread_tls_free_cl(HyThreadLibrary *threadLibraryFuncs, hythread_tls_key_t
key)
+{
+    return hythread_tls_free(key);
+}
+
+void * VMCALL hythread_tls_get_cl(HyThreadLibrary *threadLibraryFuncs, hythread_t thread,
hythread_tls_key_t key)
+{
+    return hythread_tls_get(thread, key);
+}
+
+IDATA VMCALL hythread_tls_set_cl(HyThreadLibrary *threadLibraryFuncs, hythread_t thread,
hythread_tls_key_t key, void *value)
+{
+    return hythread_tls_set(thread, key, value);
+}
+
+
+static HyThreadLibrary MasterThreadLibraryTable = {
+	{HYTHREAD_MAJOR_VERSION_NUMBER, HYTHREAD_MINOR_VERSION_NUMBER, 0, HYTHREAD_CAPABILITY_MASK},
+	hysem_destroy_cl,
+	hysem_init_cl,
+	hysem_post_cl,
+	hysem_wait_cl,
+	hythread_attach_cl,
+	hythread_create_cl,
+	hythread_detach_cl,
+	hythread_exit_cl,
+	hythread_global_cl,
+	hythread_monitor_destroy_cl, 
+	hythread_monitor_enter_cl,
+	hythread_monitor_exit_cl,
+	hythread_monitor_init_with_name_cl,
+	hythread_monitor_notify_cl,
+	hythread_monitor_notify_all_cl,
+	hythread_monitor_wait_cl,
+	hythread_self_cl,
+	hythread_sleep_cl,
+	hythread_tls_alloc_cl,
+	hythread_tls_free_cl,
+	hythread_tls_get_cl,
+	hythread_tls_set_cl,
+	NULL,
+};
+
+#endif

Propchange: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_classlib_defs.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_init.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_init.c?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/thread_init.c (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/thread_init.c Tue Aug 11 13:44:26 2009
@@ -27,6 +27,10 @@
 #include "port_mutex.h"
 #include "thread_private.h"
 
+#ifdef HY_NO_THR
+#include "thread_classlib_defs.h"
+#endif /* HY_NO_THR */
+
 //global constants:
 
 // Global pointer to the threading library
@@ -67,6 +71,92 @@
 }
 #endif
 
+
+#ifdef HY_NO_THR
+
+/**
+ * Determine the size of the thread library.
+ * 
+ * Given a thread library version, return the size of the structure in bytes
+ * required to be allocated.
+ * 
+ * @param[in] version The HyThreadLibraryVersion structure.
+ * @return size of thread library on success, zero on failure
+ */
+UDATA VMCALL
+hythread_getSize (struct HyThreadLibraryVersion * version)
+{
+    /* Can't initialize a structure that is not understood by this version of the thread
library */
+    if (HYTHREAD_MAJOR_VERSION_NUMBER != version->majorVersionNumber)
+    {
+        return 0;
+    }
+
+    return sizeof (HyThreadLibrary);
+}
+
+/*
+ * Stub startup function
+ */
+HY_CFUNC THREXPORT I_32 VMCALL
+hythread_startup_library (struct HyThreadLibraryInternal *threadLibrary)
+{
+    /* Do nothing here - thread library initialised by hythread_allocate_library() */
+    return 0;
+}
+
+/*
+ * Shutdown the thread library - forwards call to hythread_shutdown()
+ */
+HY_CFUNC THREXPORT I_32 VMCALL
+hythread_shutdown_library (struct HyThreadLibraryInternal *threadLibrary)
+{
+    hythread_shutdown();
+	return 0;
+}
+
+/*
+ * Allocate the thread library function table and return it's pointer
+ */
+HY_CFUNC THREXPORT I_32 VMCALL
+hythread_allocate_library (struct HyThreadLibraryVersion *expectedVersion,
+                           struct HyThreadLibrary **threadLibraryFuncs)
+{
+    UDATA size = hythread_getSize (expectedVersion);
+    HyThreadLibrary *threadLib;
+
+    if (0 == size) 
+    {
+        return -1;
+    }
+
+    hythread_lib_create(&TM_LIBRARY);
+
+    /* Allocate memory for the function table */
+    *threadLibraryFuncs = NULL;
+    threadLib = (HyThreadLibrary*) apr_palloc(TM_POOL, sizeof(HyThreadLibrary));
+    if (NULL == threadLib)
+    {
+        return -1;
+    }
+
+    /* Null and initialize the table passed in */
+	memset(threadLib, 0, size);
+	memcpy(threadLib, &MasterThreadLibraryTable, size);
+
+    /* Set version numbers */
+	threadLib->threadVersion.majorVersionNumber = expectedVersion->majorVersionNumber;
+	threadLib->threadVersion.minorVersionNumber = expectedVersion->minorVersionNumber;
+	threadLib->threadVersion.capabilities = HYTHREAD_CAPABILITY_MASK;
+
+    threadLib->self_handle = threadLib;
+    *threadLibraryFuncs = threadLib;
+
+    return 0;
+}
+
+#endif /* HY_NO_THR */
+
 /**
  * Creates and initializes a threading library.
  *
@@ -89,7 +179,7 @@
     apr_status = apr_pool_create(&TM_POOL, NULL);
     if (apr_status != APR_SUCCESS) return CONVERT_ERROR(apr_status);
 
-    *lib = (hythread_library_t) apr_palloc(TM_POOL, sizeof(HyThreadLibrary));
+    *lib = (hythread_library_t) apr_palloc(TM_POOL, sizeof(HyThreadLibraryInternal));
     if (*lib == NULL) return TM_ERROR_OUT_OF_MEMORY;
 
     hythread_init(*lib);

Modified: harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h?rev=803118&r1=803117&r2=803118&view=diff
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/thread/src/thread_private.h Tue Aug 11 13:44:26 2009
@@ -75,12 +75,12 @@
 extern int16 tm_tls_size;
 
 
-typedef struct HyThreadLibrary {
+typedef struct HyThreadLibraryInternal {
     IDATA a;
     osmutex_t TM_LOCK;
     IDATA     nondaemon_thread_count;
     hycond_t  nondaemon_thread_cond;
-} HyThreadLibrary;
+} HyThreadLibraryInternal;
 
 /** 
   * hythread_group_t pointer to the first element in the thread group



Mime
View raw message