From 402a831c156e15ff96b1aa302e79d5dcd5562516 Mon Sep 17 00:00:00 2001 From: iliyan Date: Sun, 22 Oct 2006 19:34:18 +0000 Subject: ChangeLogTag: Sun Oct 22 19:33:23 UTC 2006 Iliyan Jeliazkov - imported changes --- ChangeLog | 90 +++++++++++++++++++++ TAO/ChangeLog | 3 +- THANKS | 1 + ace/Logging_Strategy.h | 8 +- ace/OS_NS_stdlib.cpp | 8 +- ace/Sock_Connect.cpp | 4 +- ace/TSS_T.cpp | 8 +- ace/TSS_T.h | 6 +- ace/Task_T.h | 12 ++- ace/Token_Request_Reply.inl | 3 +- ace/Truncate.h | 94 +++++++++++++++++++++- .../config/ciao_static_dnc_app.mpb | 3 +- bin/PerlACE/ProcessVX.pm | 4 +- bin/PerlACE/ProcessVX_Unix.pm | 3 +- bin/PerlACE/Run_Test.pm | 7 +- configure.ac | 5 -- 16 files changed, 216 insertions(+), 43 deletions(-) diff --git a/ChangeLog b/ChangeLog index eb8fc45483e..e032c1adcab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,93 @@ +Sun Oct 22 08:11:25 UTC 2006 Ossama Othman + + * ace/Token_Request_Reply.inl (token_name): + + Simplified use of ACE_Utils::Truncate<> function template. Only + the "TO" type must be explicitly specified. The "FROM" type is + deduced automatically by the compiler. Note that explicitly + specifying both template parameters is perfectly valid, too. + + * ace/Truncate.h (Truncator): + + Added char/int specializations for Borland to allow the + Integer_Truncate_Test to compile. All of the Borland-specific + Truncator specializations are meant to be a temporary workaround + until Borland C++ is capable of supporting the generalized + implementation. + +Sat Oct 21 14:49:21 UTC 2006 Steve Huston + + * ace/TSS_T.{h cpp}: Added "volatile" keyword to once_ member + since it can be changed by other threads. Removed the lock + acquiring from the ts_object() methods - after once_ is checked, + there are no further needs for locks. When needed, the key_ is + set up by ts_init() which does acquire a lock. This avoids a lock + acquire/release cycle on all calls when initialization of the + ACE_TSS object is not required, speeding up performance. Thanks to + Guy Peleg for reporting this and + to Russell Mora for assisting in + analyzing the situation and recommending the particular fixes. + + * ace/Logging_Strategy.h: Minor doxygen improvements. + + * ace/Sock_Connect.cpp: When checking for IPv6 interfaces on Windows, + there's two conditionally compiled blocks of code. One block was + built if ACE_HAS_IPV6 SIO_ADDRESS_LIST_QUERY are both defined; the + other was built if ACE_HAS_IPV6 is defined. Added the check for + SIO_ADDRESS_LIST_QUERY to the second case as well since it makes + no sense to run it if the first isn't built. Thanks to Andre + Kostur for this fix. Also see: + Mon Oct 16 14:24:25 UTC 2006 Steve Huston + + * ace/Task_T.h (reply): Clarified what happens on a reply(). Thanks + to Doug Schmidt for explaining the rationale for this. + + * ace/Token_Request_Reply.inl (token_name): VC7.1 had trouble grokking + the ACE_Utils::Truncate arguments in this case, so add the types + to a more complete specification of what template is desired. + +Sat Oct 21 15:19:46 UTC 2006 Steve Huston + + * configure.ac: Removed the check for LINUX_VERSION that disabled + the check for epoll on Linux. Just let the check run - the macros + used checked the kernel/C version used to build the kernel instead + of the running kernel itself (I think...). In any event, the + use of the macros to disable the check prevented the check from + running on systems (such as RHEL 4) that do have epoll. Thank you + to Brian Campbell for researching + this area. + +Sat Oct 21 10:48:12 UTC 2006 Martin Corino + + * bin/PerlACE/RunTest.pm: + * bin/PerlACE/ProcessVX.pm: + * bin/PerlACE/ProcessVX_Unix.pm: + + Changes to accomodate running autotests for VxWorks RTPs on + Linux hosts. + +Sat Oct 21 04:34:33 UTC 2006 Ossama Othman + + * ace/OS_NS_stdlib.cpp: + + Always include "ace/Numeric_Limits.h" in the ACE_LACKS_MKSTEMP + case. There is no need to conditionally include it when "max" + is undefined. Addresses VxWorks build errors. + + * ace/Truncate.h: + + Only use workaround for Borland compiler versions less than or + equal to 0x582. Thanks to Johnny for the suggestion. + + * tests/Integer_Truncate_Test.cpp (sizeof_from_lt_sizeof_to): + + Explicitly cast types in inequality comparison to silence + comparison of signed and unsigned warnings. It's not clear why + the warning is occuring since both types are unsigned. + + Removed remaining set of redundant parentheses that were + missed in a previous commit. + Fri Oct 20 12:55:12 UTC 2006 Johnny Willemsen * ace/Service_Manger.{h,cpp}: diff --git a/TAO/ChangeLog b/TAO/ChangeLog index b7a569855fd..86f403b9d57 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -4,7 +4,8 @@ Fri Oct 20 16:54:32 UTC 2006 Chad Elliott Fixed a memory leak where the TAO_Adapter would be leaked in the event that an exception occurred before the adapter was added to - the adapter registry. + the adapter registry. Thanks to Artur DeEsperanto for reporting this. This fixes bugid 2686. * tao/PortableServer/Object_Adapter.cpp: diff --git a/THANKS b/THANKS index d4cd7888b22..728ddb88804 100644 --- a/THANKS +++ b/THANKS @@ -2153,6 +2153,7 @@ Zhamak Dehghani Charles Calkins Manuel Traut Drew Reynaud +Artur DeEsperanto I would particularly like to thank Paul Stephenson, who worked with me at Ericsson in the early 1990's. Paul devised the recursive Makefile diff --git a/ace/Logging_Strategy.h b/ace/Logging_Strategy.h index 89b4427e0eb..bef98026f97 100644 --- a/ace/Logging_Strategy.h +++ b/ace/Logging_Strategy.h @@ -30,8 +30,9 @@ ACE_BEGIN_VERSIONED_NAMESPACE_DECL /** * @class ACE_Logging_Strategy * - * @brief This class provides the hooks to control the output produced - * by any of the network services. + * @brief This class provides a way to dynamically configure the ACE logging + * mechanism at run time as well as enable the mechanisms for limiting + * log file size and log file backup/rotation capability. * * Depending upon when this service is invoked and with what * flags, the output of other network services can be @@ -73,7 +74,8 @@ ACE_BEGIN_VERSIONED_NAMESPACE_DECL * and then logging_strategy will use your reactor. If you're * dynamically linking the @c ACE_Logging_Strategy then you can use * the @c ACE_Dynamic_Service template to get a pointer to the - * @c ACE_Logging_Strategy. */ + * @c ACE_Logging_Strategy. + */ class ACE_Export ACE_Logging_Strategy : public ACE_Service_Object { public: diff --git a/ace/OS_NS_stdlib.cpp b/ace/OS_NS_stdlib.cpp index 61b6a64fee8..0850b2a63df 100644 --- a/ace/OS_NS_stdlib.cpp +++ b/ace/OS_NS_stdlib.cpp @@ -25,9 +25,7 @@ ACE_RCSID (ace, # include "ace/OS_NS_fcntl.h" # include "ace/OS_NS_ctype.h" # include "ace/OS_NS_sys_time.h" -# if !defined (max) -# include "ace/Numeric_Limits.h" -# endif +# include "ace/Numeric_Limits.h" #endif /* ACE_LACKS_MKSTEMP */ ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -624,12 +622,8 @@ ACE_OS::mkstemp_emulation (ACE_TCHAR * s) // greatly slowing down this mkstemp() implementation. It is more // practical to limit the search space to UTF-8 / ASCII characters // (i.e. 127 characters). -#if defined (max) - static float const MAX_VAL = static_cast (127); -#else static float const MAX_VAL = static_cast (ACE_Numeric_Limits::max ()); -#endif /* ACE_HAS_WINCE */ // Use high-order bits rather than low-order ones (e.g. rand() % // MAX_VAL). See Numerical Recipes in C: The Art of Scientific diff --git a/ace/Sock_Connect.cpp b/ace/Sock_Connect.cpp index 1817f6d3372..04725652697 100644 --- a/ace/Sock_Connect.cpp +++ b/ace/Sock_Connect.cpp @@ -632,7 +632,7 @@ ACE::get_ip_interfaces (size_t &count, ++count; } -# if defined (ACE_HAS_IPV6) +# if defined (ACE_HAS_IPV6) && defined (SIO_ADDRESS_LIST_QUERY) // Now go through the list and transfer the good ones to the list of // because they're down or don't have an IP address. for (i = 0; i < n_v6_interfaces; i++) @@ -1184,7 +1184,7 @@ ACE::get_ip_interfaces (size_t &count, # endif ) { - int addrlen = static_cast (sizeof (struct sockaddr_in)); + int addrlen = static_cast (sizeof (struct sockaddr_in)); # if defined (ACE_HAS_IPV6) if (addr->sin_family == AF_INET6) addrlen = static_cast (sizeof (struct sockaddr_in6)); diff --git a/ace/TSS_T.cpp b/ace/TSS_T.cpp index 1157bcbd38d..221b0f656b6 100644 --- a/ace/TSS_T.cpp +++ b/ace/TSS_T.cpp @@ -92,7 +92,7 @@ ACE_TSS::cleanup (void *ptr) } template int -ACE_TSS::ts_init (void) +ACE_TSS::ts_init (void) { // Ensure that we are serialized! ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->keylock_, 0); @@ -263,9 +263,6 @@ ACE_TSS::ts_get (void) const template TYPE * ACE_TSS::ts_object (void) const { - // Ensure that we are serialized! - ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, (ACE_Thread_Mutex &) this->keylock_, 0); - if (this->once_ == 0) // Return 0 if we've never been initialized. return 0; @@ -312,9 +309,6 @@ ACE_TSS::ts_object (TYPE *new_ts_obj) return 0; } - // Ensure that we are serialized! - ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->keylock_, 0); - TYPE *ts_obj = 0; #if defined (ACE_HAS_THR_C_DEST) diff --git a/ace/TSS_T.h b/ace/TSS_T.h index ee336ebe870..98322a9295a 100644 --- a/ace/TSS_T.h +++ b/ace/TSS_T.h @@ -65,7 +65,7 @@ ACE_BEGIN_VERSIONED_NAMESPACE_DECL * However, if you must use an older compiler that won't work with a built-in * type, the ACE_TSS_Type_Adapter class template, below, can be used for * adapting built-in types to work with ACE_TSS. - * + * * @note Beware when creating static instances of this type * (as with any other, btw). The unpredictable order of initialization * across different platforms may cause a situation where one uses @@ -125,7 +125,7 @@ public: //@{ /** * Get the thread-specific object for this object. - * + * * @return 0 if the object has never been initialized, otherwise returns * the calling thread's copy of the data. The returned pointer * may be 0 under odd error conditions; check errno for further @@ -190,7 +190,7 @@ protected: ACE_Thread_Mutex keylock_; /// "First time in" flag. - int once_; + volatile int once_; /// Key for the thread-specific error data. ACE_thread_key_t key_; diff --git a/ace/Task_T.h b/ace/Task_T.h index 285972f9d1f..83e148e4a4e 100644 --- a/ace/Task_T.h +++ b/ace/Task_T.h @@ -96,9 +96,15 @@ public: // Should be protected: int ungetq (ACE_Message_Block *, ACE_Time_Value *timeout = 0); /** - * Turn the message around and send it back down the Stream. Note - * that uses <{absolute}> time rather than <{relative}> - * time. + * Turn the message around, sending it in the opposite direction in + * the stream. To do this, the message is put onto the task next in + * the stream after this task's sibling. + * + * @param ACE_Message_Block Pointer to the block that is used in the reply. + * @param timeout The absolute time at which the put operation used to + * send the message block to the next module in the stream + * will time out. If 0, this call blocks until it can be + * completed. */ int reply (ACE_Message_Block *, ACE_Time_Value *timeout = 0); diff --git a/ace/Token_Request_Reply.inl b/ace/Token_Request_Reply.inl index 9955c4c66ea..99a6b367a1a 100644 --- a/ace/Token_Request_Reply.inl +++ b/ace/Token_Request_Reply.inl @@ -147,8 +147,7 @@ ACE_Token_Request::token_name (const ACE_TCHAR *token_name, // ... then add in the amount of the variable-sized portion. len += token_name_length + client_id_length + 1; - - this->length (ACE_Utils::Truncate (len)); + this->length (ACE_Utils::Truncate (len)); } // = Set/get the id of the client. diff --git a/ace/Truncate.h b/ace/Truncate.h index 252205f1223..31f83b84eb4 100644 --- a/ace/Truncate.h +++ b/ace/Truncate.h @@ -27,16 +27,16 @@ #include "ace/If_Then_Else.h" #include "ace/Numeric_Limits.h" -#if defined (__BORLANDC__) && __BORLANDC__ <= 0x800 +#if defined (__BORLANDC__) && __BORLANDC__ <= 0x582 # include "ace/Basic_Types.h" -#endif /* __BORLANDC__ <= 0x800 */ +#endif /* __BORLANDC__ <= 0x582 */ ACE_BEGIN_VERSIONED_NAMESPACE_DECL namespace ACE_Utils { -#if !defined (__BORLANDC__) || __BORLANDC__ > 0x800 +#if !defined (__BORLANDC__) || __BORLANDC__ > 0x582 template struct Sign_Check; @@ -505,6 +505,55 @@ namespace ACE_Utils //---------------------------------------------------------- // sizeof(FROM) > sizeof(TO) //---------------------------------------------------------- + + template<> + struct Truncator + { + ACE_INT8 operator() (ACE_INT32 val) + { + return + (val > ACE_Numeric_Limits::max () + ? ACE_Numeric_Limits::max () + : static_cast (val)); + } + }; + + template<> + struct Truncator + { + ACE_UINT8 operator() (ACE_UINT32 val) + { + return + (val > ACE_Numeric_Limits::max () + ? ACE_Numeric_Limits::max () + : static_cast (val)); + } + }; + + template<> + struct Truncator + { + ACE_UINT8 operator() (ACE_INT32 val) + { + return + (val > static_cast (ACE_Numeric_Limits::max ()) + ? ACE_Numeric_Limits::max () + : static_cast (val)); + } + }; + + template<> + struct Truncator + { + ACE_INT8 operator() (ACE_UINT32 val) + { + return + (val > static_cast (ACE_Numeric_Limits::max ()) + ? ACE_Numeric_Limits::max () + : static_cast (val)); + } + }; + template<> struct Truncator { @@ -602,6 +651,43 @@ namespace ACE_Utils //---------------------------------------------------------- // sizeof(FROM) < sizeof(TO) //---------------------------------------------------------- + + template<> + struct Truncator + { + ACE_INT32 operator() (ACE_INT8 val) + { + return static_cast (val); + } + }; + + template<> + struct Truncator + { + ACE_UINT32 operator() (ACE_UINT8 val) + { + return static_cast (val); + } + }; + + template<> + struct Truncator + { + ACE_INT32 operator() (ACE_UINT8 val) + { + return static_cast (val); + } + }; + + template<> + struct Truncator + { + ACE_UINT32 operator() (ACE_INT8 val) + { + return static_cast (val); + } + }; + template<> struct Truncator { @@ -645,7 +731,7 @@ namespace ACE_Utils return Truncator() (val); } -#endif /* !__BORLANDC__ || __BORLANDC__ > 0x800 */ +#endif /* !__BORLANDC__ || __BORLANDC__ > 0x582 */ } // namespace ACE_Utils diff --git a/bin/MakeProjectCreator/config/ciao_static_dnc_app.mpb b/bin/MakeProjectCreator/config/ciao_static_dnc_app.mpb index 62c745db095..f6792f1f9eb 100644 --- a/bin/MakeProjectCreator/config/ciao_static_dnc_app.mpb +++ b/bin/MakeProjectCreator/config/ciao_static_dnc_app.mpb @@ -1,6 +1,5 @@ // -*- MPC -*- // $Id$ -project : ciao_nodemanager_svnt, ciao_nodeapplicationmanager, ciao_component_dnc, iortable { - +project : ciao_component_dnc, iortable, ciao_nodeapplicationmanager, ciao_nodemanager_svnt { } diff --git a/bin/PerlACE/ProcessVX.pm b/bin/PerlACE/ProcessVX.pm index 74a8fbe3dd2..bc0247b54b5 100644 --- a/bin/PerlACE/ProcessVX.pm +++ b/bin/PerlACE/ProcessVX.pm @@ -53,10 +53,10 @@ for(my $i = 0; $i <= $#ARGV; ++$i) { $PerlACE::ProcessVX::WAIT_DELAY_FACTOR = $ENV{"ACE_RUNTEST_DELAY"}; if ($OSNAME eq "MSWin32") { - require PerlACE::ProcessVX_Win32; + require PerlACE::ProcessVX_Win32; } else { - #require PerlACE::ProcessVX_Unix; + require PerlACE::ProcessVX_Unix; } 1; diff --git a/bin/PerlACE/ProcessVX_Unix.pm b/bin/PerlACE/ProcessVX_Unix.pm index f400ad4328f..bd16a5d2230 100644 --- a/bin/PerlACE/ProcessVX_Unix.pm +++ b/bin/PerlACE/ProcessVX_Unix.pm @@ -9,7 +9,8 @@ use File::Spec; use Config; use FileHandle; use Cwd; -use Net::Telnet (); + +require Net::Telnet; ############################################################################### diff --git a/bin/PerlACE/Run_Test.pm b/bin/PerlACE/Run_Test.pm index a54f01a2a7c..a6d1253f0e9 100644 --- a/bin/PerlACE/Run_Test.pm +++ b/bin/PerlACE/Run_Test.pm @@ -4,7 +4,7 @@ # startup ARGV processing that is used by all tests. use PerlACE::Process; -use PerlACE::ProcessVX; +##use PerlACE::ProcessVX; use PerlACE::ConfigList; package PerlACE; @@ -23,6 +23,11 @@ my $config = new PerlACE::ConfigList; $PerlACE::VxWorks_Test = $config->check_config("VxWorks"); $PerlACE::VxWorks_RTP_Test = $config->check_config("VxWorks_RTP"); +# load VxWorks Process helpers in case this is a VxWorks target build +if ($PerlACE::VxWorks_Test or $PerlACE::VxWorks_RTP_Test) { + require PerlACE::ProcessVX; +} + # Figure out the svc.conf extension $svcconf_ext = $ENV{"ACE_RUNTEST_SVCCONF_EXT"}; if (!defined $svcconf_ext) { diff --git a/configure.ac b/configure.ac index 586ffef797a..3f16fba10ea 100644 --- a/configure.ac +++ b/configure.ac @@ -3826,11 +3826,6 @@ case "$host" in AC_LINK_IFELSE([ AC_LANG_PROGRAM([ #include -#include -#if LINUX_VERSION_CODE < KERNEL_VERSION (2,5,45) -# error Disabling Linux epoll support. Kernel used in C library is too old. -# error Linux kernel 2.5.45 or better is required. -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION (2,5,45) */ ], [ int const ACE_NUM_DESCRIPTORS = 10; -- cgit v1.2.1