summaryrefslogtreecommitdiff
path: root/ace
diff options
context:
space:
mode:
authoragg1 <agg1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-07-25 02:29:28 +0000
committeragg1 <agg1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-07-25 02:29:28 +0000
commit091fbb2d3d94bb0a724f2d3639c1f51e707ff6e1 (patch)
treeb45ed5606c3d19263b6fe323b7bb43761270741d /ace
parent4a44ea2c64dfdb3ee0f4c42d1050462976c0224f (diff)
downloadATCD-091fbb2d3d94bb0a724f2d3639c1f51e707ff6e1.tar.gz
Mon Jul 24 21:22:03 2000 Andrew G. Gilpin <agg1@cs.wustl.edu>
Diffstat (limited to 'ace')
-rw-r--r--ace/OS.cpp75
-rw-r--r--ace/Object_Manager.cpp15
-rw-r--r--ace/Object_Manager.h27
-rw-r--r--ace/Parse_Node.cpp7
-rw-r--r--ace/Parse_Node.h7
5 files changed, 93 insertions, 38 deletions
diff --git a/ace/OS.cpp b/ace/OS.cpp
index 624b8a87fea..e20f99abb76 100644
--- a/ace/OS.cpp
+++ b/ace/OS.cpp
@@ -68,14 +68,20 @@ protected:
ACE_OS_Thread_Mutex_Guard (const ACE_OS_Thread_Mutex_Guard &);
};
-inline
+#if defined (ACE_IS_SPLITTING)
+# define ACE_SPECIAL_INLINE
+#else
+# define ACE_SPECIAL_INLINE inline
+#endif
+
+ACE_SPECIAL_INLINE
int
ACE_OS_Thread_Mutex_Guard::acquire (void)
{
return owner_ = ACE_OS::thread_mutex_lock (&lock_);
}
-inline
+ACE_SPECIAL_INLINE
int
ACE_OS_Thread_Mutex_Guard::release (void)
{
@@ -88,7 +94,7 @@ ACE_OS_Thread_Mutex_Guard::release (void)
}
}
-inline
+ACE_SPECIAL_INLINE
ACE_OS_Thread_Mutex_Guard::ACE_OS_Thread_Mutex_Guard (ACE_thread_mutex_t &m)
: lock_ (m)
{
@@ -136,14 +142,14 @@ protected:
const ACE_OS_Recursive_Thread_Mutex_Guard &);
};
-inline
+ACE_SPECIAL_INLINE
int
ACE_OS_Recursive_Thread_Mutex_Guard::acquire (void)
{
return owner_ = ACE_OS::recursive_mutex_lock (&lock_);
}
-inline
+ACE_SPECIAL_INLINE
int
ACE_OS_Recursive_Thread_Mutex_Guard::release (void)
{
@@ -156,7 +162,7 @@ ACE_OS_Recursive_Thread_Mutex_Guard::release (void)
}
}
-inline
+ACE_SPECIAL_INLINE
ACE_OS_Recursive_Thread_Mutex_Guard::ACE_OS_Recursive_Thread_Mutex_Guard (
ACE_recursive_thread_mutex_t &m)
: lock_ (m),
@@ -1505,7 +1511,7 @@ ACE_TRACE ("ACE_TSS_Ref::operator==");
}
// Check for inequality.
-inline
+ACE_SPECIAL_INLINE
int
ACE_TSS_Ref::operator!= (const ACE_TSS_Ref &tss_ref) const
{
@@ -1539,17 +1545,17 @@ ACE_TRACE ("ACE_TSS_Info::ACE_TSS_Info");
}
# if defined (ACE_HAS_NONSCALAR_THREAD_KEY_T)
- static inline int operator== (const ACE_thread_key_t &lhs,
- const ACE_thread_key_t &rhs)
- {
- return ! ACE_OS::memcmp (&lhs, &rhs, sizeof (ACE_thread_key_t));
- }
+static inline int operator== (const ACE_thread_key_t &lhs,
+ const ACE_thread_key_t &rhs)
+{
+ return ! ACE_OS::memcmp (&lhs, &rhs, sizeof (ACE_thread_key_t));
+}
- static inline int operator!= (const ACE_thread_key_t &lhs,
- const ACE_thread_key_t &rhs)
- {
- return ! (lhs == rhs);
- }
+static inline int operator!= (const ACE_thread_key_t &lhs,
+ const ACE_thread_key_t &rhs)
+{
+ return ! (lhs == rhs);
+}
# endif /* ACE_HAS_NONSCALAR_THREAD_KEY_T */
// Check for equality.
@@ -1593,7 +1599,7 @@ ACE_TSS_Keys::ACE_TSS_Keys (void)
}
}
-inline
+ACE_SPECIAL_INLINE
void
ACE_TSS_Keys::find (const u_int key, u_int &word, u_int &bit)
{
@@ -2074,7 +2080,6 @@ ACE_OS_thread_key_t ACE_TSS_Emulation::native_tss_key_;
/* static */
# if defined (ACE_HAS_THR_C_FUNC)
extern "C"
-# endif /* ACE_HAS_THR_C_FUNC */
void
ACE_TSS_Emulation_cleanup (void *ptr)
{
@@ -2082,6 +2087,15 @@ ACE_TSS_Emulation_cleanup (void *ptr)
// Really this must be used for ACE_TSS_Emulation code to make the TSS
// cleanup
}
+#else
+void
+ACE_TSS_Emulation_cleanup (void *ptr)
+{
+ ACE_UNUSED_ARG (ptr);
+ // Really this must be used for ACE_TSS_Emulation code to make the TSS
+ // cleanup
+}
+# endif /* ACE_HAS_THR_C_FUNC */
void **
ACE_TSS_Emulation::tss_base (void* ts_storage[], u_int *ts_created)
@@ -2604,10 +2618,24 @@ ace_cleanup_destroyer (ACE_Cleanup *object, void *param)
#if defined (ACE_PSOS)
extern "C" void ace_thread_adapter (unsigned long args)
+{
+ ACE_TRACE ("ace_thread_adapter");
+
+#if defined (ACE_HAS_TSS_EMULATION)
+ // As early as we can in the execution of the new thread, allocate
+ // its local TS storage. Allocate it on the stack, to save dynamic
+ // allocation/dealloction.
+ void *ts_storage[ACE_TSS_Emulation::ACE_TSS_THREAD_KEYS_MAX];
+ ACE_TSS_Emulation::tss_open (ts_storage);
+#endif /* ACE_HAS_TSS_EMULATION */
+
+ ACE_Thread_Adapter *thread_args = (ACE_Thread_Adapter *) args;
+
+ // Invoke the user-supplied function with the args.
+ thread_args->invoke ();
+}
#else /* ! defined (ACE_PSOS) */
-extern "C" void *
-ace_thread_adapter (void *args)
-#endif /* ACE_PSOS */
+extern "C" void * ace_thread_adapter (void *args)
{
ACE_TRACE ("ace_thread_adapter");
@@ -2624,10 +2652,9 @@ ace_thread_adapter (void *args)
// Invoke the user-supplied function with the args.
void *status = thread_args->invoke ();
-#if ! defined (ACE_PSOS)
return status;
-#endif /* ACE_PSOS */
}
+#endif /* ACE_PSOS */
ACE_Thread_Adapter::ACE_Thread_Adapter (ACE_THR_FUNC user_func,
diff --git a/ace/Object_Manager.cpp b/ace/Object_Manager.cpp
index 88a6cb502aa..f3bec50b9ff 100644
--- a/ace/Object_Manager.cpp
+++ b/ace/Object_Manager.cpp
@@ -112,9 +112,9 @@ private:
// We can't use the ACE_SVC_FACTORY_DECLARE macro here because this
// needs to be in the ACE_Export context rather than the
// ACE_Svc_Export context.
-extern "C" ACE_Export
-ACE_Service_Object *
-_make_ACE_Service_Manager (ACE_Service_Object_Exterminator *);
+//extern "C" ACE_Export
+//ACE_Service_Object *
+//_make_ACE_Service_Manager (ACE_Service_Object_Exterminator *);
ACE_Object_Manager_Preallocations::ACE_Object_Manager_Preallocations (void)
{
@@ -767,12 +767,13 @@ static ACE_Object_Manager_Manager ACE_Object_Manager_Manager_instance;
#if defined (ACE_HAS_THREADS)
+// hack to get around errors while compiling using split-cpp
+#if !defined (ACE_IS_SPLITTING)
// This is global so that it doesn't have to be declared in the header
// file. That would cause nasty circular include problems.
-typedef ACE_Cleanup_Adapter<ACE_Recursive_Thread_Mutex>
- ACE_Static_Object_Lock_Type;
-static ACE_Static_Object_Lock_Type *
- ACE_Static_Object_Lock_lock = 0;
+typedef ACE_Cleanup_Adapter<ACE_Recursive_Thread_Mutex> ACE_Static_Object_Lock_Type;
+static ACE_Static_Object_Lock_Type *ACE_Static_Object_Lock_lock = 0;
+#endif /* ! ACE_IS_SPLITTING */
// ACE_SHOULD_MALLOC_STATIC_OBJECT_LOCK isn't (currently) used by ACE.
// But, applications may find it useful for avoiding recursive calls
diff --git a/ace/Object_Manager.h b/ace/Object_Manager.h
index 91457dd2e46..101fbaf0927 100644
--- a/ace/Object_Manager.h
+++ b/ace/Object_Manager.h
@@ -432,5 +432,32 @@ public:
#include "ace/Managed_Object.h"
+#if !defined (ACE_LACKS_ACE_SVCCONF)
+// We can't use the ACE_SVC_FACTORY_DECLARE macro here because this
+// needs to be in the ACE_Export context rather than the
+// ACE_Svc_Export context.
+class ACE_Service_Object;
+extern "C" ACE_Export
+ACE_Service_Object *
+_make_ACE_Service_Manager (ACE_Service_Object_Exterminator *);
+#endif /* ! ACE_LACKS_ACE_SVCCONF */
+
+// hack to get around errors while compiling using split-cpp
+#if defined (ACE_HAS_THREADS)
+
+# if defined (ACE_IS_SPLITTING)
+typedef ACE_Cleanup_Adapter<ACE_Recursive_Thread_Mutex> ACE_Static_Object_Lock_Type;
+
+# if defined (__GNUC__)
+// With g++, suppress the warning that this is unused.
+static ACE_Static_Object_Lock_Type *ACE_Static_Object_Lock_lock __attribute__ ((unused)) = 0;
+# else
+static ACE_Static_Object_Lock_Type *ACE_Static_Object_Lock_lock = 0;
+# endif /* __GNUC__ */
+
+# endif /* ACE_IS_SPLITTING */
+
+#endif /* ACE_HAS_THREADS */
+
#include "ace/post.h"
#endif /* ACE_OBJECT_MANAGER_H */
diff --git a/ace/Parse_Node.cpp b/ace/Parse_Node.cpp
index 4e7b0d194bd..1bb269ca593 100644
--- a/ace/Parse_Node.cpp
+++ b/ace/Parse_Node.cpp
@@ -14,13 +14,6 @@
ACE_RCSID(ace, Parse_Node, "$Id$")
-// Keeps track of the number of errors encountered so far.
-extern int ace_yyerrno;
-
-// Global variable used to communicate between the parser and the main
-// program.
-extern ACE_Service_Config *ace_this_svc;
-
ACE_ALLOC_HOOK_DEFINE(ACE_Stream_Node)
void
diff --git a/ace/Parse_Node.h b/ace/Parse_Node.h
index 87e80ef0063..c3f98b13320 100644
--- a/ace/Parse_Node.h
+++ b/ace/Parse_Node.h
@@ -297,5 +297,12 @@ private:
#include "ace/Parse_Node.i"
#endif /* __ACE_INLINE__ */
+// Keeps track of the number of errors encountered so far.
+extern int ace_yyerrno;
+
+// Global variable used to communicate between the parser and the main
+// program.
+extern ACE_Service_Config *ace_this_svc;
+
#include "ace/post.h"
#endif /* ACE_PARSE_NODE_H */