diff options
author | wolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-12-21 00:44:03 +0000 |
---|---|---|
committer | wolff1 <wolff1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2007-12-21 00:44:03 +0000 |
commit | 2d83a98b31e556cbbc0d0170dbd0f74812f1a6d6 (patch) | |
tree | b98602cbe4f78f261ffc7f7aaae1842c109d2979 | |
parent | 2a103fa369f7ba33a0f4531e92f14a33d1c98b93 (diff) | |
download | ATCD-2d83a98b31e556cbbc0d0170dbd0f74812f1a6d6.tar.gz |
Merged trunk changes r79939:80324 into branch TAO_Sequence_Iterators
188 files changed, 3674 insertions, 2259 deletions
diff --git a/ACE/ACE-INSTALL.html b/ACE/ACE-INSTALL.html index 7eb5800749f..e298fe5a0a9 100644 --- a/ACE/ACE-INSTALL.html +++ b/ACE/ACE-INSTALL.html @@ -155,7 +155,7 @@ document</a>.</p><p> <td>Maintains ACE on many platforms required for their ACE and TAO service offerings. We support AIX, Borland C++ Builder 6/2006, CodeGear C++ Builder 2007, CodeGear RAD Studio 2007, - CBuilderX 1.0, MinGW, Microsoft Visual C++, GCC, + CBuilderX 1.0, MinGW, Microsoft Visual C++ 7.1/8/9, GCC, Cygwin, VxWorks 5.5.x & 6.x, OpenVMS 8.2-1 & 8.3 on Alpha and IA64, BlueCAT Linux, RedHat Linux, Fedora, Tru64, SuSE Linux on Alpha/IA32/EM64T/IA64, RTEMS, QNX, LynxOS 4.0/4.2, diff --git a/ACE/ACE-install.sh b/ACE/ACE-install.sh deleted file mode 100644 index 76c1e8064f7..00000000000 --- a/ACE/ACE-install.sh +++ /dev/null @@ -1,356 +0,0 @@ -#!/bin/sh -########################## Begin Install Script ########################## -# -# NAME: ACE-install.sh -# -# PURPOSE: Bourne shell script to install ACE for UNIX platforms -# -# AUTHOR: Ajit Sagar <asagar@spdmail.spd.dsccc.com> -# -# HISTORY: 5/20/96 Ajit Sagar Created -# x/xx/xx xxxxxxxxxxxxxx Modified -# x/xx/xx xxxxxxxxxxxxxx Modified -# -# DESCRIPTION: This script installs the ACE toolkit for a Unix system. -# Before using this script, you must do the following: -# -# NOTES: 1) Download the gzipped version of ACE from -# http://www.cs.wustl.edu/~schmidt/ (Select "Obtaining ACE") -# OR -# ftp from wuarchive.wustl.edu in the /languages/c++/ACE directory -# -# The local directory to which this will be downloaded is -# refered to as the "MY_ACEDIR" in this script. -# -# 2) Make sure there is only one file that matches "ACE*tar*". -# This should be the one you just downloaded. -# remove older versions of tar files downloaded earlier. -# -# 3) At the end of this script, you should have: -# -# a) A compiled toolkit in the $ACE_ROOT directory -# b) If you selected to save the existing installation, -# a file oldACE.tar.gz will be created in MY_ACEDIR -# c) The gzipped ACE source file that was initially downloaded. -# -# 4) This script may be executed without user interaction -# by using the "auto" option (see USAGE section below). -# It is advisable to execute it without the "auto" option the -# first time to make sure everything works. -# -# THE FOLLOWING NEED TO BE DONE ONLY THE FIRST TIME THIS -# SCRIPT IS RUN: -# -# 5) Read the README file in -# http://www.cs.wustl.edu/~schmidt/ACE.html directory -# -# 6) Define an environment variable ACE_ROOT the -# defines which directory your ACE toolkit is to be -# installed in. -# -# DO NOT MAKE "ACE_ROOT" THE SAME AS "MY_ACEDIR". -# -# 7) Redefine "MY_ACEDIR" in this script to default -# to the directory in which you have downloaded the ACE source. -# -# 8) This script has been tested on Solaris 2.x for the -# Sun C++4.0 compiler. To use this on some other UNIX -# platform, uncomment and redefine the following -# in this script: -# -# MY_ACE_CONFIG -# MY_ACE_GNU_MACROS -# -# Check the README file to define these variables. If -# these are not defined, the script will prompt you -# help you to change these variables. But in that case -# you cannot run with the "auto" option. -# -# -# USAGE: myacemaker [ auto ] -# -# auto automatic make (no user interaction) -# -# Under this option, the source will be -# extracted and compiled without any user interaction, -# i.e., you can kick off this script, go home, -# and check it in the morning. The following -# assumptions are made: -# -# 1) MY_ACE_DIR is properly defined in this script. -# 2) MY_ACE_CONFIG is properlly defined -# in this script. -# 3) MY_ACE_GNU_MACROS is properly defined in this -# script. -# 4) A backup of existing installation -# is to be made. -# -# COPYRIGHT INFORMATION: -# -# You are free to do anything you like with this script such as -# including it in commercial software. You may modify it and freely redistribute -# it. The author accepts no responsibility for any bugs or problems that -# arise as a consequence of using this code. -# -# -- Ajit Sagar -# -######################################################################### -# -ACE_ERRFILE=/tmp/myacemaker.err -OLD_ACE_TAR_FILE=oldACE.tar -OLD_ACE_GZIPPED_TAR_FILE=oldACE.tar.gz -USAGE="<Usage> : myacemaker [ auto ]" -# -############################################################## -# -# Platform-specific definitions -# -############################################################## - -# Directory where ACE-x.x.xx.tar.gz is located - -MY_ACEDIR=${HOME}/aceconfig - -####################################################### -# Platform specific config file in ${ACE_ROOT}/ace/ -# Uncomment and redefine this -####################################################### - -# MY_ACE_CONFIG=config-sunos5.4-sunc++-4.x.h - -####################################################### -# Platform specific GNU macros file in -# ${ACE_ROOT}/include/makeinclude/ -# Uncomment and redefine this -####################################################### - -# MY_ACE_GNU_MACROS=platform_sunos5_sunc++.GNU - - -############################################################## -# -# Main Script For Installing ACE -# -############################################################## - -AUTO="$#" - -ACE_ROOT=${ACE_ROOT:?"ERROR: Environment variable ACE_ROOT not set"} -if [ ${AUTO} -gt 1 ] -then - echo "$USAGE" - exit 1 -fi - -if [ ${AUTO} -eq 1 ] -then - if [ $1 != "auto" ] - then - if [ $1 = "nounzip" ] ; then - UNZIP=0 - AUTO=0 - else - echo "$USAGE" - exit 2 - fi - fi -fi - -echo "" -echo "ACE source in `ls ${MY_ACEDIR}/ACE*tar.gz`" -echo "ACE will be installed in ${ACE_ROOT}" -echo "" - -if [ $AUTO -eq 0 ] -then - echo "OK to continue? [Y/N] : \c" - read choice -else - choice='Y' -fi - -if [ ${choice} != 'Y' -a ${choice} != 'y' ] -then - echo "" - echo "ACE installation aborted" - echo "" - exit 11 -fi - -cd ${MY_ACEDIR} - -echo "Uncomressing ACE archive and extracting ACE files" -echo "into `pwd`/ACE_wrappers directory ..." -echo "" - -gunzip -c ACE*tar.gz | tar xvf - || \ -{ - echo "" - echo "gunzip or tar failed. Aborting script !!" - echo "" - exit 33 -} - -if [ -d ${ACE_ROOT} ] -then - - if [ $AUTO -eq 0 ] - then - echo "Save a copy of existing ACE installation? [Y/N] : \c" - read choice - echo "" - else - choice='Y' - fi - - if [ ${choice} = 'Y' -o ${choice} = 'y' ] - then - - echo "Archiving ${ACE_ROOT} to `pwd`/${OLD_ACE_TAR_FILE} using <tar> ..." - tar cvpf ${OLD_ACE_TAR_FILE} ${ACE_ROOT} - echo "" - - if [ -f ${OLD_ACE_GZIPPED_TAR_FILE} ] - then - echo "Removing ${OLD_ACE_GZIPPED_TAR_FILE} ..." - rm ${OLD_ACE_GZIPPED_TAR_FILE} - echo "" - fi - - echo "Compressing ${OLD_ACE_TAR_FILE} using <gzip -9> ..." - gzip -9 ${OLD_ACE_TAR_FILE} - echo "" - - fi - - echo "Removing ${ACE_ROOT} ..." - rm -r ${ACE_ROOT} - echo "" -fi - -echo "Moving `pwd`/ACE_wrappers to ${ACE_ROOT} ..." -mv ./ACE_wrappers ${ACE_ROOT} -echo "" - -cd ${ACE_ROOT}/ace - -if [ ${MY_ACE_CONFIG:-undefined} = undefined ] -then - - if [ $AUTO -eq 1 ] - then - if [ ! -f ${MY_ACE_CONFIG} ] - then - echo "" - echo "${MY_ACE_CONFIG} does not exist. Aborting script ..." - echo "" - exit 44 - fi - fi - - echo "Select one of the following files for linking to config.h" - echo "" - echo "`ls config*h`" - echo "" - - echo "Type the filename for your compiler: \c" - read MY_ACE_CONFIG - echo "" - - if [ ! -f ${MY_ACE_CONFIG} ] - then - echo "" - echo "${MY_ACE_CONFIG} does not exist. Aborting script ..." - echo "" - exit 55 - fi - -fi - - -echo "Creating link config.h for ${MY_ACE_CONFIG} in directory `pwd` ..." - -rm ./config.h -ln -s ${MY_ACE_CONFIG} config.h - -echo "" - -cd ${ACE_ROOT}/include/makeinclude - -if [ ${MY_ACE_GNU_MACROS:-undefined} = undefined ] -then - - if [ $AUTO -eq 1 ] - then - if [ ! -f ${MY_ACE_GNU_MACROS} ] - then - echo "" - echo "${MY_ACE_GNU_MACROS} does not exist. Aborting script ..." - echo "" - exit 66 - fi - fi - - echo "Select one of the following files for linking to config.h" - echo "" - echo "`ls platform*GNU`" - echo "" - echo "Type the filename for your compiler: \c" - - read MY_ACE_GNU_MACROS - echo "" - - if [ ! -f ${MY_ACE_GNU_MACROS} ] - then - echo "" - echo "${MY_ACE_GNU_MACROS} does not exist. Aborting script ..." - echo "" - exit 77 - fi - -fi - -echo "Creating link platform_macros.GNU for ${MY_ACE_GNU_MACROS}" -echo "in directory `pwd` ..." - -rm ./platform_macros.GNU -ln -s ${MY_ACE_GNU_MACROS} platform_macros.GNU - -echo "" - -if [ ${AUTO} -eq 0 ] -then - echo "Make ACE now with default setup? [Y/N] : \c" - read choice - echo "" -else - choice='Y' -fi - -if [ ${choice} != 'Y' -a ${choice} != 'y' ] -then - echo "" - echo "ACE make skipped. You can use <gmake> to make ACE later" - echo "" - exit 0 -fi - -echo "" -echo "Making ACE now. Examine file ${ACE_ERRFILE} for errors ..." -echo "" - -cd ${ACE_ROOT} - -echo "" -echo "Executing <gmake> ..." -echo "" -gmake | tee ${ACE_ERRFILE} 2>&1 - -echo "" -echo "Examine file ${ACE_ERRFILE} for possible errors ..." -echo "" -echo "********** End of myacemaker script !!! ***********" -echo "" - -# -######################################################################### diff --git a/ACE/ACEXML/common/AttributesImpl.h b/ACE/ACEXML/common/AttributesImpl.h index f6ee26e7785..39b7f33099b 100644 --- a/ACE/ACEXML/common/AttributesImpl.h +++ b/ACE/ACEXML/common/AttributesImpl.h @@ -145,7 +145,7 @@ class ACEXML_Export ACEXML_AttributesImpl { public: /** - * Initialize an AttributesImpl that holds <size> attributes. + * Initialize an AttributesImpl that holds @a size attributes. */ ACEXML_AttributesImpl (int size = ACEXML_AttributesImpl_Default_Size); ACEXML_AttributesImpl (const ACEXML_AttributesImpl &attrs); @@ -170,7 +170,7 @@ public: const ACEXML_Char *qName); /** * Remove an attribute from the array. Notice that this - * operation can invalidate previously acquired <index> + * operation can invalidate previously acquired @a index * value. (It will repack the array.) */ virtual int removeAttribute (size_t index); @@ -262,36 +262,36 @@ public: const ACEXML_Char *value); /** - * Set the localName of the attribute at <index>. - * return -1 if <index> is out of range. + * Set the localName of the attribute at @a index. + * return -1 if @a index is out of range. */ virtual int setLocalName (size_t index, const ACEXML_Char *localName); /** - * Set the qName of the attribute at <index>. - * return -1 if <index> is out of range. + * Set the qName of the attribute at @a index. + * return -1 if @a index is out of range. */ virtual int setQName (size_t index, const ACEXML_Char *qName); /** - * Set the URI of the attribute at <index>. - * return -1 if <index> is out of range. + * Set the URI of the attribute at @a index. + * return -1 if @a index is out of range. */ virtual int setURI (size_t index, const ACEXML_Char *uri); /** - * Set the type of the attribute at <index>. - * return -1 if <index> is out of range. + * Set the type of the attribute at @a index. + * return -1 if @a index is out of range. */ virtual int setType (size_t index, const ACEXML_Char *type); /** - * Set the value of the attribute at <index>. - * return -1 if <index> is out of range. + * Set the value of the attribute at @a index. + * return -1 if @a index is out of range. */ virtual int setValue (size_t index, const ACEXML_Char *value); diff --git a/ACE/ASNMP/asnmp/wpdu.cpp b/ACE/ASNMP/asnmp/wpdu.cpp index f6c14e6aac9..e99ab66821e 100644 --- a/ACE/ASNMP/asnmp/wpdu.cpp +++ b/ACE/ASNMP/asnmp/wpdu.cpp @@ -102,7 +102,8 @@ wpdu::wpdu(const Pdu& pdu, const UdpTarget& target): (unsigned char *)iovec_.iov_base, (int *) &iovec_.iov_len, target.get_version(), - comm_str.data(), comm_str.length()); + comm_str.data(), + comm_str.length()); if ( status != 0) { valid_flag_ = SNMP_ERROR_WRONG_ENCODING; cmu_snmp::free_pdu( raw_pdu); diff --git a/ACE/ChangeLog b/ACE/ChangeLog index de31fb4d085..e92b5047c8d 100644 --- a/ACE/ChangeLog +++ b/ACE/ChangeLog @@ -1,3 +1,1176 @@ +Thu Dec 20 20:01:07 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/Codecs.h: + * ace/Codes.cpp: + + Fixed fuzz warnings. + +Tue Dec 18 17:56:30 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * docs/ACE-development-process.html, + * docs/ACE-bug-process.html: Updated these documents to clarify + that submitters of code, bug fixes, etc. waive claims to + copyright or ownership of the submissions. Thanks to Tom + Callaway <tcallawa at redhat dot com> for help with this. + +Thu Dec 20 15:39:43 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/Codecs.h: + * ace/Codecs.cpp: + + Add is_chunked argument to encode() which selects whether the + encoded output is "chunked" into newline terminated 72 column + chunks. Fixed bug where "chunked" output was not terminated by + a newline if the input buffer length was an exact multiple of 3. + Thanks to Alick Nie <alick_nie at 163 dot com> for reporting + inconsistant encoding behavior which lead to this change. + + * THANKS: + + Add Alick Nie <alick_nie at 163 dot com>. + +Thu Dec 20 14:00:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/Sched_Params.cpp: + Use VX_TASK_PRIORITY_MAX and VX_TASK_PRIORITY_MIN when they + are defined + +Thu Dec 20 13:46:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_Thread.h: + Layout change + + * ace/OS_NS_Thread.inl: + Fixed warning with VxWorks 6.6 which uses GCC 4.1.2 + +Thu Dec 20 13:46:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_dlfcn.inl: + Fixed warning with VxWorks 6.6 which uses GCC 4.1.2 + +Thu Dec 20 13:34:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_Thread.inl: + Fixed warning with VxWorks 6.6 which uses GCC 4.1.2 + +Thu Dec 20 13:04:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_aix_ibm.GNU: + Fixed typo in this file + +Thu Dec 20 10:30:00 UTC 2007 Simon Massey <simon.massey@prismtech.com> + + * bin/tao_orb_tests.lst: + + Exclude TAO/tests/CSD_Collocation from LynxOS builds. They + overload/tax the LynxOS kernal resulting in random process + table corruption and filing system errors. + +Wed Dec 19 14:04:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_aix_ibm.GNU: + * ace/config-aix-5.x.h: + Deprecated Visual Age 5 and older + +Tue Dec 18 14:40:11 UTC 2007 Adam Mitz <mitza@ociweb.com> + + * bin/tao_orb_tests.lst: + + Exclude TAO/tests/CSD_Collocation from minimum CORBA builds. + +Tue Dec 18 10:47:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Added Bug 3171 Regression + +Mon Dec 17 16:41:44 UTC 2007 Adam Mitz <mitza@ociweb.com> + + * bin/tao_orb_tests.lst: + + Added TAO/tests/CSD_Collocation. + +Mon Dec 17 12:35:00 UTC 2007 Simon Massey <simon.massey@prismtech.com> + + * bin/tao_other_tests.lst: + added TAO/orbsvcs/tests/InterfaceRepo/Bug_3174_Regression/run_test.pl + for bugzilla 3174. + +Mon Dec 17 10:00:12 UTC 2007 Martin Corino <mcorino@remedy.nl> + + * ace/Pipe.cpp: + Implemented fix for delays on OpenVMS when using socketpair() for Pipe. + +Sun Dec 16 19:26:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/Refcounted_Auto_Ptr.h: + * ace/Refcounted_Auto_Ptr.inl: + Extended this template, thanks to Hu Yi <huyi dot zg at gmail dot com> + for extending this template + + * tests/Refcounted_Auto_Ptr_Test.cpp: + Extended + + * tests/TSS_Test.cpp: + Removed pthread draft 4 code and fixed compile warnings with VxWorks 6.6 + + * ace/Pipe.cpp: + Const changes + +Sun Dec 16 07:03:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ACEXML/common/AttributesImpl.h: + Doxygen improvements + +Sun Dec 16 06:49:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/config-sunos5.5.h: + Added ACE_HAS_SOCK_BUF_SIZE_MAX, thanks to Adam Mitz for pointing + out this is needed for Solaris + + * ace/OS_NS_Thread.cpp: + Const changes + + * ace/OS_NS_Thread.inl: + Simplified ifdef checks in multiple methods + + * ace/Select_Reactor_Base.cpp: + Layout change + + * ace/Select_Reactor_Base.inl: + Change for msvc9 + + * ace/Select_Reactor_T.cpp: + No need to check for 0 after ACE_NEW_RETURN + + * ace/Svc_Conf.y: + * ace/Svc_Conf_y.cpp: + Changed DEBUGGING to SVC_CONF_Y_DEBUGGING and also fixed + the compile problems that exist in the code guarded by + this define + +Sat Dec 15 15:02:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * apps/gperf/gperf.mpc: + * bin/PerlACE/perlace.mpc: + Use custom_only=1 for these MPC files + +Sat Dec 15 14:57:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/Object_Manager.cpp: + Disable the critical error boxes when ACE_DISABLE_WIN32_ERROR_WINDOWS + is defined. This fixes bugzilla 3170. Thanks to Adrian Tulloch + <my-ace-sub at reyes-tulloch dot com> for suggesting this + + * ace/Svc_Conf.h: + Fixed compile error when DEBUGGING is defined + + * ace/Token.cpp: + Renamed DEBUGGING to ACE_TOKEN_DEBUGGING, DEBUGGING is used on + more places like as a member in an enum. Also const, bool changes. + + * ace/TP_Reactor.cpp: + Layout and const changes + +Sat Dec 15 14:36:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * docs/bzcar/bczar.html: + Updated location of this page and improved bczar instructions + +Fri Dec 14 13:21:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * etc/index.html: + * docs/Download.html: + Updated for x.6.2 + +Fri Dec 14 02:48:57 CST 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ACE version 5.6.2 released. + +Thu Dec 13 16:19:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/os_include/sys/os_socket.h: + Set ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE to SSIZE_MAX when it is not + set yet + + * ace/config-tandem-nsk-mips-v2.h: + * ace/config-tandem-nsk-mips-v3.h: + No need to set ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE anymore + + * ace/Pipe.h: + Doxygen changes + +Wed Dec 12 13:15:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_sys_socket.inl: + When ACE_HAS_SOCK_BUF_SIZE_MAX is defined, don't use + SSIZE_MAX but ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE as value + to check. That way we can limit the size of the packets + on OpenVMS. + + * ace/config-openvms.h: + Added ACE_HAS_SOCK_BUF_SIZE_MAX and set + ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE to a value of 64k. This should + increase the test results on OpenVMS to a better level + + * ace/config-tandem-nsk-mips-v2.h: + * ace/config-tandem-nsk-mips-v3.h: + Set ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE to SSIZE_MAX to match + the old behaviour. + + * ace/Reactor.h: + Layout change + + * ace/Select_Reactor_T.cpp: + Layout change, initialise pointer to 0 + + * ace/SSL/SSL_SOCK_Stream.inl: + Const changes + + * ace/TP_Reactor.cpp: + Layout change + +Fri Dec 7 18:33:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_main.h: + Make sure we initialise the resolvLib with VxWorks RTP + +Fri Dec 7 06:27:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * apps/gperf/gperf.mpc: + * bin/PerlACE/perlace.mpc: + With vc9 set ConfigurationType to 10 to disable the creation + of the manifest file which fails because these projects don't + have source code + +Thu Dec 6 15:22:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/SSL/SSL_SOCK_Stream.cpp: + Layout and const changes + +Wed Dec 5 14:46:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/INET_Addr.cpp: + Use this-> to comply with coding standards + + * ace/OS_NS_dlfcn.inl: + Initialise pointer with 0 + + * ace/OS_NS_netdb.cpp: + Use C++ const_cast instead of c-style cast + +Tue Dec 4 20:20:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/INET_Addr.cpp: + Removed some not needed ACE_UNUSED_ARG + + * OS_NS_netdb.inl (gethostbyaddr_r): + Fixed VxWorks implementation + +Tue Dec 4 19:28:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Run all csd tests on VxWorks + +Tue Dec 4 18:07:59 UTC 2007 Abdullah Sowayan <abdullah.sowayan@lmco.com> + + * bin/fuzz.pl: + + Temporarily exclude $TAO_ROOT/orbsvcs/orbsvcs/ESF from the + ACE_SYNCH_MUTEX check to eliminate fuzz warnings. + +Tue Dec 4 16:30:19 UTC 2007 Steve Huston <shuston@riverace.com> + + * tests/Reactor_Notify_Test.cpp: Don't try to call + run_quiet_notify_test in single-threaded build. + +Tue Dec 4 15:03:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/CDR_Base.h: + Changed ACE_IMPLEMENT_WITH_NATIVE_LONGDOUBLE to + ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE which has to be defined to + 1. This makes this file easier to maintain + + * ace/config-linux-common.h: + * aceconfig-vxworks5.x.h: + Added ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE defined as 1. This fixes + also the LongDouble issues with VxWorks 6.x + +Tue Dec 4 13:50:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * netsvcs/lib/Name_Handler.cpp (parse_args): + Fixed unicode build + +Mon Dec 3 19:41:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Added bug 3163 regression + +Mon Dec 3 19:00:57 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * netsvcs/lib/Name_Handler.cpp (naming_context): Fixed typos. + +Mon Dec 3 14:57:36 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * netsvcs/lib/Name_Handler.h: Moved the inline methods to the + Name_Handler.cpp file. Also, zapped the unnecessary virtual + method for naming_context(). Thanks to Johnny for catching + this. + +Mon Dec 3 14:21:20 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * netsvcs/lib/Name_Handler.{h,cpp}: Check the return value from + this->parse_args (argc, argv) and allow use all range config + options for ACE_Name_Acceptor::init. Thanks to Vladislav Zverev + vladislav at gtss dot spb dot ru> for these patches. + +Mon Dec 3 10:06:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_Thread.inl: + Removed not needed check for pthread_cancel + +Mon Dec 3 10:02:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/config-aix-5.x.h: + * ace/config-cray.h: + * ace/config-cygwin32.h: + * ace/config-hpux-11.00.h: + * ace/config-integritySCA.h: + * ace/config-irix6.x-common.h: + * ace/config-linux.h: + * ace/config-macosx-leopard.h: + * ace/config-macosx-panther.h: + * ace/config-macosx-tiger.h: + * ace/config-macosx.h: + * ace/config-netbsd.h: + * ace/config-openvms.h: + * ace/config-posix.h: + * ace/config-qnx-neutrino.h: + * ace/config-qnx-rtp-62x.h: + * ace/config-qnx-rtp-pre62x.h: + * ace/config-rtems.h: + * ace/config-sunos5.5.h: + * ace/config-unixware-7.1.0.h: + * ace/config-unixware-7.1.0.udk.h: + * ace/config-vxworks5.x.h: + * ace/config-vxworks6.2.h: + * ace/config-vxworks6.3.h: + * ace/config-vxworks6.4.h: + * ace/config-win32-interix.h: + Removed ACE_HAS_PTHREADS_STD, we only support the official pthread + standard, not any draft + + * ace/config-cray.h: + Removed support for Unicos 9 and earlier. So far as I can find on the web + unicos 9 is from 1997 + + * ace/config-mvs.h: + Removed draft6, according to references on the web the std + pthread is supported now + + * ace/config-tandem-nsk-mips-v2.h: + * ace/config-tandem-nsk-mips-v3.h: + Newer NSK versions to support pthread std + + * ace/config-tru64.h: + Removed support for ancient tru64 versions + + * ace/os_include/os_limits.h: + Updated for VxWorks 6.6. + + * ace/os_include/os_pthread.h: + Removed support for the draft pthread mappings + + * ace/os_include/os_time.h: + Use ACE_HAS_PTHREADS + + * ace/os_include/sys/os_msg.h: + Removed not needed workaround for osf1 + + * ace/OS_NS_pwd.inl: + * ace/OS_NS_signal.inl: + Use ACE_HAS_PTHREADS + + * ace/OS_NS_string.cpp: + Initialise pointer with 0 + + * ace/OS_NS_Thread.cpp: + * ace/OS_NS_Thread.inl: + * ace/Thread_Manager.cpp: + Removed support for pthread draft 4, 6, & 7 + + * ace/Recursive_Thread_Mutex.cpp: + get_nesting_level is only not support with VxWorks tasks + + * ace/Select_Reactor_Base.cpp: + Layout change + + * ace/Token.h: + Only with VxWorks tasks use semaphores + + * ace/WIN32_Asynch_IO.cpp + +Sun Dec 2 17:47:13 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * configure.ac: + + Remove code which defined ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA + and ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION feature test macros. + There are vestigial bits of the tests which still remain -- the + entire platform template capability tests need to be rewritten. + + * m4/config_h.m4: + + Remove templates for ACE_HAS_TEMPLATE_INSTANTATION_PRAGMA and + ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION. + +Sun Dec 2 17:43:27 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/README: + + Remove description of ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION. + This feature test macro was removed some time ago. + +Sun Dec 2 17:41:01 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/OS_NS_stdlib.cpp: + + Change initial program name returned by the emulated version of + ACE_OS::getprogname() to be the empty string rather than a null + pointer. + +Sun Dec 2 06:47:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * tests/gperf/tests/test.cpp: + Fixed conversion warning + +Sat Dec 1 17:06:32 UTC 2007 Abdullah Sowayan <abdullah.sowayan@lmco.com> + + * bin/fuzz.pl: + Fixed the checks of ACE_SYNCH_MUTEX and ACE_Thread_Mutex to exclude + checking for those key words in ACE. We only want to detect the usage + of those words in TAO and CIAO. + +Fri Nov 30 23:59:41 UTC 2007 Abdullah Sowayan <abdullah.sowayan@lmco.com> + + * bin/fuzz.pl: + + Added the following checks: + + check_for_ACE_SYNCH_MUTEX: + This test checks for the use of ACE_SYNCH_MUTEX in TAO/CIAO, + TAO_SYNCH_MUTEX should be used instead for consistency. + + check_for_ACE_Thread_Mutex: + This test checks for the use of ACE_Thread_Mutex in TAO/CIAO, + TAO_SYNCH_MUTEX should be used instead to make the code buid + in single-threaded builds. + + I will fix the resulting fuzz errors over the weekend. + +Fri Nov 30 22:11:32 UTC 2007 Steve Huston <shuston@riverace.com> + + * ace/WFMO_Reactor.h: Clarify that only the owner thread can expire + timers and wait on the notifications handle. + +Fri Nov 30 21:53:15 UTC 2007 Steve Huston <shuston@riverace.com> + + * tests/Reactor_Notify_Test.cpp: Added a test to verify that a quiet + (e.g., no I/O occurring) event loop will be awoken by a notify(). + +Fri Nov 30 16:58:00 UTC 2007 Steve Huston <shuston@riverace.com> + + * ace/CDR_Stream.{h cpp}: + Added replace (ACE_CDR::Short, char *), analogous to the existing + replace (ACE_CDR::Long, char *); replaces a previous place in the + stream with a short. + To make the replace() methods more convenient and easier to use + correctly, added the following methods: + char* write_long_placeholder (void); + char* write_short_placeholder (void); + These methods align the stream's write pointer properly then write + a 0-valued placeholder in the stream. The pointer to the placeholder + is returned; that pointer can later be passed to replace(). + + * tests/CDR_Test.cpp: Added tests for placeholder and replace ops. + + Thank you to Howard Finer for contributing these additions. + + * NEWS: Added note about these additions. + +Fri Nov 30 11:50:00 UTC 2007 Simon Massey <sma@prismtech.com> + + * bin/tao_other_tests.lst: + add TAO/orbsvcs/tests/InterfaceRepo/Bug_3155_Regression/run_test.pl + +Thu Nov 29 19:49:23 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * tests/Process_Manager_Test.cpp: Changed ACE_MT_SYNCH to ACE_SYNCH so + this works on single-threaded builds. Thanks to Johnny for + reporting this. + +Thu Nov 29 18:10:27 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/ARGV.h: + + #include "ace/Global_Macros.h". This is included implicitly on + platforms where ACE_TEMPLATES_REQUIRE_SOURCE, but is needed for + those that don't. + +Wed Nov 28 13:37:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_vxworks6.3.GNU: + Only use pic when building rtp + +Wed Nov 28 13:27:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_unistd.inl: + Updated for VxWorks 6.6 + +Wed Nov 28 13:24:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/Task.cpp: + Updated for VxWorks 6.6 + +Wed Nov 28 13:18:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_arpa_inet.cpp: + Updated for VxWorks 6.6 + +Wed Nov 28 13:08:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/os_include/sys/os_types.h: + Updated for VxWorks 6.6 + +Wed Nov 28 10:56:29 UTC 2007 Vladimir Zykov <vladimir.zykov@prismtech.com> + + * bin/tao_orb_tests.lst: + Added Bug_3154_Regression. + +Wed Nov 28 07:30:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/Timer_Queue_Adapters.{h,cpp}: + Updated activate method because of new argument in the base + class + +Tue Nov 27 14:16:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_linux.GNU: + Added support for Fedora 8 + +Tue Nov 27 14:03:17 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * tests/Process_Manager_Test.cpp: Added + + #include "ace/Synch_Traits.h" + + so the ACE_MT_SYNCH macro is visible. Thanks to Johnny for + reporting this. + +Tue Nov 27 13:14:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_Thread.cpp: + Added missing const_cast for VxWorks + +Tue Nov 27 13:10:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * examples/Reactor/Multicast/server.cpp + Don't use the deprecated ACE_SOCK_Dgram_Mcast methods + +Tue Nov 27 10:01:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_linux.GNU: + Updated for FC7 + +Tue Nov 27 08:27:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_Thread.{h,cpp,inl}: + * ace/Task.{h,cpp}: + * ace/Thread.{h,cpp,inl}: + * ace/Thread_Manager.{h,cpp}: + Added a const char* argument to all methods that create a thread + so that we can pass in an optional thread name which is used at + this moment only on VxWorks. Added ACE_OS::thr_name() to retrieve + the name of the current thread. + + * ace/SOCK_Dgram_Mcast.{h,cpp}: + Removed deprecated subscribe/unsubscribe methods + +Tue Nov 27 06:33:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * examples/Reactor/Multicast/Log_Wrapper.cpp: + Don't use the deprecated ACE_SOCK_Dgram_Mcast methods + +Mon Nov 26 20:41:03 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * tests/Process_Manager_Test.cpp: Changed the use of + ACE_Thread_Mutex to ACE_SYNCH_MUTEX so that the test compilees + properly on single-threaded builds. Thanks to Johnny for + reporting this. + +Mon Nov 26 19:41:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * examples/Reactor/Ntalker/ntalker.cpp: + Don't use the deprecated ACE_SOCK_Dgram_Mcast methods + +Mon Nov 26 15:10:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_vxworks6.6.GNU: + * ace/config-vxworks6.6.h: + New files for VxWorks 6.6 + +Mon Nov 26 12:27:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_vxworks6.2.GNU: + * include/makeinclude/platform_vxworks6.3.GNU: + Make sure we also use -mlongcall with c files + +Mon Nov 26 11:26:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_linux.GNU: + With FC6 and RedHat 5.0/5.1 we have to disable visibility. Use + lsb_release info to detect these versions. Simplifies the checks + we do and at the same moment we also support RedHat 5.1 on IA65 + +Mon Nov 26 11:04:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Enabed several tests for VxWorks + +Mon Nov 26 03:29:21 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * ace/Process_Manager.cpp: Fixed a problem where spawning a + process with ACE_Process_Manager resulted in deadlock while + waiting for the end of another process. Thanks to Oliver Spang + <oliver dot spang at nsn dot com> for these fixes. + + * tests/Process_Manager_Test.cpp: Added a regression test for + Oliver's patches. Thanks again to oliver Spang for this code. + +Sun Nov 25 09:18:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_stdio.inl (vsprintf): + Updated for msvc9 + +Sun Nov 25 09:15:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/config-win32-msvc9.h: + Disabled warning 4250 with this compiler + +Sat Nov 24 00:23:34 UTC 2007 Steve Huston <shuston@riverace.com> + + * ace/Reactor.h: Clarified the workings of the optional hook function + that can be passed to event loop methods. Thanks to Andre Kostur + for this idea. + +Fri Nov 23 19:38:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/MakeProjectCreator/config/vc8_warnings.mpb: + * bin/MakeProjectCreator/config/vc_warnings.mpb: + Renamed vc8 to vc because this file is now also used for vc9 + + * bin/MakeProjectCreator/config/acedefaults.mpb: + Updated base project because of rename above + + * bin/MakeProjectCreator/config/vc9.features: + New file + + * bin/MakeProjectCreator/config/vc9nmake.mpb: + New file + + * contrib/minizip/minizip.mpc: + Updated for vc9 + + * examples/Service_Configurator/Misc/Timer_Service.cpp: + Layout change + + * examples/Connection/non_blocking/CPP-connector.cpp: + Just not name an argument instead of using ACE_UNUSED_ARG + + * examples/APG/Reactor/HAStatus-AC.cpp: + Initialise some pointers with 0 + + * bin/make_release.py: + Added generation for vc9 + + * ASNMP/asnmp/wpdu.cpp: + Layout change + + * ACE-install.sh: + Removed, ancient + +Fri Nov 23 19:38:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/SOCK_Dgram_Mcast.cpp: + Use join instead of subscribe + +Fri Nov 23 06:50:01 UTC 2007 Olli Savia <ops@iki.fi> + + * tests/run_test.lst: + Do not run Signal_Test on LynxOS. + +Thu Nov 22 13:47:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/ace_for_tao.mpc: + * ace/QoS/qos.mpc: + * bin/MakeProjectCreator/config/ace_fl.mpb: + * bin/MakeProjectCreator/config/ace_gl.mpb: + * bin/MakeProjectCreator/config/ace_qt.mpb: + * bin/MakeProjectCreator/config/ace_x11.mpb: + * bin/MakeProjectCreator/config/acedefaults.mpb: + * bin/MakeProjectCreator/config/ipv6.mpb: + Added support for vc9 + +Thu Nov 22 12:44:54 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/Vector_T.inl: + Fixed compile error + + * bin/msvc_mpc_auto_compile.pl: + * bin/msvc_static_compile.pl: + Added vc9 as option + +Wed Nov 21 21:43:54 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * ace/Vector_T.inl (advance): + * ace/Vector_T.cpp: Fixed the push_back() and pop_back() methods + so they work properly after resizing. Thanks to Karl-Heinz Wind + <wind at itq dot de> for these fixes. This fixes bugid 3152. + +Wed Nov 21 21:36:27 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * tests/Vector_Test.cpp (run_main): Updated the test so that it + checks for the buggy push_back() and pop_back(). Thanks to + Karl-Heinz Wind <wind at itq dot de> for providing these + enhancements. + +Wed Nov 21 19:37:29 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * examples/Reactor/Ntalker/ntalker.cpp (ACE_TMAIN): + + Use ACE_SOCK_Dgram_Mcast::leave() instead of deprecated + ...::unsubscribe() to leave the multicast group. Thanks to + Stefan Naewe <stefan dot naewe at atlas-elektronik dot com> for + reporting this. + +Wed Nov 21 16:14:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_sys_utsname.cpp (name): + Extended VxWorks implementation + +Wed Nov 21 16:06:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/PerlACE/ProcessVX_Unix.pm: + * bin/PerlACE/ProcessVX_Win32.pm: + Added support for iBoot + +Sun Nov 18 06:25:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * configure.ac: + Fixed ACE_HAS_POSIX_SEM_TIMEOUT check, thanks to Thomas Girard + <thomas dot g dot girard at free dot fr> for reporting this. + This fixes bugzilla 3153 + +Fri Nov 16 04:12:20 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * examples/Service_Configurator/Misc/main.cpp (ACE_TMAIN): Added a + space between "-f" and "svc.conf". This fixes a bug. Thanks + to Kun Niu <haoniukun at gmail dot com> for this fix. + +Fri Nov 16 09:37:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_linux_common.GNU: + * ace/config-linux-common.h: + * m4/platform.m4: + Changed ACE_HAS_LINUX_NPTL to ACE_LACKS_LINUX_NPTL. All recent + linux distributions do have NPTL, only older versions lack this + support. By changing HAS to LACKS it makes it easier to use ACE + with their own makefile scheme. This fixes bugzilla 3084 + +Thu Nov 15 19:44:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_linux_common.GNU: + Retrieve distribution and release number using lsb_release + + * include/makeinclude/platform_g++_common.GNU: + Moved RedHat/FC checks to platform_linux.GNU, this only needs + to be done when using GCC on Linux, not when using GCC on + other platforms + + * include/makeinclude/platform_linux.GNU: + With Ubuntu 7.04 and 7.10 we can't use visibilit, we get + unresolved externals when using it. We are now using + lsb_release to detect the distribution + +Thu Nov 15 08:41:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/os_include/os_limits.h: + PIPE_BUF is also defined to -1 with VxWorks 6.5 + +Thu Nov 15 05:40:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_vxworks5.5.x.GNU: + * include/makeinclude/platform_vxworks6.2.GNU: + * include/makeinclude/platform_vxworks6.3.GN: + Add -mlongcall also to CFLAGS + +Wed Nov 14 19:12:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/MakeProjectCreator/templates/gnu.mpd: + When link_groups is defined to 1 we group the LDLIBS within + -Wl,--start-group and -Wl,--end-group. This way the user can + manually enable this through the platform_macros.GNU file and + doesn't need to regenerate all makefiles. Also removed the + check for the compiler name, with VxWorks we also can use this + and there we have different compilers (ccppc, ccpentium, etc) + + * include/makeinclude/wrapper_macros.GNU: + also can use this + and there we have different compilers (ccppc, ccpentium, etc) + + * include/makeinclude/wrapper_macros.GNU: + Set link_groups to 0 by default, the user has to explicitly enable + it + + * bin/MakeProjectCreator/docs/templates/gnu.txt: + Removed link_groups, that is now enabled through platform_macros.GNU, + not through MPC + +Wed Nov 14 16:16:49 UTC 2007 Ciju John <johnc at ociweb dot com> + + * ace/Service_Config.cpp: + Check the reactor instance before using it. + +Wed Nov 14 14:34:26 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * m4/config_h.m4: + * m4/platform.m4: + + Remove autoheader template and platform support for the pSOS + platform. Support was removed from ACE some time ago. + +Wed Nov 14 11:00:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * include/makeinclude/platform_linux_icc.GNU: + Added support for Intel C++ 10.1 + +Wed Nov 14 07:47:28 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * m4/config_h.m4: + + Removed PTHREAD_STACK_MAX autoheader template as this feature + test macro is not used. + +Wed Nov 14 07:46:43 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * m4/config_h.m4: + * m4/platform.m4: + + Remove autoheader template and platform support for the DG/UX + platforms. Support was removed from ACE some time ago. + +Wed Nov 14 07:23:07 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * m4/platform.m4: + + Update autoheader templates for ACE_INT64_FORMAT_SPECIFIER and + ACE_UINT64_FORMAT_SPECIFIER to clarify that they're the printf + format specifiers for the ACE_INT64 and ACE_UINT64 types. + + This can be an important distinction for platforms with + compilers that validate literal format strings (where passing + "long long" for "%ld", or "long" for "%lld" will result in an + warning/error even when both are 64 bit integers). + +Wed Nov 14 07:18:21 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * m4/platform.m4: + + Remove platform support for the "fsu" platform. Support was + removed from ACE some time ago. + +Wed Nov 14 07:12:03 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * m4/config_h.m4: + * m4/platform.m4: + + Remove autoheader templates and platform support for the "m88k" + platform. Support was removed from ACE some time ago. + +Tue Nov 13 14:34:17 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * configure.ac: + * m4/config_h.m4: + + Replace autoheader templates for ACE_HAS_ALPHA_TIMER, + ACE_HAS_POWERPC_TIMER, and ACE_HAS_PENTIUM in config_h.m4 with + a third argument to AC_DEFINE in configure.ac + +Tue Nov 13 07:45:25 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * configure.ac: + + Add ACE_HAS_INTEL_ASSEMBLY feature test. + +Tue Nov 13 06:48:16 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/OS_NS_time.inl: + + Changed the inline assembly implementation of gethrtime() for + the amd64/x86_64 architecture to recognize that the timestamp is + read into the %eax and %edx registers, and thus must be combined + into a 64 bit value. Thanks to Nathan Ernst <Nathan dot Ernst at + citadelgroup dot com > for reporting this bug. + + * THANKS: + + Add Nathan Ernst <Nathan dot Ernst at citadelgroup dot com>. + +Tue Nov 13 06:01:33 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/OS_NS_stdio.inl: + + Change of Thu Nov 8 04:02:21 UTC 2007 was missing ACE_WIN32 + in conditional. Thanks to Johnny Willemsen for pointing out + resulting scoreboard failures. + +Mon Nov 12 20:05:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Enabled Smart_Proxies/Policy with VxWorks + +Mon Nov 12 14:16:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/Log_Msg.{h,cpp,inl}: + Use bool for several flags + +Mon Nov 12 14:12:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Disable Bug_2953_Regression for the moment on VxWorks, it hangs out + target + +Mon Nov 12 13:04:11 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/CDR_Base.inl: + + Take advantage of bswap16, bswap32, and bswap64 macros when + ACE_HAS_BSWAPXX is defined as we do for bswap_16, bswap_32, + and bswap_64 when ACE_HAS_BSWAP_XX is defined. + + * configure.ac: + + Changed checks for bswap_16, bswap_32, and bswap_64 to use + ACE_CHECK_HAS_DEFINES. Thanks to Thomas Girard <thomas dot g + dot girard at free dot fr> for reporting the ACE_HAS_BSWAP_XX + feature test macros were not being defined because bswap_16, + bswap_32, and bswap_64 are implemented as macros. This fixes + bugzilla 3134. + + Added check for bswap16, bswap32, and bswap64. These are the + *BSD, Darwin, etc. equivalents of the bswap_XX macros. + + * m4/ace_defines.m4: + + New file, new autoconf macros ACE_CHECK_DEFINE, + ACE_CHECK_HAS_DEFINES, and ACE_CHECK_LACKS_DEFINES. These are + used like ACE_CHECK_HAS_FUNCS and ACE_CHECK_LACKS_FUNCS, where + the tested feature is implemented as a macro and not a function. + +Mon Nov 12 10:25:00 UTC 2007 Simon Massey <simon.massey@prismtech.com> + + * bin/PerlACE/ConfigList.pm: + + Bugzilla 3085: Fix for "and" test for test suite control. + +Mon Nov 12 10:01:53 UTC 2007 Olli Savia <ops@iki.fi> + + * tests/Max_Default_Port_Test.cpp: + Changed this test to work on LynxOS. + +Mon Nov 12 06:36:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Disable bug 2494 regression for vxworks, it hangs our target. + When this test has been analyzed in detail we will enable + it again + +Mon Nov 12 06:31:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/config-linux-common.h: + The ACE_HAS_RUSAGE_WHO_ENUM and ACE_HAS_RLIMIT_RESOURCE_ENUM + are not needed anymore with glibc 2.3 and newer + Thanks to Thomas Girard <thomas dot g dot girard at free dot fr> + for reporting this. This fixes bugzilla 3143 + +Sun Nov 11 18:59:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Disable bug 1020 regression for vxworks, it hangs our target. + When this test has been analyzed in detail we will enable + it again + +Sun Nov 11 18:41:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * configure.ac: + Added check for wcsnlen. + Thanks to Thomas Girard <thomas dot g dot girard at free dot fr> + for reporting this. This fixes bugzilla 3146 + +Sun Nov 11 18:31:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/PerlACE/ProcessVX_Unix.pm: + * bin/PerlACE/ProcessVX_Win32.pm: + Replaces ACE_RUN_TAO_DEBUG_LEVEL with TAO_RUN_TAO_ORB_DEBUG + +Fri Nov 9 23:45:48 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/Makefile.am: + + Remove DEFAULT_INCLUDES= added on Wed Nov 7 04:33:02 UTC 2007. + Automake's nostdinc option performs the same function, but in + a documented, supported, manner. + + * configure.ac: + + Use nostdinc option to AM_INIT_AUTOMAKE. This instructs + automake not to add -I options for the current directory. + +Fri Nov 9 02:16:24 UTC 2007 Douglas C. Schmidt <schmidt@dre.vanderbilt.edu> + + * ace/Asynch_IO.h: Disallow copying and assignment for + ACE_Handler. Thanks to Juraj Ivancic <juraj dot ivancic at + gmail dot com> for this suggestion. + +Fri Nov 9 11:46:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/config-tandem-nsk-mips-v3.h: + * ace/os_include/sys/os_types.h: + * ace/Task.cpp: + * ace/Truncate.h: + Improved NSK support, thanks to Gary Maxey <gary dot maxey at hp dot com> + for delivering the patches. This fixes bugzilla 3124 + +Fri Nov 9 11:25:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_Thread.h: + Doxygen improvements + +Fri Nov 9 11:06:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/config-linux-common.h: + Newer glibc versions don't need ACE_HAS_NONCONST_SETRLIMIT anymore. + Thanks to Thomas Girard <thomas dot g dot girard at free dot fr> + for reporting this. This fixes bugzilla 3136 + +Fri Nov 9 09:46:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/config-vxworks6.2.h: + * ace/config-vxworks6.3.h: + * ace/config-vxworks6.4.h: + Some PPC's don't have log2 in kernel mode + +Fri Nov 9 09:37:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/OS_NS_Thread.{h,cpp,inl}: + * ace/Thread_Manager.cpp: + Changed ACE_hthread_t to an int for VxWorks. This makes the core of + ACE cleaner and more stable on VxWorks. At this moment you can't give + a Task a name, but we will extend the thread creation functions + with an additional char* in a next iteration. That way you can use + task names also when using pthread on vxworks. See also bugzilla 3131 + + * tests/Conn_Test.cpp: + * tests/Thread_Manager_Test.cpp: + Disable task name setting, will be enabled again when the spawn + methods are extended + +Fri Nov 9 08:58:21 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * ace/CDR_Base.inl: + Fixed incorrect define. This fixes bugzilla 3139. Thanks to + Thomas Girard <thomas dot g dot girard at free dot fr> + + * ace/Dynamic_Service_Base.{h,cpp}: + Reduced number of methods by using default argument values + + * ace/Object_Manager.{h,cpp}: + * ace/Service_Config.cpp: + The Service Configurator depends on the availability of TSS. When + TSS emulation is enabled, that emulation needs to be initialized + within the Object Manager. The Object Manager also depends on the SG, + so added a new init_tss() method that just initializes TSS + which is then called from the SG constructor. This fixes + problems with TAO VxWorks 6.x kernel mode. Thanks to Iliyan for + giving insights how SG/SC should work. + + * ace/OS_NS_Thread.h: + Changed key_create_ to bool and check the return value of taskSpawn + + * ace/Reactor.h: + * ace/Service_Config.inl: + Doxygen change + + * ace/Service_Config.cpp: + Updated some debug statements + + * bin/PerlACE/ProcessVX_Unix.pm: + * bin/PerlACE/ProcessVX_Win32.pm: + Added ACE_RUN_ACE_DEBUG and ACE_RUN_TAO_DEBUG_LEVEL, if set then + ACE_DEBUG/TAO_DEBUG_LEVEL are set as environment variabled on the + target + +Thu Nov 8 04:02:21 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/OS_NS_stdio.inl: + + Changed wide character version of ACE_OS::vsnprintf()'s to match + ACE_OS::snprintf() as like prior to Sun Oct 28 21:11:57 UTC 2007. + This fixes a error reporting in buffer overflow conditions. + + At that time all the ACE_OS::*printf() functions were changed to + call ACE_OS::v*printf(). The intent was to reduce the chance of + bugs being introduced because of largly parallel implementations. + What I didn't expect was that such a bug was already present. + +Thu Nov 8 02:09:02 UTC 2007 Phil Mesnier <mesnier_p@ociweb.com> + + * ace/Codeset_Registry_db.cpp: + Added an entry for UTF-8. + +Wed Nov 7 18:53:15 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/tao_orb_tests.lst: + Added Bug_2133 regression + +Wed Nov 7 04:33:02 UTC 2007 J.T. Conklin <jtc@acorntoolworks.com> + + * ace/Makefile.am: + + Add DEFAULT_INCLUDES definition that got lost during regeneration. + Fixes autoconf builds on case-insensitive filesystems. + + * m4/platform.m4: + + Add ACE_HAS_NONCONST_FD_ISSET feature test. + + Thanks to Doug McCorkle <mccdo at iastate dot edu> for providing + this patch. + +Tue Nov 6 11:30:00 UTC 2007 Simon Massey <simon.massey@prismtech.com> + + * ace/OS_NS_Thread.cpp: + + Re-instated the change of Thu Nov 1 14:40:00 UTC 2007. + Valgrind tests prove this is not causing the memory leaks + just exposing some existing ones. The whole area of TSS use + with singletons/statics needs to be investigated. + (See Bugzilla 3128 for details.) + +Tue Nov 6 10:59:15 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> + + * bin/PerlACE/ProcessVX_Win32.pm: + Fixed dirname setting + Mon Nov 5 20:00:15 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> * apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp: @@ -769,7 +1942,7 @@ Thu Oct 11 12:22:57 UTC 2007 Jeff Parsons <j.parsons@vanderbilt.edu> * THANKS: - Added Grégor Boirie <gregor dot boirie at free dot fr> + Added Gr�gor Boirie <gregor dot boirie at free dot fr> Wed Oct 10 11:33:40 UTC 2007 Steve Huston <shuston@riverace.com> @@ -3469,7 +4642,7 @@ Sat Jul 28 18:19:12 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> * configure.ac: Added checks for byteswap.h, intrin.h, ia32intrin.h, and - ia64intrin.h, part of buzilla 2905. + ia64intrin.h, part of bugzilla 2905. Fri Jul 27 06:50:14 CDT 2007 Johnny Willemsen <jwillemsen@remedy.nl> @@ -5,6 +5,11 @@ PLANNED MAJOR CHANGES "SOMETIME IN THE FUTURE" (i.e., exact beta not known) . (OO) Various other fixes that have been piling up. +USER VISIBLE CHANGES BETWEEN ACE-5.6.2 and ACE-5.6.3 +==================================================== + +. Deprecated Visual Age 5 and older + USER VISIBLE CHANGES BETWEEN ACE-5.6.1 and ACE-5.6.2 ==================================================== @@ -12,6 +17,65 @@ USER VISIBLE CHANGES BETWEEN ACE-5.6.1 and ACE-5.6.2 . Added support for Sun Studio 12 +. Added support for Intel C++ 10.1 + +. Fixed runtime problems with VxWorks 6.x in kernel mode, several improvements + have been made to ACE, but also some problems in the VxWorks kernel have + been found for which WindRiver has made patches. + +. Added support for VxWorks 6.5 kernel mode + +. Added support for MacOS 10.5 + +. Support for MacOS 10.4 is now deprecated. + +. Added support for OpenSuSE 10.3 + +. Added support for RedHat 5.1 + +. Added support for Microsoft Visual Studio 2008 + +. Added support for Fedora Core 8 + +. Added support for Ubuntu 7.10 + +. With Ubuntu 7.04 and 7.10 we can't use visibility, that results in + unresolved externals when building some tests. With lsb_release we + now detect Ubuntu 7.04 and 7.10 automatically and then we disable + visibility + +. Removed deprecated (un)subscribe methods from ACE_SOCK_Dgram_Mcast + +. Added an additional replace() method to ACE_OuptutCDR for replacing a + ACE_CDR::Short value. Also added write_long_placeholder() and + write_short_placeholder() to properly align the stream's write pointer, + write a placeholder value and return the placeholder's pointer. The pointer + can later be used in a call to replace() to replace the placeholder with a + different value. + +. Initial support for VxWorks 6.6 + +. Removed support for pthread draft 4, 6, & 7. This makes the ACE threading + code much cleaner + +. Improved autoconf support + +. Fixed TSS emulation problems + +. Changed ACE_thread_t and ACE_hthread_t to int for VxWorks kernel mode. All + thread creation methods do have an additional const char* argument to + specify the task name, this now also works with pthread support enabled + +. Use bool in much more interfaces where this is possible + +. Added support for Debian Etch + +. Fixed ACE CDR LongDouble support on VxWorks 6.x + +. Added Microsoft Visual Studio 2008 project files to the release packages + +. Fixed a few bugs in the ACE_Vector template + USER VISIBLE CHANGES BETWEEN ACE-5.6 and ACE-5.6.1 ==================================================== diff --git a/ACE/PROBLEM-REPORT-FORM b/ACE/PROBLEM-REPORT-FORM index a7c69af199d..db14a872db3 100644 --- a/ACE/PROBLEM-REPORT-FORM +++ b/ACE/PROBLEM-REPORT-FORM @@ -43,7 +43,7 @@ To: ace-bugs@cs.wustl.edu Subject: [area]: [synopsis] - ACE VERSION: 5.6.1 + ACE VERSION: 5.6.2 HOST MACHINE and OPERATING SYSTEM: If on Windows based OS's, which version of WINSOCK do you diff --git a/ACE/THANKS b/ACE/THANKS index e74f300002a..20b331971bb 100644 --- a/ACE/THANKS +++ b/ACE/THANKS @@ -70,6 +70,7 @@ Emre Turkay <turkaye at dre dot vanderbilt dot edu> Nanbor Wang <nanbor at cs dot wustl dot edu> Seth Widoff <sbw1 at cs dot wustl dot edu> Jules White <jules at dre dot vanderbilt dot edu> +Friedhelm Wolf <fwolf at dre dot vanderbilt dot edu> Torben Worm <tworm at cs dot wustl dot edu> Ming Xiong <xiongm at isis dot vanderbilt dot edu> @@ -2007,7 +2008,6 @@ Steven T. Hatton <hattons at globalsymmetry dot com> Yevgen Galchenko <yevgeng at softcomputer dot com> Timothy Wayne Gomez <gomezt at saic dot com> Ventimiglia Chere <Ventimiglia_Chere at emc dot com> -Friedhelm Wolf <fwolf at dre dot vanderbilt dot edu> Frederick Heckel <fwph at cse dot wustl dot edu> Ian Zagorskih <ianzag at megasignal dot com> Olivier Guérin <guerin35 at hotmail dot com> @@ -2226,6 +2226,14 @@ Nathan Glasser <nglasser at cantata dot com> Grégor Boirie <gregor dot boirie at free dot fr> Alex Solan <alex dot solan at gmail dot com> Venkat Sidhabathuni <venkats at idengines dot com> +Nathan Ernst <Nathan dot Ernst at citadelgroup dot com> +Kun Niu <haoniukun at gmail dot com> +Karl-Heinz Wind <wind at itq dot de> +Oliver Spang <oliver dot spang at nsn dot com> +Hu Yi <huyi dot zg at gmail dot com> +Joe Seward <joseph dot f dot seward at saic dot com> +Tom Callaway <tcallawa at redhat dot com> +Alick Nie <alick_nie at 163 dot com> 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/VERSION b/ACE/VERSION index 829b2535308..077603e6357 100644 --- a/ACE/VERSION +++ b/ACE/VERSION @@ -1,4 +1,4 @@ -This is ACE version 5.6.1, released Wed Sep 19 04:10:15 CDT 2007 +This is ACE version 5.6.2, released Fri Dec 14 02:48:57 CST 2007 If you have any problems with or questions about ACE, please send email to the ACE mailing list (ace-users@cs.wustl.edu), using the form diff --git a/ACE/ace/ARGV.h b/ACE/ace/ARGV.h index 7c714e17413..a50535f1dea 100644 --- a/ACE/ace/ARGV.h +++ b/ACE/ace/ARGV.h @@ -21,6 +21,7 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ +#include "ace/Global_Macros.h" #include "ace/Unbounded_Queue.h" // Open versioned namespace, if enabled by the user. diff --git a/ACE/ace/Asynch_IO.h b/ACE/ace/Asynch_IO.h index 9e9c5ad837d..e71c16ca3ee 100644 --- a/ACE/ace/Asynch_IO.h +++ b/ACE/ace/Asynch_IO.h @@ -1625,6 +1625,9 @@ protected: /// Refers to proxy for this handler. ACE_Refcounted_Auto_Ptr<Proxy, ACE_SYNCH_MUTEX> proxy_; + + ACE_UNIMPLEMENTED_FUNC (ACE_Handler (const ACE_Handler &)) + ACE_UNIMPLEMENTED_FUNC (ACE_Handler operator= (const ACE_Handler &)) }; // Forward declarations diff --git a/ACE/ace/CDR_Base.h b/ACE/ace/CDR_Base.h index 3507b21c4ae..afd278a5e59 100644 --- a/ACE/ace/CDR_Base.h +++ b/ACE/ace/CDR_Base.h @@ -280,14 +280,14 @@ public: // with Windows, Solaris, AIX, MacOS X and HP-UX (and probably others) // long double format (8 or 16 bytes). If you need 32-bit Linux to // inter-operate with 64-bit Linux you will want to define this - // macro so that "long double" is used. Otherwise, do not define + // macro to 0 so that "long double" is used. Otherwise, do not define // this macro. -# if defined (ACE_IMPLEMENT_WITH_NATIVE_LONGDOUBLE) || \ - (!defined (linux) && !defined (VXWORKS)) - typedef long double NativeImpl; -# else +# if defined (ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE) && \ + (ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE == 1) typedef double NativeImpl; -# endif /* ACE_IMPLEMENT_WITH_NATIVE_LONGDOUBLE || (!linux && !VXWORKS) */ +# else + typedef long double NativeImpl; +# endif /* ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE==1 */ char ld[16]; diff --git a/ACE/ace/CDR_Base.inl b/ACE/ace/CDR_Base.inl index 811165f91bf..b84470af87f 100644 --- a/ACE/ace/CDR_Base.inl +++ b/ACE/ace/CDR_Base.inl @@ -8,7 +8,7 @@ # pragma intrinsic (_byteswap_ushort, _byteswap_ulong, _byteswap_uint64) #endif /* ACE_HAS_INTRINSIC_BYTESWAP */ -#if defined (ACE_HAS_BSWAP_16) || defined (ACE_HAS_BSWAP_32) || defined (ACE_HAS_BSWAP_32) +#if defined (ACE_HAS_BSWAP_16) || defined (ACE_HAS_BSWAP_32) || defined (ACE_HAS_BSWAP_64) # include "ace/os_include/os_byteswap.h" #endif @@ -70,9 +70,12 @@ ACE_CDR::swap_2 (const char *orig, char* target) // function. *reinterpret_cast<unsigned short *> (target) = _byteswap_ushort (*reinterpret_cast<unsigned short const *> (orig)); +#elif defined (ACE_HAS_BSWAP16) + *reinterpret_cast<uint16_t *> (target) = + bswap16 (*reinterpret_cast<uint16_t const *> (orig)); #elif defined (ACE_HAS_BSWAP_16) - *reinterpret_cast<unsigned short *> (target) = - bswap_16 (*reinterpret_cast<unsigned short const *> (orig)); + *reinterpret_cast<uint16_t *> (target) = + bswap_16 (*reinterpret_cast<uint16_t const *> (orig)); #elif defined(ACE_HAS_INTEL_ASSEMBLY) unsigned short a = *reinterpret_cast<const unsigned short*> (orig); @@ -101,9 +104,12 @@ ACE_CDR::swap_4 (const char* orig, char* target) // function. *reinterpret_cast<unsigned long *> (target) = _byteswap_ulong (*reinterpret_cast<unsigned long const *> (orig)); +#elif defined (ACE_HAS_BSWAP32) + *reinterpret_cast<uint32_t *> (target) = + bswap32 (*reinterpret_cast<uint32_t const *> (orig)); #elif defined (ACE_HAS_BSWAP_32) - *reinterpret_cast<unsigned int *> (target) = - bswap_32 (*reinterpret_cast<unsigned int const *> (orig)); + *reinterpret_cast<uint32_t *> (target) = + bswap_32 (*reinterpret_cast<uint32_t const *> (orig)); #elif defined(ACE_HAS_INTEL_ASSEMBLY) // We have ACE_HAS_PENTIUM, so we know the sizeof's. register unsigned int j = @@ -133,9 +139,12 @@ ACE_CDR::swap_8 (const char* orig, char* target) // function. *reinterpret_cast<unsigned __int64 *> (target) = _byteswap_uint64 (*reinterpret_cast<unsigned __int64 const *> (orig)); +#elif defined (ACE_HAS_BSWAP64) + *reinterpret_cast<uint64_t *> (target) = + bswap64 (*reinterpret_cast<uint64_t const *> (orig)); #elif defined (ACE_HAS_BSWAP_64) - *reinterpret_cast<unsigned long long *> (target) = - bswap_64 (*reinterpret_cast<unsigned long long const *> (orig)); + *reinterpret_cast<uint64_t *> (target) = + bswap_64 (*reinterpret_cast<uint64_t const *> (orig)); #elif (defined (__amd64__) || defined (__x86_64__)) && defined(__GNUG__) register unsigned long x = * reinterpret_cast<const unsigned long*> (orig); diff --git a/ACE/ace/CDR_Stream.cpp b/ACE/ace/CDR_Stream.cpp index a9e1fa4f6cf..00af2b70940 100644 --- a/ACE/ace/CDR_Stream.cpp +++ b/ACE/ace/CDR_Stream.cpp @@ -651,6 +651,46 @@ ACE_OutputCDR::write_array (const void *x, ACE_CDR::Boolean +ACE_OutputCDR::write_boolean_array (const ACE_CDR::Boolean* x, + ACE_CDR::ULong length) +{ + // It is hard to optimize this, the spec requires that on the wire + // booleans be represented as a byte with value 0 or 1, but in + // memory it is possible (though very unlikely) that a boolean has + // a non-zero value (different from 1). + // We resort to a simple loop. + ACE_CDR::Boolean const * const end = x + length; + + for (ACE_CDR::Boolean const * i = x; + i != end && this->good_bit (); + ++i) + (void) this->write_boolean (*i); + + return this->good_bit (); +} + + +char * +ACE_OutputCDR::write_long_placeholder (void) +{ + this->align_write_ptr (ACE_CDR::LONG_SIZE); + char *pos = this->current_->wr_ptr (); + this->write_long (0); + return pos; +} + + +char * +ACE_OutputCDR::write_short_placeholder (void) +{ + this->align_write_ptr (ACE_CDR::SHORT_SIZE); + char *pos = this->current_->wr_ptr(); + this->write_short (0); + return pos; +} + + +ACE_CDR::Boolean ACE_OutputCDR::replace (ACE_CDR::Long x, char* loc) { if (this->find (loc) == 0) @@ -674,22 +714,25 @@ ACE_OutputCDR::replace (ACE_CDR::Long x, char* loc) ACE_CDR::Boolean -ACE_OutputCDR::write_boolean_array (const ACE_CDR::Boolean* x, - ACE_CDR::ULong length) +ACE_OutputCDR::replace (ACE_CDR::Short x, char* loc) { - // It is hard to optimize this, the spec requires that on the wire - // booleans be represented as a byte with value 0 or 1, but in - // memory it is possible (though very unlikely) that a boolean has - // a non-zero value (different from 1). - // We resort to a simple loop. - ACE_CDR::Boolean const * const end = x + length; + if (this->find (loc) == 0) + return false; - for (ACE_CDR::Boolean const * i = x; - i != end && this->good_bit (); - ++i) - (void) this->write_boolean (*i); +#if !defined (ACE_ENABLE_SWAP_ON_WRITE) + *reinterpret_cast<ACE_CDR::Short*> (loc) = x; +#else + if (!this->do_byte_swap_) + { + *reinterpret_cast<ACE_CDR::Short *> (loc) = x; + } + else + { + ACE_CDR::swap_2 (reinterpret_cast<const char*> (&x), loc); + } +#endif /* ACE_ENABLE_SWAP_ON_WRITE */ - return this->good_bit (); + return true; } diff --git a/ACE/ace/CDR_Stream.h b/ACE/ace/CDR_Stream.h index 6588664f36f..58ddea442ed 100644 --- a/ACE/ace/CDR_Stream.h +++ b/ACE/ace/CDR_Stream.h @@ -233,32 +233,6 @@ public: ACE_CDR::Boolean write_double (const ACE_CDR::Double &x); ACE_CDR::Boolean write_longdouble (const ACE_CDR::LongDouble &x); - /** - * Writes a ACE_CDR::Long value into a specific location. This is commonly - * used to update a prior location in the stream which was previously - * written as a ACE_CDR::Long placeholder. There is no alignment required - * since the alignment is done before writing the long type placeholder. - * Treatment of @a x with repect to byte swapping is the same as for when - * any ACE_CDR::Long value is inserted. - * - * @param x The Long value to insert into the specified location. - * @param loc The location at which to insert @a x. @a loc must be a valid - * position within the stream's current set of message blocks. - * - * @note An example use for this feature is: - * @code - ACE_OutputCDR strm; - ... // insert values... - strm.align_write_ptr (ACE_CDR::LONG_SIZE); - char *pos = strm.current ().wr_ptr (); - strm.write_long (0); // Placeholder value - ... // insert more values - ACE_CDR::Long real_val; // Somehow assign the "correct" value - strm.replace (real_val, pos); // Replace earlier placeholder - @endcode - */ - ACE_CDR::Boolean replace (ACE_CDR::Long x, char* loc); - /// For string we offer methods that accept a precomputed length. ACE_CDR::Boolean write_string (const ACE_CDR::Char *x); ACE_CDR::Boolean write_string (ACE_CDR::ULong len, @@ -306,6 +280,52 @@ public: //@} /** + * @{ @name Placeholder/replace operations + * Facilitates writing a placeholder into a CDR stream to be replaced + * later with a different value. + * + * @note An example use for this facility is: + * @code + ACE_OutputCDR strm; + ... // insert values... + char *pos = strm.write_long_placeholder (); + ... // insert more values + ACE_CDR::Long real_val; // Somehow assign the "correct" value + strm.replace (real_val, pos); // Replace earlier placeholder + @endcode + */ + + /** + * Write a placeholder into the stream. The placeholder's pointer + * is returned so it may later be passed as the @a loc argument to + * replace (). + * These methods align the stream's write pointer properly prior to + * writing the placeholder. + */ + char* write_long_placeholder (void); + char* write_short_placeholder (void); + + /** + * Writes a new value into a specific location. This is commonly + * used to update a prior "placeholder" location in the stream. + * The specified location is assumed to have proper CDR alignment for the + * type to insert. This requirement is satisfied by using one of the + * placeholder-writing methods to align the stream for the anticipated + * value and obtain the correct location. + * Treatment of @a x with repect to byte swapping is the same as for when + * any value is inserted. + * + * @param x The value to insert into the specified location. + * @param loc The location at which to insert @a x. @a loc must be a valid + * position within the stream's current set of message blocks. + * + * @sa write_long_placeholder(), write_short_placeholder () + */ + ACE_CDR::Boolean replace (ACE_CDR::Long x, char* loc); + ACE_CDR::Boolean replace (ACE_CDR::Short x, char* loc); + //@} + + /** * Return 0 on failure and 1 on success. */ //@{ @name Append contents of own CDR stream to another diff --git a/ACE/ace/Codecs.cpp b/ACE/ace/Codecs.cpp index 4e8dbd5106e..505c5fc9916 100644 --- a/ACE/ace/Codecs.cpp +++ b/ACE/ace/Codecs.cpp @@ -37,7 +37,8 @@ ACE_Byte ACE_Base64::member_[256]; ACE_Byte* ACE_Base64::encode (const ACE_Byte* input, const size_t input_len, - size_t* output_len) + size_t* output_len, + bool is_chunked) { if (!ACE_Base64::init_) ACE_Base64::init(); @@ -70,7 +71,8 @@ ACE_Base64::encode (const ACE_Byte* input, result[pos++] = alphabet[bits & 0x3f]; cols += 4; if (cols == max_columns) { - result[pos++] = '\n'; + if (is_chunked) + result[pos++] = '\n'; cols = 0; } bits = 0; @@ -87,19 +89,24 @@ ACE_Base64::encode (const ACE_Byte* input, bits <<= (16 - (8 * char_count)); result[pos++] = alphabet[bits >> 18]; result[pos++] = alphabet[(bits >> 12) & 0x3f]; + cols += 2; if (char_count == 1) { result[pos++] = pad; result[pos++] = pad; + cols += 2; } else { result[pos++] = alphabet[(bits >> 6) & 0x3f]; result[pos++] = pad; + cols += 2; } - if (cols > 0) - result[pos++] = '\n'; } + + if (cols > 0 && is_chunked) + result[pos++] = '\n'; + result[pos] = 0; *output_len = pos; return result; diff --git a/ACE/ace/Codecs.h b/ACE/ace/Codecs.h index c0916f724e3..85447b75e06 100644 --- a/ACE/ace/Codecs.h +++ b/ACE/ace/Codecs.h @@ -55,13 +55,15 @@ public: * @param input Binary data in byte stream. * @param input_len Length of the byte stream. * @param output_len Length of the encoded Base64 byte stream. + * @param is_chunked If true, terminate 72 character blocks with newline * @return Encoded Base64 data in byte stream or NULL if input data cannot * be encoded. */ static ACE_Byte* encode (const ACE_Byte* input, const size_t input_len, - size_t* output_len); + size_t* output_len, + bool is_chunked = true); /** * Decodes a stream of Base64 to bytes data * diff --git a/ACE/ace/Codeset_Registry_db.cpp b/ACE/ace/Codeset_Registry_db.cpp index cd6e29760af..8b1ef176576 100644 --- a/ACE/ace/Codeset_Registry_db.cpp +++ b/ACE/ace/Codeset_Registry_db.cpp @@ -20,9 +20,10 @@ ACE_Codeset_Registry::registry_db_[] = {"ISO 8859-1:1987; Latin Alphabet No. 1","ASCII",0x00010001,1,{0x0011},1}, {"IBM-1047 (CCSID 01047); Latin-1 Open System","EBCDIC",0x10020417,1,{0x0011},1}, {"ISO/IEC 10646-1:1993; UCS-4, Level 1","UCS-4",0x00010104,1,{0x1000},4}, - {"ISO/IEC 10646-1:1993; UTF-16, UCS Transformation Format 16-bit form","Unicode",0x00010109,1,{0x1000},2} + {"ISO/IEC 10646-1:1993; UTF-16, UCS Transformation Format 16-bit form","Unicode",0x00010109,1,{0x1000},2}, + {"X/Open UTF-8; UCS Transformation Format 8 (UTF-8)","UTF-8",0x05010001,1,{0x1000},6} }; -size_t const ACE_Codeset_Registry::num_registry_entries_ = 4; +size_t const ACE_Codeset_Registry::num_registry_entries_ = 5; ACE_END_VERSIONED_NAMESPACE_DECL diff --git a/ACE/ace/DLL_Manager.h b/ACE/ace/DLL_Manager.h index 6c9db0c529d..a59636696ba 100644 --- a/ACE/ace/DLL_Manager.h +++ b/ACE/ace/DLL_Manager.h @@ -10,7 +10,6 @@ */ //============================================================================= - #ifndef ACE_DLL_MANAGER_H #define ACE_DLL_MANAGER_H #include /**/ "ace/pre.h" @@ -41,19 +40,18 @@ ACE_BEGIN_VERSIONED_NAMESPACE_DECL * @brief Provides an abstract interface for handling various DLL * operations. * - * This class is an wrapper over the various methods for utilizing - * a dynamically linked library (DLL), which is called a shared - * library on some platforms. It is refcounted and managed by + * This class is an wrapper over the various methods for utilizing a + * dynamically linked library (DLL), which is called a shared library + * on some platforms. It is refcounted and managed by * ACE_DLL_Manager, so there will only be a single instance of this * class for each dll loaded, no matter how many instances of ACE_DLL - * an application has open. Operations <open>, <close>, and - * <symbol> have been implemented to help opening/closing and - * extracting symbol information from a DLL, respectively. + * an application has open. Operations <open>, <close>, and <symbol> + * have been implemented to help opening/closing and extracting symbol + * information from a DLL, respectively. * - * Most of this class came from the original ACE_DLL class. - * ACE_DLL is now just an interface that passed all it's calls - * either directly or via ACE_DLL_Manager to this class for - * execution. + * Most of this class came from the original ACE_DLL class. ACE_DLL + * is now just an interface that passed all it's calls either directly + * or via ACE_DLL_Manager to this class for execution. * */ class ACE_Export ACE_DLL_Handle diff --git a/ACE/ace/Dynamic_Service_Base.cpp b/ACE/ace/Dynamic_Service_Base.cpp index b6977d460ae..e93dde6e905 100644 --- a/ACE/ace/Dynamic_Service_Base.cpp +++ b/ACE/ace/Dynamic_Service_Base.cpp @@ -35,15 +35,6 @@ ACE_Dynamic_Service_Base::instance (const ACE_TCHAR *name, bool no_global) return instance (ACE_Service_Config::current (), name, no_global); } - -void * -ACE_Dynamic_Service_Base::instance (const ACE_TCHAR *name) -{ - ACE_TRACE ("ACE_Dynamic_Service_Base::instance"); - return instance (ACE_Service_Config::current (), name, false); -} - - // Find a service registration const ACE_Service_Type * @@ -107,15 +98,4 @@ ACE_Dynamic_Service_Base::instance (const ACE_Service_Gestalt* repo, return obj; } - -// Get the instance using <name> for specific configuration repository. - -void * -ACE_Dynamic_Service_Base::instance (const ACE_Service_Gestalt* repo, - const ACE_TCHAR *name) -{ - return instance (repo, name, false); -} - - ACE_END_VERSIONED_NAMESPACE_DECL diff --git a/ACE/ace/Dynamic_Service_Base.h b/ACE/ace/Dynamic_Service_Base.h index c36337a5de2..7a039a1a6b2 100644 --- a/ACE/ace/Dynamic_Service_Base.h +++ b/ACE/ace/Dynamic_Service_Base.h @@ -43,20 +43,13 @@ public: void dump (void) const; protected: - /// Return instance using @a name to search the (default) Service_Repository. - static void* instance (const ACE_TCHAR *name); - /// Perform the default repo search, but optionally skip searching the global /// repo. - static void* instance (const ACE_TCHAR *name, bool no_global); - - /// Return instance using @a name to search the specific @a repo instance. - static void* instance (const ACE_Service_Gestalt* repo, - const ACE_TCHAR *name); + static void* instance (const ACE_TCHAR *name, bool no_global = false); static void* instance (const ACE_Service_Gestalt* repo, const ACE_TCHAR *name, - bool no_global); + bool no_global = false); /// No need to create, or assign instances of this class ACE_Dynamic_Service_Base (void); diff --git a/ACE/ace/Get_Opt.cpp b/ACE/ace/Get_Opt.cpp index 7c8175f5575..e13f5c3376c 100644 --- a/ACE/ace/Get_Opt.cpp +++ b/ACE/ace/Get_Opt.cpp @@ -167,7 +167,7 @@ ACE_Get_Opt::~ACE_Get_Opt (void) ACE_Get_Opt_Long_Option *option = 0; for (i = 0; i < size; ++i) { - int retval = this->long_opts_.get (option, i); + int retval = this->long_opts_.get (option, i); if (retval != 0) { // Should never happen. diff --git a/ACE/ace/INET_Addr.cpp b/ACE/ace/INET_Addr.cpp index 64b251fdcdb..1f80d4b5589 100644 --- a/ACE/ace/INET_Addr.cpp +++ b/ACE/ace/INET_Addr.cpp @@ -464,7 +464,6 @@ ACE_INET_Addr::set (const char port_name[], int const port_number = get_port_number_from_name (port_name, protocol); if (port_number == -1) { - ACE_UNUSED_ARG (host_name); ACE_NOTSUP_RETURN (-1); } @@ -491,7 +490,6 @@ ACE_INET_Addr::set (const char port_name[], int const port_number = get_port_number_from_name (port_name, protocol); if (port_number == -1) { - ACE_UNUSED_ARG (inet_address); ACE_NOTSUP_RETURN (-1); } @@ -733,7 +731,7 @@ ACE_INET_Addr::get_host_name (char hostname[], int result; if (len > 1) { - result = get_host_name_i (hostname,len); + result = this->get_host_name_i (hostname,len); if (result < 0) { if (result == -2) diff --git a/ACE/ace/Log_Msg.cpp b/ACE/ace/Log_Msg.cpp index 862bdf16cad..727c82fd040 100644 --- a/ACE/ace/Log_Msg.cpp +++ b/ACE/ace/Log_Msg.cpp @@ -657,9 +657,9 @@ ACE_Log_Msg::ACE_Log_Msg (void) ostream_ (0), msg_callback_ (0), trace_depth_ (0), - trace_active_ (0), - tracing_enabled_ (1), // On by default? - delete_ostream_(0), + trace_active_ (false), + tracing_enabled_ (true), // On by default? + delete_ostream_(false), thr_desc_ (0), priority_mask_ (default_priority_mask_), timestamp_ (0) @@ -751,7 +751,7 @@ ACE_Log_Msg::~ACE_Log_Msg (void) // // do we need to close and clean up? // - if (this->delete_ostream_ == 1) + if (this->delete_ostream_) #if defined (ACE_LACKS_IOSTREAM_TOTALLY) { ACE_OS::fclose (this->ostream_); @@ -2118,7 +2118,7 @@ ACE_Log_Msg::log (ACE_Log_Record &log_record, if (ACE_BIT_DISABLED (ACE_Log_Msg::flags_, ACE_Log_Msg::SILENT)) { - int tracing = this->tracing_enabled (); + bool tracing = this->tracing_enabled (); this->stop_tracing (); #if !defined (ACE_WIN32) @@ -2388,7 +2388,7 @@ ACE_Log_Msg::msg_backend (void) } void -ACE_Log_Msg::msg_ostream (ACE_OSTREAM_TYPE *m, int delete_ostream) +ACE_Log_Msg::msg_ostream (ACE_OSTREAM_TYPE *m, bool delete_ostream) { if (this->ostream_ == m) return; diff --git a/ACE/ace/Log_Msg.h b/ACE/ace/Log_Msg.h index 49a0bd19553..d99a7f71dd8 100644 --- a/ACE/ace/Log_Msg.h +++ b/ACE/ace/Log_Msg.h @@ -315,11 +315,11 @@ public: void msg_ostream (ACE_OSTREAM_TYPE *); /** - * delete_stream == 1, forces Log_Msg.h to delete the stream in + * delete_stream == true, forces Log_Msg.h to delete the stream in * its own ~dtor (assumes control of the stream) * use only with proper ostream (eg: fstream), not (cout, cerr) */ - void msg_ostream (ACE_OSTREAM_TYPE *, int delete_ostream); + void msg_ostream (ACE_OSTREAM_TYPE *, bool delete_ostream); /// Get the ostream that is used to print error messages. ACE_OSTREAM_TYPE *msg_ostream (void) const; @@ -359,10 +359,10 @@ public: void trace_depth (int); /// Set trace active status. - int trace_active (void) const; + bool trace_active (void) const; /// Get trace active status. - void trace_active (int value); + void trace_active (bool value); /// Get the TSS thread descriptor. ACE_Thread_Descriptor *thr_desc (void) const; @@ -402,7 +402,7 @@ public: void start_tracing (void); /// Query tracing status on a per-thread basis... - int tracing_enabled (void) const; + bool tracing_enabled (void) const; typedef enum { @@ -599,13 +599,13 @@ private: int trace_depth_; /// Are we already within an ACE_Trace constructor call? - int trace_active_; + bool trace_active_; /// Are we allowing tracing in this thread? - int tracing_enabled_; + bool tracing_enabled_; /// Are we deleting this ostream? - int delete_ostream_; + bool delete_ostream_; /** * If we're running in the context of an ACE_Thread_Manager this diff --git a/ACE/ace/Log_Msg.inl b/ACE/ace/Log_Msg.inl index 1cb2f134265..677a6856d8f 100644 --- a/ACE/ace/Log_Msg.inl +++ b/ACE/ace/Log_Msg.inl @@ -110,7 +110,7 @@ ACE_Log_Msg::trace_depth (int depth) } ACE_INLINE -int +bool ACE_Log_Msg::trace_active (void) const { return this->trace_active_; @@ -118,7 +118,7 @@ ACE_Log_Msg::trace_active (void) const ACE_INLINE void -ACE_Log_Msg::trace_active (int value) +ACE_Log_Msg::trace_active (bool value) { this->trace_active_ = value; } @@ -135,7 +135,7 @@ ACE_INLINE void ACE_Log_Msg::start_tracing (void) { - this->tracing_enabled_ = 1; + this->tracing_enabled_ = true; } /// Disable the tracing facility on a per-thread basis. @@ -143,11 +143,11 @@ ACE_INLINE void ACE_Log_Msg::stop_tracing (void) { - this->tracing_enabled_ = 0; + this->tracing_enabled_ = false; } ACE_INLINE -int +bool ACE_Log_Msg::tracing_enabled (void) const { return this->tracing_enabled_; diff --git a/ACE/ace/OS_NS_Thread.cpp b/ACE/ace/OS_NS_Thread.cpp index f6e78d2ad93..eb56559be82 100644 --- a/ACE/ace/OS_NS_Thread.cpp +++ b/ACE/ace/OS_NS_Thread.cpp @@ -109,7 +109,7 @@ ACE_TSS_Emulation::tss_destructor_[ACE_TSS_Emulation::ACE_TSS_THREAD_KEYS_MAX] # if defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) -int ACE_TSS_Emulation::key_created_ = 0; +bool ACE_TSS_Emulation::key_created_ = false; ACE_OS_thread_key_t ACE_TSS_Emulation::native_tss_key_; @@ -139,12 +139,12 @@ ACE_TSS_Emulation::tss_base (void* ts_storage[], u_int *ts_created) // TSS Singleton implementation. // Create the one native TSS key, if necessary. - if (key_created_ == 0) + if (!key_created_) { // Double-checked lock . . . ACE_TSS_BASE_GUARD - if (key_created_ == 0) + if (!key_created_) { ACE_NO_HEAP_CHECK; if (ACE_OS::thr_keycreate_native (&native_tss_key_, @@ -153,7 +153,7 @@ ACE_TSS_Emulation::tss_base (void* ts_storage[], u_int *ts_created) ACE_ASSERT (0); return 0; // Major problems, this should *never* happen! } - key_created_ = 1; + key_created_ = true; } } @@ -168,8 +168,7 @@ ACE_TSS_Emulation::tss_base (void* ts_storage[], u_int *ts_created) } // Check to see if this is the first time in for this thread. - // This block can also be entered after a fork () in the child process, - // at least on Pthreads Draft 4 platforms. + // This block can also be entered after a fork () in the child process. if (old_ts_storage == 0) { if (ts_created) @@ -1050,9 +1049,8 @@ ACE_TSS_Cleanup::tss_keys () } } - ACE_TSS_Keys *ts_keys = 0; - if (ACE_OS::thr_getspecific (in_use_, - reinterpret_cast <void **> (&ts_keys)) == -1) + void *ts_keys = 0; + if (ACE_OS::thr_getspecific (in_use_, &ts_keys) == -1) { ACE_ASSERT (false); return 0; // This should not happen! @@ -1065,16 +1063,15 @@ ACE_TSS_Cleanup::tss_keys () 0); // Store the dynamically allocated pointer in thread-specific // storage. - if (ACE_OS::thr_setspecific (in_use_, - reinterpret_cast <void *> (ts_keys)) == -1) + if (ACE_OS::thr_setspecific (in_use_, ts_keys) == -1) { ACE_ASSERT (false); - delete ts_keys; + delete reinterpret_cast <ACE_TSS_Keys*> (ts_keys); return 0; // Major problems, this should *never* happen! } } - return ts_keys; + return reinterpret_cast <ACE_TSS_Keys*>(ts_keys); } #endif /* ACE_WIN32 || ACE_HAS_TSS_EMULATION */ @@ -1152,8 +1149,7 @@ ACE_OS::cleanup_tss (const u_int main_thread) // @@ The following functions could be inlined if i could figure where // to put it among the #ifdefs! int -ACE_OS::condattr_init (ACE_condattr_t &attributes, - int type) +ACE_OS::condattr_init (ACE_condattr_t &attributes, int type) { attributes.type = type; return 0; @@ -1812,49 +1808,33 @@ ACE_OS::mutex_init (ACE_mutex_t *m, // wasn't originally set. if (attributes == &l_attributes) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - if (::pthread_mutexattr_create (attributes) == 0) -# elif defined (ACE_HAS_PTHREADS_DRAFT7) || defined (ACE_HAS_PTHREADS_STD) if (ACE_ADAPT_RETVAL (::pthread_mutexattr_init (attributes), result) == 0) -# else /* draft 6 */ - if (::pthread_mutexattr_init (attributes) == 0) -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ -{ - result = 0; - attr_init = 1; // we have initialized these attributes -} + { + result = 0; + attr_init = 1; // we have initialized these attributes + } else - result = -1; // ACE_ADAPT_RETVAL used it for intermediate status + { + result = -1; // ACE_ADAPT_RETVAL used it for intermediate status + } } if (result == 0 && lock_scope != 0) { -# if defined (ACE_HAS_PTHREADS_DRAFT7) || defined (ACE_HAS_PTHREADS_STD) # if defined (_POSIX_THREAD_PROCESS_SHARED) && !defined (ACE_LACKS_MUTEXATTR_PSHARED) (void) ACE_ADAPT_RETVAL (::pthread_mutexattr_setpshared (attributes, lock_scope), result); # endif /* _POSIX_THREAD_PROCESS_SHARED && !ACE_LACKS_MUTEXATTR_PSHARED */ -# else /* Pthreads draft 6 */ -# if !defined (ACE_LACKS_MUTEXATTR_PSHARED) - if (::pthread_mutexattr_setpshared (attributes, lock_scope) != 0) - result = -1; -# endif /* ACE_LACKS_MUTEXATTR_PSHARED */ -# endif /* ACE_HAS_PTHREADS_DRAFT7 || ACE_HAS_PTHREADS_STD */ } if (result == 0 && lock_type != 0) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) -# if defined (ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP) - if (::pthread_mutexattr_setkind_np (attributes, lock_type) != 0) - result = -1; -# endif /* ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP */ -# elif defined (ACE_HAS_RECURSIVE_MUTEXES) +# if defined (ACE_HAS_RECURSIVE_MUTEXES) (void) ACE_ADAPT_RETVAL (::pthread_mutexattr_settype (attributes, lock_type), result); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ +# endif /* ACE_HAS_RECURSIVE_MUTEXES */ } if (result == 0) @@ -1869,13 +1849,7 @@ ACE_OS::mutex_init (ACE_mutex_t *m, */ ACE_OS::memset (m, 0, sizeof (*m)); # endif -# if defined (ACE_HAS_PTHREADS_DRAFT4) - if (::pthread_mutex_init (m, *attributes) == 0) -# elif defined (ACE_HAS_PTHREADS_DRAFT7) || defined (ACE_HAS_PTHREADS_STD) if (ACE_ADAPT_RETVAL (::pthread_mutex_init (m, attributes), result) == 0) -# else - if (::pthread_mutex_init (m, attributes) == 0) -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ result = 0; else result = -1; // ACE_ADAPT_RETVAL used it for intermediate status @@ -1884,11 +1858,7 @@ ACE_OS::mutex_init (ACE_mutex_t *m, // Only do the deletions if the <attributes> parameter wasn't // originally set. if (attributes == &l_attributes && attr_init) -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_mutexattr_delete (&l_attributes); -# else - ::pthread_mutexattr_destroy (&l_attributes); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ + ::pthread_mutexattr_destroy (&l_attributes); return result; # elif defined (ACE_HAS_STHREADS) @@ -1967,13 +1937,9 @@ ACE_OS::mutex_destroy (ACE_mutex_t *m) ACE_OS_TRACE ("ACE_OS::mutex_destroy"); #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if (defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) - ACE_OSCALL_RETURN (::pthread_mutex_destroy (m), int, -1); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_mutex_destroy (m), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6*/ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_destroy (m), result), int, -1); @@ -2052,13 +2018,9 @@ ACE_OS::mutex_lock (ACE_mutex_t *m) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) // Note, don't use "::" here since the following call is often a macro. -# if (defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) - ACE_OSCALL_RETURN (pthread_mutex_lock (m), int, -1); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_mutex_lock (m), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_lock (m), result), int, -1); @@ -2231,20 +2193,9 @@ ACE_OS::mutex_trylock (ACE_mutex_t *m) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) // Note, don't use "::" here since the following call is often a macro. -# if (defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) - int status = pthread_mutex_trylock (m); - if (status == 1) - status = 0; - else if (status == 0) { - status = -1; - errno = EBUSY; - } - return status; -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_mutex_trylock (m), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_trylock (m), result), int, -1); @@ -2344,13 +2295,9 @@ ACE_OS::mutex_unlock (ACE_mutex_t *m) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) // Note, don't use "::" here since the following call is often a macro. -# if (defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) - ACE_OSCALL_RETURN (pthread_mutex_unlock (m), int, -1); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_mutex_unlock (m), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_unlock (m), result), int, -1); @@ -3547,18 +3494,12 @@ ACE_OS::sched_params (const ACE_Sched_Params &sched_params, { ACE_thread_t thr_id = ACE_OS::thr_self (); -# if defined (ACE_HAS_PTHREADS_DRAFT4) - return (::pthread_setscheduler (thr_id, - sched_params.policy (), - sched_params.priority()) == -1 ? -1 : 0); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_setschedparam (thr_id, sched_params.policy (), ¶m), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ } # if defined (sun) // We need to be able to set LWP priorities on Suns, even without @@ -3821,7 +3762,8 @@ ACE_OS::thr_create (ACE_THR_FUNC func, long priority, void *stack, size_t stacksize, - ACE_Base_Thread_Adapter *thread_adapter) + ACE_Base_Thread_Adapter *thread_adapter, + const char** thr_name) { ACE_OS_TRACE ("ACE_OS::thr_create"); @@ -3837,7 +3779,6 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # define ACE_THREAD_ARGUMENT thread_args #endif /* ! defined (ACE_NO_THREAD_ADAPTER) */ - ACE_Base_Thread_Adapter *thread_args = 0; if (thread_adapter == 0) #if defined (ACE_HAS_WIN32_STRUCTURAL_EXCEPTIONS) @@ -3881,7 +3822,6 @@ ACE_OS::thr_create (ACE_THR_FUNC func, thr_handle = &tmp_handle; # if defined (ACE_HAS_PTHREADS) - int result; # if defined (ACE_VXWORKS) && (ACE_VXWORKS >= 0x600) && (ACE_VXWORKS <= 0x620) /* Tests show that VxWorks 6.x pthread lib does not only @@ -3892,12 +3832,8 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # else pthread_attr_t attr; # endif -# if defined (ACE_HAS_PTHREADS_DRAFT4) - if (ACE_ADAPT_RETVAL(::pthread_attr_create (&attr), result) != 0) -# else /* ACE_HAS_PTHREADS_DRAFT4 */ if (ACE_ADAPT_RETVAL(::pthread_attr_init(&attr), result) != 0) -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ - return -1; + return -1; if (stacksize != 0) { @@ -3909,28 +3845,20 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # endif /* PTHREAD_STACK_MIN */ # if !defined (ACE_LACKS_PTHREAD_ATTR_SETSTACKSIZE) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - if (::pthread_attr_setstacksize (&attr, size) != 0) +# if !defined (ACE_LACKS_PTHREAD_ATTR_SETSTACK) + int result; + if (stack != 0) + result = ACE_ADAPT_RETVAL (pthread_attr_setstack (&attr, stack, size), result); + else + result = ACE_ADAPT_RETVAL (pthread_attr_setstacksize (&attr, size), result); + if (result == -1) # else -# if !defined (ACE_LACKS_PTHREAD_ATTR_SETSTACK) - int result; - if (stack != 0) - result = ACE_ADAPT_RETVAL (pthread_attr_setstack (&attr, stack, size), result); - else - result = ACE_ADAPT_RETVAL (pthread_attr_setstacksize (&attr, size), result); - if (result == -1) -# else - if (ACE_ADAPT_RETVAL (pthread_attr_setstacksize (&attr, size), result) == -1) -# endif /* !ACE_LACKS_PTHREAD_ATTR_SETSTACK */ -# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ - { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_PTHREADS_DRAFT4 */ - ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ - return -1; - } + if (ACE_ADAPT_RETVAL (pthread_attr_setstacksize (&attr, size), result) == -1) +# endif /* !ACE_LACKS_PTHREAD_ATTR_SETSTACK */ + { + ::pthread_attr_destroy (&attr); + return -1; + } # else ACE_UNUSED_ARG (size); # endif /* !ACE_LACKS_PTHREAD_ATTR_SETSTACKSIZE */ @@ -3943,11 +3871,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, { if (ACE_ADAPT_RETVAL(::pthread_attr_setstackaddr (&attr, stack), result) != 0) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } @@ -3969,24 +3893,12 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (ACE_BIT_ENABLED (flags, THR_DETACHED)) dstate = PTHREAD_CREATE_DETACHED; -# if defined (ACE_HAS_PTHREADS_DRAFT4) - if (::pthread_attr_setdetach_np (&attr, dstate) != 0) -# else /* ACE_HAS_PTHREADS_DRAFT4 */ -# if defined (ACE_HAS_PTHREADS_DRAFT6) - if (::pthread_attr_setdetachstate (&attr, &dstate) != 0) -# else - if (ACE_ADAPT_RETVAL(::pthread_attr_setdetachstate (&attr, dstate), - result) != 0) -# endif /* ACE_HAS_PTHREADS_DRAFT6 */ -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ - { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_PTHREADS_DRAFT4 */ - ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ - return -1; - } + if (ACE_ADAPT_RETVAL(::pthread_attr_setdetachstate (&attr, dstate), + result) != 0) + { + ::pthread_attr_destroy (&attr); + return -1; + } } // Note: if ACE_LACKS_SETDETACH and THR_DETACHED is enabled, we @@ -4044,27 +3956,17 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # endif /* ACE_HAS_ONLY_SCHED_OTHER */ -# if defined (ACE_HAS_PTHREADS_DRAFT4) - result = ::pthread_attr_setsched (&attr, spolicy); -# elif defined (ACE_HAS_PTHREADS_DRAFT6) - result = ::pthread_attr_setschedpolicy (&attr, spolicy); -# else /* draft 7 or std */ (void) ACE_ADAPT_RETVAL(::pthread_attr_setschedpolicy (&attr, spolicy), result); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ if (result != 0) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } // *** Set Priority (use reasonable default priorities) -# if defined(ACE_HAS_PTHREADS_STD) +# if defined(ACE_HAS_PTHREADS) // If we wish to explicitly set a scheduling policy, we also // have to specify a priority. We choose a "middle" priority as // default. Maybe this is also necessary on other POSIX'ish @@ -4081,7 +3983,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, else // THR_SCHED_DEFAULT priority = ACE_THR_PRI_OTHER_DEF; } -# endif /* ACE_HAS_PTHREADS_STD */ +# endif /* ACE_HAS_PTHREADS */ if (priority != ACE_DEFAULT_THREAD_PRIORITY) { struct sched_param sparam; @@ -4090,10 +3992,10 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # if defined (ACE_HAS_IRIX62_THREADS) sparam.sched_priority = ACE_MIN (priority, (long) PTHREAD_MAX_PRIORITY); -# elif defined (PTHREAD_MAX_PRIORITY) && !defined(ACE_HAS_PTHREADS_STD) +# elif defined (PTHREAD_MAX_PRIORITY) && !defined(ACE_HAS_PTHREADS) /* For MIT pthreads... */ sparam.prio = ACE_MIN (priority, PTHREAD_MAX_PRIORITY); -# elif defined(ACE_HAS_PTHREADS_STD) && !defined (ACE_HAS_STHREADS) +# elif defined(ACE_HAS_PTHREADS) && !defined (ACE_HAS_STHREADS) // The following code forces priority into range. if (ACE_BIT_ENABLED (flags, THR_SCHED_FIFO)) sparam.sched_priority = @@ -4122,20 +4024,11 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (priority > 0) # endif /* sun && ACE_HAS_ONLY_SCHED_OTHER */ { -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - result = ::pthread_attr_setprio (&attr, - sparam.sched_priority); -# else /* this is draft 7 or std */ (void) ACE_ADAPT_RETVAL(::pthread_attr_setschedparam (&attr, &sparam), result); -# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ if (result != 0) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } @@ -4146,20 +4039,12 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (ACE_BIT_ENABLED (flags, THR_INHERIT_SCHED) || ACE_BIT_ENABLED (flags, THR_EXPLICIT_SCHED)) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - int sched = PTHREAD_DEFAULT_SCHED; -# else /* ACE_HAS_PTHREADS_DRAFT4 */ int sched = PTHREAD_EXPLICIT_SCHED; -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ if (ACE_BIT_ENABLED (flags, THR_INHERIT_SCHED)) sched = PTHREAD_INHERIT_SCHED; if (ACE_ADAPT_RETVAL(::pthread_attr_setinheritsched (&attr, sched), result) != 0) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } @@ -4167,6 +4052,20 @@ ACE_OS::thr_create (ACE_THR_FUNC func, ACE_UNUSED_ARG (priority); # endif /* ACE_LACKS_SETSCHED */ + // *** Set pthread name +# if defined (ACE_HAS_PTHREAD_ATTR_SETNAME) + if (thr_name && *thr_name) + { + if (ACE_ADAPT_RETVAL(::pthread_attr_setname (&attr, const_cast<char*>(*thr_name)), result) != 0) + { + ::pthread_attr_destroy (&attr); + return -1; + } + } +#else + ACE_UNUSED_ARG (thr_name); +# endif + // *** Set Scope # if !defined (ACE_LACKS_THREAD_PROCESS_SCOPING) if (ACE_BIT_ENABLED (flags, THR_SCOPE_SYSTEM) @@ -4185,11 +4084,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (ACE_ADAPT_RETVAL(::pthread_attr_setscope (&attr, scope), result) != 0) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } @@ -4201,11 +4096,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (ACE_ADAPT_RETVAL(::pthread_attr_setcreatesuspend_np(&attr), result) != 0) { -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } @@ -4241,29 +4132,6 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # endif /* ! ACE_LACKS_THR_CONCURRENCY_FUNCS */ } -# if defined (ACE_HAS_PTHREADS_DRAFT4) - ACE_OSCALL (::pthread_create (thr_id, attr, - thread_args->entry_point (), - thread_args), - int, -1, result); - -# if defined (ACE_LACKS_SETDETACH) - if (ACE_BIT_ENABLED (flags, THR_DETACHED)) - { - ::pthread_detach (thr_id); - } -# endif /* ACE_LACKS_SETDETACH */ - - ::pthread_attr_delete (&attr); - -# elif defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_OSCALL (::pthread_create (thr_id, &attr, - thread_args->entry_point (), - thread_args), - int, -1, result); - ::pthread_attr_destroy (&attr); - -# else /* this is draft 7 or std */ ACE_OSCALL (ACE_ADAPT_RETVAL (::pthread_create (thr_id, &attr, thread_args->entry_point (), @@ -4271,7 +4139,6 @@ ACE_OS::thr_create (ACE_THR_FUNC func, result), int, -1, result); ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ // This is a SunOS or POSIX implementation of pthreads, where we // assume that ACE_thread_t and ACE_hthread_t are the same. If this @@ -4396,6 +4263,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, auto_thread_args.release (); return result; # elif defined (ACE_HAS_WTHREADS) + ACE_UNUSED_ARG (thr_name); ACE_UNUSED_ARG (stack); # if defined (ACE_HAS_MFC) && (ACE_HAS_MFC != 0) if (ACE_BIT_ENABLED (flags, THR_USE_AFX)) @@ -4491,9 +4359,6 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (flags == 0) flags = VX_FP_TASK; if (stacksize == 0) stacksize = 20000; - const bool thr_h_provided = - thr_handle && *thr_handle && (*thr_handle)[0] != ACE_THR_ID_ALLOCATED; - ACE_thread_t tid; # if 0 /* Don't support setting of stack, because it doesn't seem to work. */ if (stack == 0) @@ -4504,7 +4369,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, // The call below to ::taskSpawn () causes VxWorks to assign a // unique task name of the form: "t" + an integer, because the // first argument is 0. - tid = ::taskSpawn (thr_h_provided ? *thr_handle : 0, + tid = ::taskSpawn (thr_name && *thr_name ? const_cast <char*> (*thr_name) : 0, priority, (int) flags, (int) stacksize, @@ -4524,7 +4389,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, // The TID is defined to be the address of the TCB. int status = ::taskInit (tcb, - thr_id_provided ? *thr_id : 0, + thr_name && *thr_name ? const_cast <char*>(*thr_name) : 0, priority, (int) flags, (char *) stack + sizeof (WIND_TCB), @@ -4539,7 +4404,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, status = ::taskActivate ((ACE_hthread_t) tcb); } - tid = status == OK ? (ACE_thread_t) tcb : ERROR; + tid = status == OK ? (ACE_thread_t) tcb : ERROR; } # endif /* 0 */ @@ -4547,29 +4412,15 @@ ACE_OS::thr_create (ACE_THR_FUNC func, return -1; else { - if (!thr_h_provided && thr_handle) - { - if (*thr_handle && (*thr_handle)[0] == ACE_THR_ID_ALLOCATED) - // *thr_id was allocated by the Thread_Manager. ::taskTcb - // (int tid) returns the address of the WIND_TCB (task - // control block). According to the ::taskSpawn() - // documentation, the name of the new task is stored at - // pStackBase, but is that of the current task? If so, it - // might be a bit quicker than this extraction of the tcb - // . . . - ACE_OS::strsncpy (*thr_handle + 1, ::taskName (tid), 10); - else - // *thr_id was not allocated by the Thread_Manager. - // Pass back the task name in the location pointed to - // by thr_id. - *thr_handle = ::taskName (tid); - } - // else if the thr_id was provided, there's no need to overwrite - // it with the same value (string). If thr_id is 0, then we can't - // pass the task name back. if (thr_id) *thr_id = tid; + if (thr_handle) + *thr_handle = tid; + + if (thr_name && !(*thr_name)) + *thr_name = ::taskName (tid); + auto_thread_args.release (); return 0; } @@ -4584,6 +4435,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, ACE_UNUSED_ARG (priority); ACE_UNUSED_ARG (stack); ACE_UNUSED_ARG (stacksize); + ACE_UNUSED_ARG (thr_name); ACE_NOTSUP_RETURN (-1); #endif /* ACE_HAS_THREADS */ } @@ -4674,17 +4526,7 @@ ACE_OS::thr_join (ACE_hthread_t thr_handle, } int retval = ESRCH; - ACE_hthread_t current; - ACE_OS::thr_self (current); - ACE_thread_t tid; - // Skip over the ID-allocated marker, if present. - thr_handle += thr_handle[0] == ACE_THR_ID_ALLOCATED ? 1 : 0; - ACE_OSCALL (::taskNameToId (thr_handle), int, ERROR, tid); - - // If we can't convert task name to id we assume the thread has already - // exited - if (tid == ERROR) - return 0; + ACE_thread_t current = ACE_OS::thr_self (); // Make sure we are not joining ourself if (ACE_OS::thr_cmp (thr_handle, current)) @@ -4698,7 +4540,7 @@ ACE_OS::thr_join (ACE_hthread_t thr_handle, retval = 0; // Verify that the task id still exists - while (taskIdVerify (tid) == OK) + while (taskIdVerify (thr_handle) == OK) { // Wait a bit to see if the task is still active. ACE_OS::sleep (ACE_THR_JOIN_DELAY); @@ -4723,7 +4565,7 @@ ACE_OS::thr_join (ACE_thread_t waiter_id, ACE_THR_FUNC_RETURN *status) { thr_id = 0; - return ACE_OS::thr_join ( ::taskName(waiter_id), status); + return ACE_OS::thr_join (waiter_id, status); } #endif /* ACE_HAS_VXTHREADS */ @@ -4860,21 +4702,10 @@ ACE_OS::thr_keycreate_native (ACE_OS_thread_key_t *key, // ACE_OS_TRACE ("ACE_OS::thr_keycreate_native"); # if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) - -# if defined (ACE_HAS_PTHREADS_DRAFT4) -# if defined (ACE_HAS_STDARG_THR_DEST) - ACE_OSCALL_RETURN (::pthread_keycreate (key, (void (*)(...)) dest), int, -1); -# else /* ! ACE_HAS_STDARG_THR_DEST */ - ACE_OSCALL_RETURN (::pthread_keycreate (key, dest), int, -1); -# endif /* ! ACE_HAS_STDARG_THR_DEST */ -# elif defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_OSCALL_RETURN (::pthread_key_create (key, dest), int, -1); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_key_create (key, dest), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_keycreate (key, dest), @@ -4964,10 +4795,16 @@ ACE_OS::thr_keyfree_native (ACE_OS_thread_key_t key) { ACE_OS_TRACE ("ACE_OS::thr_keyfree_native"); # if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_UNUSED_ARG (key); - ACE_NOTSUP_RETURN (-1); -# elif defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_BROKEN_THREAD_KEYFREE) || defined (ACE_HAS_THR_KEYDELETE) + // For some systems, e.g. LynxOS, we need to ensure that + // any registered thread destructor action for this slot + // is now disabled. Otherwise in the event of a dynamic library + // unload of libACE, by a program not linked with libACE, + // ACE_TSS_cleanup will be invoked again at the thread exit + // after libACE has been actually been unmapped from memory. + (void) ACE_OS::thr_setspecific (key, 0); +# endif /* ACE_HAS_BROKEN_THREAD_KEYFREE */ +# if defined (ACE_HAS_PTHREADS) return ::pthread_key_delete (key); # elif defined (ACE_HAS_THR_KEYDELETE) return ::thr_keydelete (key); @@ -5069,15 +4906,10 @@ ACE_OS::thr_setspecific_native (ACE_OS_thread_key_t key, void *data) // ACE_OS_TRACE ("ACE_OS::thr_setspecific_native"); # if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_OSCALL_RETURN (::pthread_setspecific (key, data), int, -1); -# else - int result; - ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_setspecific (key, data), - result), - int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ - + int result; + ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_setspecific (key, data), + result), + int, -1); # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_setspecific (key, data), result), int, -1); @@ -5262,7 +5094,7 @@ spa (FUNCPTR entry, ...) // The hard-coded options are what ::sp () uses, except for the // larger stack size (instead of ::sp ()'s 20000). - const int ret = ::taskSpawn (argv[0], // task name + int const ret = ::taskSpawn (argv[0], // task name 100, // task priority VX_FP_TASK, // task options ACE_NEEDS_HUGE_THREAD_STACKSIZE, // stack size @@ -5351,8 +5183,8 @@ add_to_argv (int& argc, char** argv, int max_args, char* string) int spae (FUNCPTR entry, ...) { - static const int WINDSH_ARGS = 10; - static const int ACE_MAX_ARGS = 128; + static int const WINDSH_ARGS = 10; + static int const ACE_MAX_ARGS = 128; static char* argv[ACE_MAX_ARGS] = { "ace_main", 0 }; va_list pvar; int argc = 1; @@ -5377,7 +5209,7 @@ spae (FUNCPTR entry, ...) // The hard-coded options are what ::sp () uses, except for the // larger stack size (instead of ::sp ()'s 20000). - const int ret = ::taskSpawn (argv[0], // task name + int const ret = ::taskSpawn (argv[0], // task name 100, // task priority VX_FP_TASK, // task options ACE_NEEDS_HUGE_THREAD_STACKSIZE, // stack size @@ -5405,8 +5237,8 @@ spae (FUNCPTR entry, ...) int spaef (FUNCPTR entry, ...) { - static const int WINDSH_ARGS = 10; - static const int ACE_MAX_ARGS = 128; + static int const WINDSH_ARGS = 10; + static int const ACE_MAX_ARGS = 128; static char* argv[ACE_MAX_ARGS] = { "ace_main", 0 }; va_list pvar; int argc = 1; @@ -5457,7 +5289,7 @@ _vx_call_entry(FUNCPTR entry, int argc, char* argv[]) int vx_execae (FUNCPTR entry, char* arg, int prio, int opt, int stacksz, ...) { - static const int ACE_MAX_ARGS = 128; + static int const ACE_MAX_ARGS = 128; static char* argv[ACE_MAX_ARGS] = { "ace_main", 0 }; int argc = 1; @@ -5473,7 +5305,7 @@ vx_execae (FUNCPTR entry, char* arg, int prio, int opt, int stacksz, ...) // The hard-coded options are what ::sp () uses, except for the // larger stack size (instead of ::sp ()'s 20000). - const int ret = ::taskSpawn (argv[0], // task name + int const ret = ::taskSpawn (argv[0], // task name prio==0 ? 100 : prio, // task priority opt==0 ? VX_FP_TASK : opt, // task options stacksz==0 ? ACE_NEEDS_HUGE_THREAD_STACKSIZE : stacksz, // stack size @@ -5483,6 +5315,9 @@ vx_execae (FUNCPTR entry, char* arg, int prio, int opt, int stacksz, ...) (int) argv, // second argument to main () 0, 0, 0, 0, 0, 0, 0); + if (ret == ERROR) + return 255; + while( ret > 0 && ::taskIdVerify (ret) != ERROR ) ::taskDelay (3 * ::sysClkRateGet ()); diff --git a/ACE/ace/OS_NS_Thread.h b/ACE/ace/OS_NS_Thread.h index 62853a0eedf..69ccf83bd00 100644 --- a/ACE/ace/OS_NS_Thread.h +++ b/ACE/ace/OS_NS_Thread.h @@ -225,7 +225,7 @@ typedef struct } ACE_sema_t; # endif /* !ACE_HAS_POSIX_SEM */ typedef int ACE_thread_t; -typedef char * ACE_hthread_t; +typedef int ACE_hthread_t; // Key type: the ACE TSS emulation requires the key type be unsigned, // for efficiency. (Current POSIX and Solaris TSS implementations also // use u_int, so the ACE TSS emulation is compatible with them.) @@ -240,10 +240,6 @@ typedef u_int ACE_OS_thread_key_t; ACE_END_VERSIONED_NAMESPACE_DECL - // Marker for ACE_Thread_Manager to indicate that it allocated - // an ACE_thread_t. It is placed at the beginning of the ID. -# define ACE_THR_ID_ALLOCATED '\022' - # elif defined (ACE_HAS_WTHREADS) ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -867,7 +863,7 @@ private: static ACE_OS_thread_key_t native_tss_key_; // Used to indicate if native tss key has been allocated - static int key_created_; + static bool key_created_; # endif /* ACE_HAS_THREAD_SPECIFIC_STORAGE */ }; # endif /* ACE_HAS_TSS_EMULATION */ @@ -1512,9 +1508,9 @@ namespace ACE_OS { /* * Creates a new thread having @a flags attributes and running @a func - * with <args> (if <thread_adapter> is non-0 then @a func and <args> - * are ignored and are obtained from <thread_adapter>). <thr_id> - * and <t_handle> are set to the thread's ID and handle (?), + * with @a args (if @a thread_adapter is non-0 then @a func and @a args + * are ignored and are obtained from @a thread_adapter). @a thr_id + * and @a t_handle are set to the thread's ID and handle (?), * respectively. The thread runs at @a priority priority (see * below). * @@ -1529,16 +1525,20 @@ namespace ACE_OS { * * By default, or if @a priority is set to * ACE_DEFAULT_THREAD_PRIORITY, an "appropriate" priority value for - * the given scheduling policy (specified in <flags}>, e.g., - * <THR_SCHED_DEFAULT>) is used. This value is calculated + * the given scheduling policy (specified in @a flags, e.g., + * @c THR_SCHED_DEFAULT) is used. This value is calculated * dynamically, and is the median value between the minimum and * maximum priority values for the given policy. If an explicit * value is given, it is used. Note that actual priority values are * EXTREMEMLY implementation-dependent, and are probably best * avoided. * - * Note that <thread_adapter> is always deleted by <thr_create>, + * Note that @a thread_adapter is always deleted by @c thr_create, * therefore it must be allocated with global operator new. + * + * At the moment for @a thr_name a valid string is passed then this + * will be used on VxWorks to set the task name. If we just pass a pointer + * the name of the task is returned */ extern ACE_Export int thr_create (ACE_THR_FUNC func, @@ -1549,7 +1549,8 @@ namespace ACE_OS { long priority = ACE_DEFAULT_THREAD_PRIORITY, void *stack = 0, size_t stacksize = ACE_DEFAULT_THREAD_STACKSIZE, - ACE_Base_Thread_Adapter *thread_adapter = 0); + ACE_Base_Thread_Adapter *thread_adapter = 0, + const char** thr_name = 0); ACE_NAMESPACE_INLINE_FUNCTION int thr_equal (ACE_thread_t t1, @@ -1574,7 +1575,7 @@ namespace ACE_OS { ACE_NAMESPACE_INLINE_FUNCTION /// for internal use only. Applications should call thr_getspecific int thr_getspecific_native (ACE_OS_thread_key_t key, - void **data); + void **data); # endif /* ACE_HAS_THREAD_SPECIFIC_STORAGE */ ACE_NAMESPACE_INLINE_FUNCTION @@ -1673,7 +1674,7 @@ namespace ACE_OS { # endif /* ACE_HAS_THR_C_DEST */ # if defined (ACE_HAS_THREAD_SPECIFIC_STORAGE) - /// @internal applications should call thr_keyfree instead + /// @internal Applications should call thr_keyfree instead extern ACE_Export int thr_keyfree_native (ACE_OS_thread_key_t key); # endif /* ACE_HAS_THREAD_SPECIFIC_STORAGE */ @@ -1695,6 +1696,9 @@ namespace ACE_OS { void thr_self (ACE_hthread_t &); ACE_NAMESPACE_INLINE_FUNCTION + const char* thr_name (void); + + ACE_NAMESPACE_INLINE_FUNCTION int thr_setcancelstate (int new_state, int *old_state); diff --git a/ACE/ace/OS_NS_Thread.inl b/ACE/ace/OS_NS_Thread.inl index 4577d300926..d4bba743c56 100644 --- a/ACE/ace/OS_NS_Thread.inl +++ b/ACE/ace/OS_NS_Thread.inl @@ -45,7 +45,8 @@ void **& ACE_TSS_Emulation::tss_base () { # if defined (ACE_HAS_VXTHREADS) - return (void **&) taskIdCurrent->ACE_VXWORKS_SPARE; + int &spare = taskIdCurrent->ACE_VXWORKS_SPARE; + return reinterpret_cast <void **&> (spare); # else // Uh oh. ACE_NOTSUP_RETURN (0); @@ -132,11 +133,7 @@ ACE_OS::condattr_destroy (ACE_condattr_t &attributes) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) - pthread_condattr_delete (&attributes); -# else pthread_condattr_destroy (&attributes); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_STHREADS) attributes.type = 0; @@ -166,23 +163,11 @@ ACE_OS::condattr_init (ACE_condattr_t &attributes, ACE_OS::memset (&attributes, 0, sizeof (attributes)); # endif if ( -# if defined (ACE_HAS_PTHREADS_DRAFT4) - pthread_condattr_create (&attributes) == 0 -# elif defined (ACE_HAS_PTHREADS_STD) || defined (ACE_HAS_PTHREADS_DRAFT7) ACE_ADAPT_RETVAL (pthread_condattr_init (&attributes), result) == 0 # if defined (_POSIX_THREAD_PROCESS_SHARED) && !defined (ACE_LACKS_CONDATTR_PSHARED) && ACE_ADAPT_RETVAL (pthread_condattr_setpshared (&attributes, type), result) == 0 # endif /* _POSIX_THREAD_PROCESS_SHARED && ! ACE_LACKS_CONDATTR_PSHARED */ -# else /* this is draft 6 */ - pthread_condattr_init (&attributes) == 0 -# if !defined (ACE_LACKS_CONDATTR_PSHARED) - && pthread_condattr_setpshared (&attributes, type) == 0 -# endif /* ACE_LACKS_CONDATTR_PSHARED */ -# if defined (ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP) - && pthread_condattr_setkind_np (&attributes, type) == 0 -# endif /* ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP */ -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ ) result = 0; else @@ -214,14 +199,10 @@ ACE_OS::cond_broadcast (ACE_cond_t *cv) ACE_OS_TRACE ("ACE_OS::cond_broadcast"); # if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_OSCALL_RETURN (pthread_cond_broadcast (cv), int, -1); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_cond_broadcast (cv), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_broadcast (cv), @@ -240,12 +221,8 @@ ACE_OS::cond_destroy (ACE_cond_t *cv) ACE_OS_TRACE ("ACE_OS::cond_destroy"); # if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_OSCALL_RETURN (pthread_cond_destroy (cv), int, -1); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_cond_destroy (cv), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_destroy (cv), result), int, -1); @@ -279,15 +256,7 @@ ACE_OS::cond_init (ACE_cond_t *cv, ACE_OS::memset (cv, 0, sizeof (*cv)); # endif - if ( -# if defined (ACE_HAS_PTHREADS_DRAFT4) - pthread_cond_init (cv, attributes) == 0 -# elif defined (ACE_HAS_PTHREADS_STD) || defined (ACE_HAS_PTHREADS_DRAFT7) - ACE_ADAPT_RETVAL (pthread_cond_init (cv, &attributes), result) == 0 -# else /* this is draft 6 */ - pthread_cond_init (cv, &attributes) == 0 -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ - ) + if (ACE_ADAPT_RETVAL (pthread_cond_init (cv, &attributes), result) == 0) result = 0; else result = -1; // ACE_ADAPT_RETVAL used it for intermediate status @@ -335,13 +304,9 @@ ACE_OS::cond_signal (ACE_cond_t *cv) ACE_OS_TRACE ("ACE_OS::cond_signal"); # if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_OSCALL_RETURN (pthread_cond_signal (cv), int, -1); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_cond_signal (cv), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_signal (cv), result), int, -1); @@ -359,13 +324,9 @@ ACE_OS::cond_wait (ACE_cond_t *cv, ACE_OS_TRACE ("ACE_OS::cond_wait"); # if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_OSCALL_RETURN (pthread_cond_wait (cv, external_mutex), int, -1); -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_cond_wait (cv, external_mutex), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_wait (cv, external_mutex), result), @@ -393,25 +354,12 @@ ACE_OS::cond_timedwait (ACE_cond_t *cv, # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - if (timeout == 0) - ACE_OSCALL (pthread_cond_wait (cv, external_mutex), - int, -1, result); - else - { - ACE_OSCALL (pthread_cond_timedwait (cv, external_mutex, - (ACE_TIMESPEC_PTR) &ts), - int, -1, result); - } - -# else ACE_OSCALL (ACE_ADAPT_RETVAL (timeout == 0 ? pthread_cond_wait (cv, external_mutex) : pthread_cond_timedwait (cv, external_mutex, (ACE_TIMESPEC_PTR) &ts), result), int, -1, result); -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6*/ // We need to adjust this to make the POSIX and Solaris return // values consistent. EAGAIN is from Pthreads DRAFT4 (HP-UX 10.20 and down) if (result == -1 && @@ -743,7 +691,7 @@ ACE_OS::recursive_mutex_lock (ACE_recursive_thread_mutex_t *m) #if defined (ACE_HAS_RECURSIVE_MUTEXES) return ACE_OS::thread_mutex_lock (m); #else - ACE_thread_t t_id = ACE_OS::thr_self (); + ACE_thread_t const t_id = ACE_OS::thr_self (); int result = 0; // Acquire the guard. @@ -2561,10 +2509,7 @@ ACE_OS::sigwait (sigset_t *sset, int *sig) errno = ::_Psigwait (sset, sig); return errno == 0 ? *sig : -1; # else /* ! __Lynx __ && ! (DIGITAL_UNIX && __DECCXX_VER) */ -# if (defined (ACE_HAS_PTHREADS_DRAFT4) || (defined (ACE_HAS_PTHREADS_DRAFT6))) || (defined (_UNICOS) && _UNICOS == 9) - *sig = ::sigwait (sset); - return *sig; -# elif defined (CYGWIN32) +# if defined (CYGWIN32) // Cygwin has sigwait definition, but it is not implemented ACE_UNUSED_ARG (sset); ACE_NOTSUP_RETURN (-1); @@ -2574,7 +2519,7 @@ ACE_OS::sigwait (sigset_t *sset, int *sig) # else /* this is draft 7 or std */ errno = ::sigwait (sset, sig); return errno == 0 ? *sig : -1; -# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ +# endif /* CYGWIN32 */ # endif /* ! __Lynx__ && ! (DIGITAL_UNIX && __DECCXX_VER) */ # elif defined (ACE_HAS_WTHREADS) ACE_UNUSED_ARG (sset); @@ -2616,26 +2561,10 @@ ACE_OS::thr_cancel (ACE_thread_t thr_id) ACE_OS_TRACE ("ACE_OS::thr_cancel"); #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_PTHREAD_CANCEL) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) -# ifdef pthread_cancel - // If it's a macro we can't say "pthread_cancel"... - ACE_OSCALL_RETURN (pthread_cancel (thr_id), int, -1); -# else - ACE_OSCALL_RETURN (pthread_cancel (thr_id), int, -1); -# endif /* pthread_cancel */ -# else int result; -# ifdef pthread_cancel - // If it's a macro we can't say "pthread_cancel"... - ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_cancel (thr_id), - result), - int, -1); -# else - ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_cancel (thr_id), - result), - int, -1); -# endif /* pthread_cancel */ -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ + ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_cancel (thr_id), + result), + int, -1); # elif defined (ACE_HAS_VXTHREADS) ACE_OSCALL_RETURN (::taskDelete (thr_id), int, -1); # else /* Could be ACE_HAS_PTHREADS && ACE_LACKS_PTHREAD_CANCEL */ @@ -2658,20 +2587,6 @@ ACE_OS::thr_cmp (ACE_hthread_t t1, ACE_hthread_t t2) # else return pthread_equal (t1, t2); # endif /* pthread_equal */ -#elif defined (ACE_HAS_VXTHREADS) - // Guard against the fact that ACE_thread_t is a char* when using VxWorks. - // Maybe the user passes in an unitialized ACE_thread_t, which is then 0, - // which causes strcmp to cause an access violation. - if (!t1 && !t2) - return 1; - else if (!t1 || !t2) - return 0; - else - { - t1 += t1[0] == ACE_THR_ID_ALLOCATED ? 1 : 0; - t2 += t2[0] == ACE_THR_ID_ALLOCATED ? 1 : 0; - return !ACE_OS::strcmp (t1, t2); - } #else /* For STHREADS, WTHREADS, and VXWORKS ... */ // Hum, Do we need to treat WTHREAD differently? // levine 13 oct 98 % Probably, ACE_hthread_t is a HANDLE. @@ -2714,15 +2629,7 @@ ACE_OS::thr_continue (ACE_hthread_t target_thread) else return 0; # elif defined (ACE_HAS_VXTHREADS) - // Skip over the ID-allocated marker, if present. - target_thread += target_thread[0] == ACE_THR_ID_ALLOCATED ? 1 : 0; - ACE_thread_t tid; - ACE_OSCALL (::taskNameToId (target_thread), int, ERROR, tid); - - if (tid == ERROR) - return -1; - else - ACE_OSCALL_RETURN (::taskResume (tid), int, -1); + ACE_OSCALL_RETURN (::taskResume (target_thread), int, -1); # endif /* ACE_HAS_STHREADS */ #else ACE_UNUSED_ARG (target_thread); @@ -2756,26 +2663,6 @@ ACE_OS::thr_getprio (ACE_hthread_t ht_id, int &priority, int &policy) # if (defined (ACE_HAS_PTHREADS) && \ (!defined (ACE_LACKS_SETSCHED) || defined (ACE_HAS_PTHREAD_SCHEDPARAM))) -# if defined (ACE_HAS_PTHREADS_DRAFT4) - int const result = pthread_getprio (ht_id); - if (result != -1) - { - priority = result; - return 0; - } - else - return -1; -# elif defined (ACE_HAS_PTHREADS_DRAFT6) - - pthread_attr_t attr; - if (pthread_getschedattr (ht_id, &attr) == 0) - { - priority = pthread_attr_getprio (&attr); - return 0; - } - return -1; -# else - struct sched_param param; int result; @@ -2784,7 +2671,6 @@ ACE_OS::thr_getprio (ACE_hthread_t ht_id, int &priority, int &policy) -1, result); priority = param.sched_priority; return result; -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_getprio (ht_id, &priority), result), int, -1); @@ -2812,15 +2698,7 @@ ACE_OS::thr_getprio (ACE_hthread_t ht_id, int &priority, int &policy) return 0; # elif defined (ACE_HAS_VXTHREADS) - // Skip over the ID-allocated marker, if present. - ht_id += ht_id[0] == ACE_THR_ID_ALLOCATED ? 1 : 0; - ACE_thread_t tid; - ACE_OSCALL (::taskNameToId (ht_id), int, ERROR, tid); - - if (tid == ERROR) - return -1; - else - ACE_OSCALL_RETURN (::taskPriorityGet (tid, &priority), int, -1); + ACE_OSCALL_RETURN (::taskPriorityGet (ht_id, &priority), int, -1); # else ACE_UNUSED_ARG (ht_id); ACE_UNUSED_ARG (priority); @@ -2847,12 +2725,8 @@ ACE_OS::thr_getspecific_native (ACE_OS_thread_key_t key, void **data) { // ACE_OS_TRACE ("ACE_OS::thr_getspecific_native"); # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - return pthread_getspecific (key, data); -# else /* this is ACE_HAS_PTHREADS_DRAFT7 or STD */ *data = pthread_getspecific (key); return 0; -# endif /* ACE_HAS_PTHREADS */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_getspecific (key, data), result), int, -1); @@ -2916,29 +2790,9 @@ ACE_OS::thr_join (ACE_hthread_t thr_handle, ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_join (thr_handle, 0, status), result), int, -1); # elif defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) - int ace_result; -# if defined (ACE_LACKS_NULL_PTHREAD_STATUS) - void *temp; - ACE_OSCALL (pthread_join (thr_handle, - status == 0 ? &temp : status), - int, -1, ace_result); -# else - ACE_OSCALL (pthread_join (thr_handle, status), int, -1, ace_result); -# endif /* ACE_LACKS_NULL_PTHREAD_STATUS */ - // Joinable threads need to be detached after joining on Pthreads - // draft 4 (at least) to reclaim thread storage. -# if defined (ACE_HAS_PTHREADS_DRAFT4) - pthread_detach (&thr_handle); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ - - return ace_result; - -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_join (thr_handle, status), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ # elif defined (ACE_HAS_WTHREADS) ACE_THR_FUNC_RETURN local_status = 0; @@ -2979,19 +2833,9 @@ ACE_OS::thr_join (ACE_thread_t waiter_id, int, -1); # elif defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (thr_id); -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) -# if defined (ACE_LACKS_NULL_PTHREAD_STATUS) - void *temp; - ACE_OSCALL_RETURN (pthread_join (waiter_id, - status == 0 ? &temp : status), int, -1); -# else - ACE_OSCALL_RETURN (pthread_join (waiter_id, status), int, -1); -# endif -# else int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_join (waiter_id, status), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ # elif defined (ACE_HAS_WTHREADS) ACE_UNUSED_ARG (waiter_id); ACE_UNUSED_ARG (thr_id); @@ -3016,7 +2860,7 @@ ACE_OS::thr_kill (ACE_thread_t thr_id, int signum) ACE_OS_TRACE ("ACE_OS::thr_kill"); #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_LACKS_PTHREAD_KILL) +# if defined (ACE_LACKS_PTHREAD_KILL) ACE_UNUSED_ARG (signum); ACE_UNUSED_ARG (thr_id); ACE_NOTSUP_RETURN (-1); @@ -3025,7 +2869,7 @@ ACE_OS::thr_kill (ACE_thread_t thr_id, int signum) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_kill (thr_id, signum), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ +# endif /* ACE_LACKS_PTHREAD_KILL */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_kill (thr_id, signum), @@ -3107,6 +2951,20 @@ ACE_OS::thr_self (void) #endif /* ACE_HAS_THREADS */ } +ACE_INLINE const char* +ACE_OS::thr_name (void) +{ +#if defined (ACE_HAS_THREADS) +#if defined (ACE_HAS_VXTHREADS) + return ::taskName (ACE_OS::thr_self ()); +#else + ACE_NOTSUP_RETURN (0); +#endif +#else + ACE_NOTSUP_RETURN (0); +#endif +} + ACE_INLINE void ACE_OS::thr_self (ACE_hthread_t &self) { @@ -3122,7 +2980,7 @@ ACE_OS::thr_self (ACE_hthread_t &self) # elif defined (ACE_HAS_WTHREADS) self = ::GetCurrentThread (); # elif defined (ACE_HAS_VXTHREADS) - self = ::taskName(::taskIdSelf ()); + self = ::taskIdSelf (); # endif /* ACE_HAS_STHREADS */ #else self = 1; // Might as well make it the main thread ;-) @@ -3135,23 +2993,11 @@ ACE_OS::thr_setcancelstate (int new_state, int *old_state) ACE_OS_TRACE ("ACE_OS::thr_setcancelstate"); #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_PTHREAD_CANCEL) -# if defined (ACE_HAS_PTHREADS_DRAFT4) - int old; - old = pthread_setcancel (new_state); - if (old == -1) - return -1; - *old_state = old; - return 0; -# elif defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_UNUSED_ARG (old_state); - ACE_OSCALL_RETURN (pthread_setintr (new_state), int, -1); -# else /* this is draft 7 or std */ int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_setcancelstate (new_state, - old_state), + old_state), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_STHREADS) ACE_UNUSED_ARG (new_state); ACE_UNUSED_ARG (old_state); @@ -3178,23 +3024,11 @@ ACE_OS::thr_setcanceltype (int new_type, int *old_type) ACE_OS_TRACE ("ACE_OS::thr_setcanceltype"); #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_PTHREAD_CANCEL) -# if defined (ACE_HAS_PTHREADS_DRAFT4) - int old; - old = pthread_setasynccancel (new_type); - if (old == -1) - return -1; - *old_type = old; - return 0; -# elif defined (ACE_HAS_PTHREADS_DRAFT6) - ACE_UNUSED_ARG (old_type); - ACE_OSCALL_RETURN (pthread_setintrtype (new_type), int, -1); -# else /* this is draft 7 or std */ int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_setcanceltype (new_type, - old_type), + old_type), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # else /* Could be ACE_HAS_PTHREADS && ACE_LACKS_PTHREAD_CANCEL */ ACE_UNUSED_ARG (new_type); ACE_UNUSED_ARG (old_type); @@ -3241,18 +3075,6 @@ ACE_OS::thr_setprio (ACE_hthread_t ht_id, int priority, int policy) # if (defined (ACE_HAS_PTHREADS) && \ (!defined (ACE_LACKS_SETSCHED) || defined (ACE_HAS_PTHREAD_SCHEDPARAM))) -# if defined (ACE_HAS_PTHREADS_DRAFT4) - int result; - result = pthread_setprio (ht_id, priority); - return (result == -1 ? -1 : 0); -# elif defined (ACE_HAS_PTHREADS_DRAFT6) - pthread_attr_t attr; - if (pthread_getschedattr (ht_id, &attr) == -1) - return -1; - if (pthread_attr_setprio (attr, priority) == -1) - return -1; - return pthread_setschedattr (ht_id, attr); -# else int result; struct sched_param param; ACE_OS::memset ((void *) ¶m, 0, sizeof param); @@ -3272,11 +3094,10 @@ ACE_OS::thr_setprio (ACE_hthread_t ht_id, int priority, int policy) param.sched_priority = priority; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_setschedparam (ht_id, - policy, - ¶m), + policy, + ¶m), result), int, -1); -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_STHREADS) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_setprio (ht_id, priority), @@ -3287,15 +3108,7 @@ ACE_OS::thr_setprio (ACE_hthread_t ht_id, int priority, int policy) ace_result_), int, -1); # elif defined (ACE_HAS_VXTHREADS) - // Skip over the ID-allocated marker, if present. - ht_id += ht_id[0] == ACE_THR_ID_ALLOCATED ? 1 : 0; - ACE_thread_t tid; - ACE_OSCALL (::taskNameToId (ht_id), int, ERROR, tid); - - if (tid == ERROR) - return -1; - else - ACE_OSCALL_RETURN (::taskPrioritySet (tid, priority), int, -1); + ACE_OSCALL_RETURN (::taskPrioritySet (ht_id, priority), int, -1); # else // For example, platforms that support Pthreads but LACK_SETSCHED. ACE_UNUSED_ARG (ht_id); @@ -3333,21 +3146,13 @@ ACE_OS::thr_sigsetmask (int how, result), int, -1); # elif defined (ACE_HAS_PTHREADS) - // Draft 4 and 6 implementations will sometimes have a sigprocmask () that - // modifies the calling thread's mask only. If this is not so for your - // platform, define ACE_LACKS_PTHREAD_THR_SIGSETMASK. -# if defined (ACE_HAS_PTHREADS_DRAFT4) || \ - defined (ACE_HAS_PTHREADS_DRAFT6) || (defined (_UNICOS) && _UNICOS == 9) - //FUZZ: disable check_for_lack_ACE_OS - ACE_OSCALL_RETURN (::sigprocmask (how, nsm, osm), int, -1); - //FUZZ: enable check_for_lack_ACE_OS -# elif !defined (ACE_LACKS_PTHREAD_SIGMASK) +# if !defined (ACE_LACKS_PTHREAD_SIGMASK) int result; //FUZZ: disable check_for_lack_ACE_OS ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_sigmask (how, nsm, osm), result), int, -1); //FUZZ: enable check_for_lack_ACE_OS -# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 || _UNICOS 9 */ +# endif /* !ACE_LACKS_PTHREAD_SIGMASK */ #if 0 /* Don't know if any platform actually needs this... */ @@ -3433,15 +3238,7 @@ ACE_OS::thr_suspend (ACE_hthread_t target_thread) ACE_FAIL_RETURN (-1); /* NOTREACHED */ # elif defined (ACE_HAS_VXTHREADS) - // Skip over the ID-allocated marker, if present. - target_thread += target_thread[0] == ACE_THR_ID_ALLOCATED ? 1 : 0; - ACE_thread_t tid; - ACE_OSCALL (::taskNameToId (target_thread), int, ERROR, tid); - - if (tid == ERROR) - return -1; - else - ACE_OSCALL_RETURN (::taskSuspend (tid), int, -1); + ACE_OSCALL_RETURN (::taskSuspend (target_thread), int, -1); # endif /* ACE_HAS_STHREADS */ #else ACE_UNUSED_ARG (target_thread); @@ -3455,11 +3252,7 @@ ACE_OS::thr_testcancel (void) ACE_OS_TRACE ("ACE_OS::thr_testcancel"); #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_PTHREAD_CANCEL) -#if defined(ACE_HAS_PTHREADS_DRAFT6) - pthread_testintr (); -#else /* ACE_HAS_PTHREADS_DRAFT6 */ pthread_testcancel (); -#endif /* !ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) # elif defined (ACE_HAS_WTHREADS) # elif defined (ACE_HAS_VXTHREADS) @@ -3476,14 +3269,7 @@ ACE_OS::thr_yield (void) ACE_OS_TRACE ("ACE_OS::thr_yield"); #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_PTHREADS_STD) - // Note - this is a POSIX.4 function - not a POSIX.1c function... ::sched_yield (); -# elif defined (ACE_HAS_PTHREADS_DRAFT6) - pthread_yield (0); -# else /* Draft 4 and 7 */ - pthread_yield (); -# endif /* ACE_HAS_PTHREADS_STD */ # elif defined (ACE_HAS_STHREADS) ::thr_yield (); # elif defined (ACE_HAS_WTHREADS) @@ -3508,12 +3294,9 @@ ACE_OS::thread_mutex_destroy (ACE_thread_mutex_t *m) # if defined (ACE_HAS_WTHREADS) ::DeleteCriticalSection (m); return 0; - -# elif defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) || defined (ACE_VXWORKS) +# else return ACE_OS::mutex_destroy (m); - -# endif /* ACE_HAS_STHREADS || ACE_HAS_PTHREADS */ - +# endif /* ACE_HAS_WTHREADS */ #else ACE_UNUSED_ARG (m); ACE_NOTSUP_RETURN (-1); @@ -3548,7 +3331,7 @@ ACE_OS::thread_mutex_init (ACE_thread_mutex_t *m, # elif defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) // Force the use of USYNC_THREAD! return ACE_OS::mutex_init (m, USYNC_THREAD, name, arg, 0, lock_type); -# elif defined (ACE_VXWORKS) +# elif defined (ACE_HAS_VXTHREADS) return mutex_init (m, lock_type, name, arg); # endif /* ACE_HAS_STHREADS || ACE_HAS_PTHREADS */ @@ -3591,12 +3374,9 @@ ACE_OS::thread_mutex_init (ACE_thread_mutex_t *m, # elif defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) // Force the use of USYNC_THREAD! return ACE_OS::mutex_init (m, USYNC_THREAD, name, arg, 0, lock_type); - -# elif defined (ACE_VXWORKS) +# elif defined (ACE_HAS_VXTHREADS) return mutex_init (m, lock_type, name, arg); - # endif /* ACE_HAS_STHREADS || ACE_HAS_PTHREADS */ - #else ACE_UNUSED_ARG (m); ACE_UNUSED_ARG (lock_type); @@ -3616,9 +3396,9 @@ ACE_OS::thread_mutex_lock (ACE_thread_mutex_t *m) # if defined (ACE_HAS_WTHREADS) ::EnterCriticalSection (m); return 0; -# elif defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) || defined (ACE_VXWORKS) +# else return ACE_OS::mutex_lock (m); -# endif /* ACE_HAS_STHREADS || ACE_HAS_PTHREADS || VXWORKS */ +# endif /* ACE_HAS_WTHREADS */ #else ACE_UNUSED_ARG (m); ACE_NOTSUP_RETURN (-1); @@ -3640,9 +3420,7 @@ ACE_OS::thread_mutex_lock (ACE_thread_mutex_t *m, // Windows synchronization mechanism. #if defined (ACE_HAS_THREADS) && !defined (ACE_HAS_WTHREADS) -# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) || defined (ACE_VXWORKS) return ACE_OS::mutex_lock (m, timeout); -#endif /* ACE_HAS_STHREADS || ACE_HAS_PTHREADS || VXWORKS */ #else ACE_UNUSED_ARG (m); ACE_UNUSED_ARG (timeout); @@ -3697,9 +3475,9 @@ ACE_OS::thread_mutex_unlock (ACE_thread_mutex_t *m) # if defined (ACE_HAS_WTHREADS) ::LeaveCriticalSection (m); return 0; -# elif defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) || defined (ACE_VXWORKS) +# else return ACE_OS::mutex_unlock (m); -# endif /* Threads variety case */ +# endif /* ACE_HAS_WTHREADS */ #else ACE_UNUSED_ARG (m); ACE_NOTSUP_RETURN (-1); diff --git a/ACE/ace/OS_NS_arpa_inet.cpp b/ACE/ace/OS_NS_arpa_inet.cpp index 572422c044e..0ebf8a3dcc6 100644 --- a/ACE/ace/OS_NS_arpa_inet.cpp +++ b/ACE/ace/OS_NS_arpa_inet.cpp @@ -36,7 +36,7 @@ ACE_OS::inet_aton (const char *host_name, struct in_addr *addr) addr->s_addr = ip_addr; // Network byte ordered return 1; } -#elif defined (ACE_VXWORKS) && (ACE_VXWORKS <= 0x650) +#elif defined (ACE_VXWORKS) && (ACE_VXWORKS <= 0x660) // inet_aton() returns OK (0) on success and ERROR (-1) on failure. // Must reset errno first. Refer to WindRiver SPR# 34949, SPR# 36026 ::errnoSet(0); diff --git a/ACE/ace/OS_NS_dlfcn.inl b/ACE/ace/OS_NS_dlfcn.inl index d00a3f4032f..5b5e4142bb3 100644 --- a/ACE/ace/OS_NS_dlfcn.inl +++ b/ACE/ace/OS_NS_dlfcn.inl @@ -256,7 +256,7 @@ ACE_OS::dlsym (ACE_SHLIB_HANDLE handle, # elif defined (__hpux) - void *value; + void *value = 0; int status; shl_t _handle = handle; ACE_OSCALL (::shl_findsym(&_handle, symbolname, TYPE_UNDEFINED, &value), int, -1, status); @@ -268,11 +268,11 @@ ACE_OS::dlsym (ACE_SHLIB_HANDLE handle, // which resolves the most recently loaded symbols .. which resolve mostly what we want.. ACE_UNUSED_ARG (handle); SYM_TYPE symtype; - void *value = 0; + char *value = 0; STATUS status; - ACE_OSCALL (::symFindByName(sysSymTbl, symbolname, (char **)&value, &symtype), int, -1, status); + ACE_OSCALL (::symFindByName(sysSymTbl, symbolname, &value, &symtype), int, -1, status); - return status == OK ? value : 0; + return status == OK ? reinterpret_cast <void*>(value) : 0; # else diff --git a/ACE/ace/OS_NS_netdb.cpp b/ACE/ace/OS_NS_netdb.cpp index a788714eefd..019a58dc0c1 100644 --- a/ACE/ace/OS_NS_netdb.cpp +++ b/ACE/ace/OS_NS_netdb.cpp @@ -130,7 +130,7 @@ ACE_OS::gethostbyname (const char *name) if (0 == name || '\0' == name[0]) return 0; - ACE_OSCALL (::hostGetByName ((char *) name), int, -1, first_addr); + ACE_OSCALL (::hostGetByName (const_cast <char *> (name)), int, -1, first_addr); if (first_addr == -1) return 0; @@ -167,7 +167,7 @@ ACE_OS::gethostbyname_r (const char *name, hostent *result, else { int addr; - ACE_OSCALL (::hostGetByName ((char *) name), int, -1, addr); + ACE_OSCALL (::hostGetByName (const_cast <char *> (name)), int, -1, addr); if (addr == -1) { diff --git a/ACE/ace/OS_NS_netdb.inl b/ACE/ace/OS_NS_netdb.inl index a3c65135b63..f86db157149 100644 --- a/ACE/ace/OS_NS_netdb.inl +++ b/ACE/ace/OS_NS_netdb.inl @@ -170,7 +170,7 @@ ACE_OS::gethostbyaddr_r (const char *addr, // And no aliases, so null-terminate h_aliases. result->h_aliases = &result->h_addr_list[1]; - if (((2*sizeof(char*))+hp->h_length+ACE_OS::strlen (hp->h_name)+1) > sizeof (ACE_HOSTENT_DATA)) + if (((2*sizeof(char*))+hp->h_length+ACE_OS::strlen (hp->h_name)+1) <= sizeof (ACE_HOSTENT_DATA)) { result->h_name = (char *) result->h_addr_list[0] + hp->h_length; ACE_OS::strcpy (result->h_name, hp->h_name); diff --git a/ACE/ace/OS_NS_pwd.inl b/ACE/ace/OS_NS_pwd.inl index 0c05d61d23f..029dd034d51 100644 --- a/ACE/ace/OS_NS_pwd.inl +++ b/ACE/ace/OS_NS_pwd.inl @@ -55,7 +55,7 @@ ACE_OS::getpwnam_r (const char *name, struct passwd *pwent, #elif !defined (ACE_LACKS_PWD_FUNCTIONS) # if defined (ACE_HAS_REENTRANT_FUNCTIONS) # if !defined (ACE_LACKS_PWD_REENTRANT_FUNCTIONS) -# if defined (ACE_HAS_PTHREADS_STD) && \ +# if defined (ACE_HAS_PTHREADS) && \ !defined (ACE_HAS_STHREADS) || \ defined (HPUX_11) || \ defined (__USLC__) // Added by Roland Gigler for SCO UnixWare 7. @@ -85,7 +85,7 @@ ACE_OS::getpwnam_r (const char *name, struct passwd *pwent, return pwent; # else return ::getpwnam_r (name, pwent, buffer, buflen); -# endif /* ACE_HAS_PTHREADS_STD */ +# endif /* ACE_HAS_PTHREADS */ # else ACE_UNUSED_ARG (name); ACE_UNUSED_ARG (pwent); diff --git a/ACE/ace/OS_NS_signal.inl b/ACE/ace/OS_NS_signal.inl index df71ce0eb23..98f02459494 100644 --- a/ACE/ace/OS_NS_signal.inl +++ b/ACE/ace/OS_NS_signal.inl @@ -26,18 +26,18 @@ kill (pid_t pid, int signum) ACE_INLINE int pthread_sigmask (int how, const sigset_t *nsp, sigset_t *osp) { -#if defined (ACE_HAS_PTHREADS_STD) && !defined (ACE_LACKS_PTHREAD_SIGMASK) +#if defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_PTHREAD_SIGMASK) int result; ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_sigmask (how, nsp, osp), result), int, -1); -#else /* !ACE_HAS_PTHREADS_STD && !ACE_LACKS_PTHREAD_SIGMASK */ +#else /* !ACE_HAS_PTHREADS && !ACE_LACKS_PTHREAD_SIGMASK */ ACE_UNUSED_ARG (how); ACE_UNUSED_ARG (nsp); ACE_UNUSED_ARG (osp); ACE_NOTSUP_RETURN (-1); -#endif /* ACE_HAS_PTHREADS_STD && !ACE_LACKS_PTHREAD_SIGMASK */ +#endif /* ACE_HAS_PTHREADS && !ACE_LACKS_PTHREAD_SIGMASK */ } ACE_INLINE int diff --git a/ACE/ace/OS_NS_stdio.inl b/ACE/ace/OS_NS_stdio.inl index 9ab0b580d3a..b134e754afe 100644 --- a/ACE/ace/OS_NS_stdio.inl +++ b/ACE/ace/OS_NS_stdio.inl @@ -1017,6 +1017,40 @@ ACE_OS::vsprintf (char *buffer, const char *format, va_list argptr) return ::vsprintf (buffer, format, argptr); } +#if defined (ACE_HAS_WCHAR) +ACE_INLINE int +ACE_OS::vsprintf (wchar_t *buffer, const wchar_t *format, va_list argptr) +{ +# if (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500) || \ + (defined (sun) && !(defined(_XOPEN_SOURCE) && (_XOPEN_VERSION-0==4))) || \ + defined (ACE_HAS_DINKUM_STL) || defined (__DMC__) || \ + defined (ACE_HAS_VSWPRINTF) || defined (ACE_WIN32_VC9) || \ + (defined (ACE_WIN32_VC8) && !defined (ACE_HAS_WINCE) && \ + _MSC_FULL_VER > 140050000) + + // The XPG4/UNIX98/C99 signature of the wide-char sprintf has a + // maxlen argument. Since this method doesn't supply one, pass in + // a length that works (ULONG_MAX doesn't on all platform since some check + // to see if the operation will remain in bounds). If this isn't ok, use + // ACE_OS::snprintf(). + return vswprintf (buffer, 4096, format, argptr); + +# elif defined (ACE_WIN32) + // Windows has vswprintf, but the pre-VC8 signature is from the older + // ISO C standard. Also see ACE_OS::snprintf() for more info on this. + + return vswprintf (buffer, format, argptr); + +# else + ACE_UNUSED_ARG (buffer); + ACE_UNUSED_ARG (format); + ACE_UNUSED_ARG (argptr); + ACE_NOTSUP_RETURN (-1); + +# endif /* XPG5 || ACE_HAS_DINKUM_STL */ +} +#endif /* ACE_HAS_WCHAR */ + ACE_INLINE int ACE_OS::vsnprintf (char *buffer, size_t maxlen, const char *format, va_list ap) { @@ -1064,65 +1098,42 @@ ACE_OS::vsnprintf (char *buffer, size_t maxlen, const char *format, va_list ap) #if defined (ACE_HAS_WCHAR) ACE_INLINE int -ACE_OS::vsprintf (wchar_t *buffer, const wchar_t *format, va_list argptr) -{ -# if (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500) || \ - (defined (sun) && !(defined(_XOPEN_SOURCE) && (_XOPEN_VERSION-0==4))) || \ - defined (ACE_HAS_DINKUM_STL) || defined (__DMC__) || \ - defined (ACE_HAS_VSWPRINTF) || \ - (defined (ACE_WIN32_VC8) && !defined (ACE_HAS_WINCE) && \ - _MSC_FULL_VER > 140050000) - - // The XPG4/UNIX98/C99 signature of the wide-char sprintf has a - // maxlen argument. Since this method doesn't supply one, pass in - // a length that works (ULONG_MAX doesn't on all platform since some check - // to see if the operation will remain in bounds). If this isn't ok, use - // ACE_OS::snprintf(). - return vswprintf (buffer, 4096, format, argptr); - -# elif defined (ACE_WIN32) - // Windows has vswprintf, but the pre-VC8 signature is from the older - // ISO C standard. Also see ACE_OS::snprintf() for more info on this. - - return vswprintf (buffer, format, argptr); - -# else - ACE_UNUSED_ARG (buffer); - ACE_UNUSED_ARG (format); - ACE_UNUSED_ARG (argptr); - ACE_NOTSUP_RETURN (-1); - -# endif /* XPG5 || ACE_HAS_DINKUM_STL */ -} -#endif /* ACE_HAS_WCHAR */ - -#if defined (ACE_HAS_WCHAR) -ACE_INLINE int ACE_OS::vsnprintf (wchar_t *buffer, size_t maxlen, const wchar_t *format, va_list ap) { # if (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500) || \ (defined (sun) && !(defined(_XOPEN_SOURCE) && (_XOPEN_VERSION-0==4))) || \ (defined (ACE_HAS_DINKUM_STL) || defined (__DMC__)) || \ - defined (ACE_HAS_VSWPRINTF) - - return vswprintf (buffer, maxlen, format, ap); - -# elif defined (ACE_HAS_TR24731_2005_CRT) - - return _vsnwprintf_s (buffer, maxlen, _TRUNCATE, format, ap); + defined (ACE_HAS_VSWPRINTF) || \ + defined (ACE_WIN32) -# elif defined (ACE_WIN32) + int result; - int result = ::_vsnwprintf (buffer, maxlen, format, ap); +# if defined (ACE_WIN32) + // Microsoft's vswprintf() doesn't have the maxlen argument that + // XPG4/UNIX98 define. They do, however, recommend use of _vsnwprintf() + // as a substitute, which does have the same signature as the UNIX98 one. + result = ::_vsnwprintf (buffer, maxlen, format, ap); - // Win32 doesn't regard a full buffer with no 0-terminate as an -// overrun. + // Win32 doesn't regard a full buffer with no 0-terminate as an overrun. if (result == static_cast<int> (maxlen)) - result = -1; + buffer[maxlen-1] = '\0'; // Win32 doesn't 0-terminate the string if it overruns maxlen. if (result == -1) buffer[maxlen-1] = '\0'; +# else + result = vswprintf (buffer, maxlen, format, ap); +#endif + + // In out-of-range conditions, C99 defines vsnprintf() to return the number + // of characters that would have been written if enough space was available. + // Earlier variants of the vsnprintf() (e.g. UNIX98) defined it to return + // -1. This method follows the C99 standard, but needs to guess at the + // value; uses maxlen + 1. + if (result == -1) + { + result = static_cast <int> (maxlen + 1); + } return result; diff --git a/ACE/ace/OS_NS_stdlib.cpp b/ACE/ace/OS_NS_stdlib.cpp index 812722597c9..a04086d8a2b 100644 --- a/ACE/ace/OS_NS_stdlib.cpp +++ b/ACE/ace/OS_NS_stdlib.cpp @@ -775,7 +775,7 @@ ACE_OS::mkstemp_emulation (ACE_TCHAR * s) #endif /* ACE_LACKS_MKSTEMP */ #if !defined (ACE_HAS_GETPROGNAME) && !defined (ACE_HAS_SETPROGNAME) -static const char *__progname = 0; +static const char *__progname = ""; #endif /* !ACE_HAS_GETPROGNAME && !ACE_HAS_SETPROGNAME */ #if !defined (ACE_HAS_GETPROGNAME) diff --git a/ACE/ace/OS_NS_string.cpp b/ACE/ace/OS_NS_string.cpp index 9a7f44ab423..be63e28e450 100644 --- a/ACE/ace/OS_NS_string.cpp +++ b/ACE/ace/OS_NS_string.cpp @@ -119,7 +119,7 @@ ACE_OS::strerror (int errnum) // and set errno to EINVAL. ACE_Errno_Guard g (errno); errno = 0; - char *errmsg; + char *errmsg = 0; #if defined (ACE_HAS_TR24731_2005_CRT) errmsg = ret_errortext; @@ -360,7 +360,7 @@ ACE_OS::strtok_r_emulation (ACE_WCHAR_T *s, { ACE_WCHAR_T* sbegin = s ? s : *lasts; sbegin += ACE_OS::strspn(sbegin, tokens); - if (*sbegin == 0) + if (*sbegin == 0) { static ACE_WCHAR_T empty[1] = { 0 }; *lasts = empty; diff --git a/ACE/ace/OS_NS_sys_socket.inl b/ACE/ace/OS_NS_sys_socket.inl index d98d6e31b0c..a983d34e7e4 100644 --- a/ACE/ace/OS_NS_sys_socket.inl +++ b/ACE/ace/OS_NS_sys_socket.inl @@ -807,9 +807,9 @@ ACE_OS::sendv (ACE_HANDLE handle, local_iov[i].iov_len = buffers[i].iov_len; new_total = total + buffers[i].iov_len; - if ( new_total >= SSIZE_MAX ) + if (new_total >= ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE) { - local_iov[i].iov_len = SSIZE_MAX - total; + local_iov[i].iov_len = ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE - total; n = i+1; break; } diff --git a/ACE/ace/OS_NS_sys_utsname.cpp b/ACE/ace/OS_NS_sys_utsname.cpp index 588469780f3..f8ec8043fc3 100644 --- a/ACE/ace/OS_NS_sys_utsname.cpp +++ b/ACE/ace/OS_NS_sys_utsname.cpp @@ -11,6 +11,8 @@ ACE_RCSID(ace, OS_NS_sys_utsname, "$Id$") #if defined (ACE_VXWORKS) && defined (ACE_LACKS_UNAME) // for sysBspRev(), sysModel() # include /**/ <sysLib.h> +// for kernelVersion() +# include /**/ <kernelLib.h> #endif /* ACE_VXWORKS && ACE_LACKS_UNAME */ ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -213,7 +215,7 @@ ACE_OS::uname (ACE_utsname *name) #elif defined (ACE_VXWORKS) size_t maxnamelen = sizeof name->nodename; ACE_OS::strcpy (name->sysname, "VxWorks"); - ACE_OS::strcpy (name->release, "???"); + ACE_OS::strcpy (name->release, kernelVersion()); ACE_OS::strcpy (name->version, sysBspRev ()); ACE_OS::strcpy (name->machine, sysModel ()); diff --git a/ACE/ace/OS_NS_time.inl b/ACE/ace/OS_NS_time.inl index 585e1b04d5a..fe1804c04e7 100644 --- a/ACE/ace/OS_NS_time.inl +++ b/ACE/ace/OS_NS_time.inl @@ -261,9 +261,17 @@ ACE_OS::gethrtime (const ACE_HRTimer_Op op) ACE_hrtime_t now; # endif /* ! ACE_LACKS_LONGLONG_T */ +#if defined (__amd64__) || defined (__x86_64__) + // Read the high res tick counter into 32 bit int variables "eax" and + // "edx", and then combine them into 64 bit int "now" + ACE_UINT32 eax, edx; + asm volatile ("rdtsc" : "=a" (eax), "=d" (edx) : : "memory"); + now = (((ACE_UINT64) eax) | (((ACE_UINT64) edx) << 32)); +#else // Read the high-res tick counter directly into memory variable "now". // The A constraint signifies a 64-bit int. asm volatile ("rdtsc" : "=A" (now) : : "memory"); +#endif # if defined (ACE_LACKS_LONGLONG_T) ACE_UINT32 least, most; diff --git a/ACE/ace/OS_NS_unistd.inl b/ACE/ace/OS_NS_unistd.inl index 0a116123665..62bb81d6be5 100644 --- a/ACE/ace/OS_NS_unistd.inl +++ b/ACE/ace/OS_NS_unistd.inl @@ -21,7 +21,7 @@ #if defined (ACE_VXWORKS) || defined (ACE_HAS_WINCE) # include "ace/os_include/os_unistd.h" -# if defined (ACE_VXWORKS) && ((ACE_VXWORKS >= 0x620) && (ACE_VXWORKS <= 0x650)) +# if defined (ACE_VXWORKS) && ((ACE_VXWORKS >= 0x620) && (ACE_VXWORKS <= 0x660)) # if defined (__RTP__) # include "ace/os_include/os_strings.h" # else diff --git a/ACE/ace/OS_main.h b/ACE/ace/OS_main.h index 59e95c36f89..a978daa385c 100644 --- a/ACE/ace/OS_main.h +++ b/ACE/ace/OS_main.h @@ -29,6 +29,10 @@ extern char* rtems_progname; # endif /* ACE_HAS_RTEMS */ +#if defined (ACE_VXWORKS) && (ACE_VXWORKS <= 0x640) && defined (__RTP__) +# include <resolvLib.h> +#endif + # if !defined (ACE_MAIN) # define ACE_MAIN main # endif /* ! ACE_MAIN */ @@ -107,6 +111,22 @@ ACE_MAIN (int argc, char *argv[]) /* user's entry point, e.g., main */ \ int \ ace_main_i +# elif defined (ACE_VXWORKS) && (ACE_VXWORKS <= 0x640) && defined (__RTP__) + +# define main \ +ACE_MAIN (int, char *[]); /* forward decl to gobble up the 'int' if there is one */ \ +ACE_BEGIN_VERSIONED_NAMESPACE_DECL \ +int ace_os_main_i (int, char *[]); \ +ACE_END_VERSIONED_NAMESPACE_DECL \ +int \ +ACE_MAIN (int argc, char *argv[]) /* user's entry point, e.g., main */ \ +{ \ + resolvInit(); \ + return ace_os_main_i (argc, argv); /* what the user calls "main" */ \ +} \ +int \ +ace_main_i + # elif !defined (ACE_WIN32) # define main \ diff --git a/ACE/ace/Object_Manager.cpp b/ACE/ace/Object_Manager.cpp index 086e1a22d80..313eb6a116a 100644 --- a/ACE/ace/Object_Manager.cpp +++ b/ACE/ace/Object_Manager.cpp @@ -236,7 +236,11 @@ ACE_Object_Manager::init (void) # if defined (ACE_HAS_TSS_EMULATION) // Initialize the main thread's TS storage. - ACE_TSS_Emulation::tss_open (ts_storage_); + if (!ts_storage_initialized_) + { + ACE_TSS_Emulation::tss_open (ts_storage_); + ts_storage_initialized_ = true; + } # endif /* ACE_HAS_TSS_EMULATION */ #if defined (ACE_DISABLE_WIN32_ERROR_WINDOWS) && \ @@ -247,6 +251,9 @@ ACE_Object_Manager::init (void) _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDERR ); #endif /* _DEBUG && _MSC_VER || __INTEL_COMPILER */ + // The system does not display the critical-error-handler message box + SetErrorMode(SEM_FAILCRITICALERRORS); + // And this will catch all unhandled exceptions. SetUnhandledExceptionFilter (&ACE_UnhandledExceptionFilter); #endif /* ACE_DISABLE_WIN32_ERROR_WINDOWS && ACE_WIN32 && !ACE_HAS_WINCE */ @@ -279,6 +286,30 @@ ACE_Object_Manager::init (void) } } +#if defined (ACE_HAS_TSS_EMULATION) +int +ACE_Object_Manager::init_tss (void) +{ + return ACE_Object_Manager::instance ()->init_tss_i (); +} + +int +ACE_Object_Manager::init_tss_i (void) +{ + ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, + *instance_->internal_lock_, -1)); + + if (!ts_storage_initialized_) + { + ACE_TSS_Emulation::tss_open (ts_storage_); + ts_storage_initialized_ = true; + } + + return 0; +} + +#endif + ACE_Object_Manager::ACE_Object_Manager (void) // With ACE_HAS_TSS_EMULATION, ts_storage_ is initialized by the call to // ACE_OS::tss_open () in the function body. @@ -290,7 +321,10 @@ ACE_Object_Manager::ACE_Object_Manager (void) #if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) , singleton_null_lock_ (0) , singleton_recursive_lock_ (0) -# endif /* ACE_MT_SAFE */ +#endif /* ACE_MT_SAFE */ +#if defined (ACE_HAS_TSS_EMULATION) + , ts_storage_initialized_ (false) +#endif { #if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0) ACE_NEW (internal_lock_, ACE_Recursive_Thread_Mutex); diff --git a/ACE/ace/Object_Manager.h b/ACE/ace/Object_Manager.h index b330fe16e84..8481aa15e99 100644 --- a/ACE/ace/Object_Manager.h +++ b/ACE/ace/Object_Manager.h @@ -245,6 +245,11 @@ public: */ static int at_exit (ACE_Cleanup *object, void *param = 0); +#if defined (ACE_HAS_TSS_EMULATION) + static int init_tss (void); + int init_tss_i (void); +#endif + /** * Register an object (or array) for cleanup at process termination. * "cleanup_hook" points to a (global, or static member) function @@ -424,6 +429,7 @@ private: #if defined (ACE_HAS_TSS_EMULATION) // Main thread's thread-specific storage array. void *ts_storage_[ACE_TSS_Emulation::ACE_TSS_THREAD_KEYS_MAX]; + bool ts_storage_initialized_; #endif /* ACE_HAS_TSS_EMULATION */ #if !defined (ACE_HAS_NONSTATIC_OBJECT_MANAGER) diff --git a/ACE/ace/Pipe.cpp b/ACE/ace/Pipe.cpp index f40299ce79f..aa87ab740eb 100644 --- a/ACE/ace/Pipe.cpp +++ b/ACE/ace/Pipe.cpp @@ -180,6 +180,21 @@ ACE_Pipe::open (int buffer_size) return -1; } # endif /* ! ACE_LACKS_SOCKET_BUFSIZ */ +# if defined (ACE_OPENVMS) && !defined (ACE_LACKS_TCP_NODELAY) + int one = 1; + // OpenVMS implements socketpair(AF_UNIX...) by returning AF_INET sockets. + // Since these are plagued by Nagle as any other INET socket we need to set + // TCP_NODELAY on the write handle. + if (ACE_OS::setsockopt (this->handles_[1], + ACE_IPPROTO_TCP, + TCP_NODELAY, + reinterpret_cast <const char *> (&one), + sizeof (one)) == -1) + { + this->close (); + return -1; + } +# endif /* ACE_OPENVMS && !ACE_LACKS_TCP_NODELAY */ #endif /* ! ACE_LACKS_SOCKETPAIR && ! ACE_HAS_STREAM_PIPES */ // Point both the read and write HANDLES to the appropriate socket // HANDLEs. @@ -326,13 +341,13 @@ ACE_Pipe::recv (size_t n, ...) const } #if defined (ACE_WIN32) - ssize_t result = ACE::recvv (this->read_handle (), - iovp, - total_tuples); + ssize_t const result = ACE::recvv (this->read_handle (), + iovp, + total_tuples); #else - ssize_t result = ACE_OS::readv (this->read_handle (), - iovp, - total_tuples); + ssize_t const result = ACE_OS::readv (this->read_handle (), + iovp, + total_tuples); #endif /* ACE_WIN32 */ #if !defined (ACE_HAS_ALLOCA) diff --git a/ACE/ace/Pipe.h b/ACE/ace/Pipe.h index ed82b9c42b3..4d2f2b13cd0 100644 --- a/ACE/ace/Pipe.h +++ b/ACE/ace/Pipe.h @@ -141,12 +141,12 @@ public: ssize_t sendv (const iovec iov[], int n) const; - /// Send an <iovec> of size @a n to the file. Will block until all + /// Send an @c iovec of size @a n to the file. Will block until all /// bytes are sent or an error occurs. ssize_t sendv_n (const iovec iov[], int n) const; - /// Receive an <iovec> of size @a n to the file. + /// Receive an @c iovec of size @a n to the file. ssize_t recvv_n (iovec iov[], int n) const; diff --git a/ACE/ace/Process_Manager.cpp b/ACE/ace/Process_Manager.cpp index 11ff975a59c..0caacba7234 100644 --- a/ACE/ace/Process_Manager.cpp +++ b/ACE/ace/Process_Manager.cpp @@ -40,9 +40,9 @@ ACE_Process_Manager::cleanup (void *, void *) ACE_Process_Manager::close_singleton (); } -// This function acts as a signal handler for SIGCHLD. We don't really want -// to do anything with the signal - it's just needed to interrupt a sleep. -// See wait() for more info. +// This function acts as a signal handler for SIGCHLD. We don't really +// want to do anything with the signal - it's just needed to interrupt +// a sleep. See wait() for more info. #if !defined (ACE_WIN32) && !defined (ACE_LACKS_UNIX_SIGNALS) static void sigchld_nop (int, siginfo_t *, ucontext_t *) @@ -676,10 +676,8 @@ ACE_Process_Manager::set_scheduler_all (const ACE_Sched_Params & params) return -1; } return 0; - } - // Locate the index in the table associated with <pid>. Must be // called with the lock held. @@ -785,21 +783,25 @@ ACE_Process_Manager::wait (pid_t pid, ssize_t idx = -1; ACE_Process *proc = 0; - ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, this->lock_, -1)); - - if (pid != 0) - { - idx = this->find_proc (pid); - if (idx == -1) - return ACE_INVALID_PID; - else - proc = process_table_[idx].process_; - } - + { + // fake context after which the lock is released + ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, this->lock_, -1)); + + if (pid != 0) + { + idx = this->find_proc (pid); + if (idx == -1) + return ACE_INVALID_PID; + else + proc = process_table_[idx].process_; + } + // release the lock. + } if (proc != 0) pid = proc->wait (timeout, status); else { + ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, this->lock_, -1)); // Wait for any Process spawned by this Process_Manager. #if defined (ACE_WIN32) HANDLE *handles = 0; @@ -827,10 +829,10 @@ ACE_Process_Manager::wait (pid_t pid, pid = 0; else { - // Green Hills produces a warning that result >= WAIT_OBJECT_0 is - // a pointless comparison because WAIT_OBJECT_0 is zero and DWORD is - // unsigned long, so this test is skipped for Green Hills. - // Same for mingw. + // Green Hills produces a warning that result >= + // WAIT_OBJECT_0 is a pointless comparison because + // WAIT_OBJECT_0 is zero and DWORD is unsigned long, so this + // test is skipped for Green Hills. Same for mingw. # if defined (ghs) || defined (__MINGW32__) || (defined (_MSC_VER) && _MSC_VER >= 1300) ACE_ASSERT (result < WAIT_OBJECT_0 + this->current_count_); # else @@ -867,13 +869,9 @@ ACE_Process_Manager::wait (pid_t pid, delete [] handles; #else /* !defined(ACE_WIN32) */ if (timeout == ACE_Time_Value::max_time) - { - pid = ACE_OS::waitpid (-1, status, 0); - } + pid = ACE_OS::waitpid (-1, status, 0); else if (timeout == ACE_Time_Value::zero) - { - pid = ACE_OS::waitpid (-1, status, WNOHANG); - } + pid = ACE_OS::waitpid (-1, status, WNOHANG); else { # if defined (ACE_LACKS_UNIX_SIGNALS) @@ -912,9 +910,9 @@ ACE_Process_Manager::wait (pid_t pid, # if defined (ACE_VXWORKS) && (ACE_VXWORKS >= 0x600) if (pid > 0 || (pid == ACE_INVALID_PID && errno != EINTR)) # else - if (pid > 0 || pid == ACE_INVALID_PID) + if (pid > 0 || pid == ACE_INVALID_PID) # endif - break; // Got a child or an error - all done + break; // Got a child or an error - all done // pid 0, nothing is ready yet, so wait. // Do a sleep (only this thread sleeps) til something @@ -930,31 +928,28 @@ ACE_Process_Manager::wait (pid_t pid, // Restore the previous SIGCHLD action if it was changed. if (this->reactor () == 0) - { - old_action.register_action (SIGCHLD); - } + old_action.register_action (SIGCHLD); # endif /* !ACE_LACKS_UNIX_SIGNALS */ } #endif /* !defined (ACE_WIN32) */ } + ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, this->lock_, -1)); if (pid != ACE_INVALID_PID && pid != 0) { - if (proc == 0) + //we always need to get our id, because we could have been moved in the table meanwhile + idx = this->find_proc (pid); + if (idx == -1) { - idx = this->find_proc (pid); - if (idx == -1) - { - // oops, reaped an unmanaged process! - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) oops, reaped unmanaged %d\n"), - pid)); - return pid; - } - else - proc = process_table_[idx].process_; + // oops, reaped an unmanaged process! + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) oops, reaped unmanaged %d\n"), + pid)); + return pid; } else + proc = process_table_[idx].process_; + if (proc != 0) ACE_ASSERT (pid == proc->getpid ()); this->notify_proc_handler (idx, diff --git a/ACE/ace/QoS/qos.mpc b/ACE/ace/QoS/qos.mpc index ebd482517f6..2714a735bf6 100644 --- a/ACE/ace/QoS/qos.mpc +++ b/ACE/ace/QoS/qos.mpc @@ -7,7 +7,7 @@ project(QoS) : acelib, install { dynamicflags = ACE_QoS_BUILD_DLL macros += ACE_HAS_QOS - specific(borland, bmake, nmake, em3, vc6, vc7, vc71, vc8) { + specific(borland, bmake, nmake, em3, vc6, vc7, vc71, vc8, vc9) { macros += ACE_HAS_WINSOCK2_GQOS } diff --git a/ACE/ace/README b/ACE/ace/README index 63fc1904ed6..b6f243d111e 100644 --- a/ACE/ace/README +++ b/ACE/ace/README @@ -326,13 +326,6 @@ ACE_HAS_BROKEN_UNEXPECTED_EXCEPTIONS Compiler does not call thrown. In particular, the exception specification is not respected. -ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION Compiler's template - instantiation mechanism - supports the use of explicit - C++ specializations for all - used templates. This is also - used for GNU G++ if you don't - use the "repo" patches. ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT When a base-class is a specialization of a class template then this class template must be diff --git a/ACE/ace/Reactor.h b/ACE/ace/Reactor.h index 5f264ca49de..4be27c064dd 100644 --- a/ACE/ace/Reactor.h +++ b/ACE/ace/Reactor.h @@ -75,11 +75,14 @@ public: }; /** - * You can add a hook to various run_event methods and the hook will - * be called after handling every reactor event. If this function - * returns 0, <run_reactor_event_loop> will check for the return - * value of <handle_event>. If it is -1, the - * <run_reactor_event_loop> will return (pre-maturely.) + * You can specify a hook function to event-handling methods that will + * be called after each iteration of event handling. If the hook function + * returns a non-zero value, the event loop will immediately resume + * waiting for the next event(s) to process without checking the error + * status of the just-completed iteration of event handling or the + * end-of-loop indication. If the hook function returns 0, the event + * handling error status and the end-of-loop indication will be checked + * as normal, just as if there is no hook function specified. */ typedef int (*REACTOR_EVENT_HOOK)(ACE_Reactor *); @@ -260,7 +263,7 @@ public: * but does not actually dispatch the event handlers. By default, * don't block while checking this, i.e., "poll". */ - int work_pending (const ACE_Time_Value &max_wait_time = ACE_Time_Value::zero); + int work_pending (const ACE_Time_Value &max_wait_time = ACE_Time_Value::zero); /** * This event loop driver blocks for up to @a max_wait_time before @@ -616,8 +619,8 @@ public: // = High-level Event_Handler scheduling operations - /// Add @a masks_to_be_added to the <event_handler>'s entry. - /// <event_handler> must already have been registered. + /// Add @a masks_to_be_added to the @a event_handler's entry. + /// @a event_handler must already have been registered. /// Note that this call does not cause the Reactor to re-examine /// its set of handlers - the new masks will be noticed the next /// time the Reactor waits for activity. If there is no other @@ -693,7 +696,7 @@ public: /** * Set the maximum number of times that ACE_Reactor will - * iterate and dispatch the <ACE_Event_Handlers> that are passed in + * iterate and dispatch the ACE_Event_Handlers that are passed in * via the notify queue before breaking out of its * <ACE_Message_Queue::dequeue> loop. By default, this is set to * -1, which means "iterate until the queue is empty." Setting this diff --git a/ACE/ace/Recursive_Thread_Mutex.cpp b/ACE/ace/Recursive_Thread_Mutex.cpp index 673b77ca2ed..285789dd696 100644 --- a/ACE/ace/Recursive_Thread_Mutex.cpp +++ b/ACE/ace/Recursive_Thread_Mutex.cpp @@ -82,7 +82,7 @@ int ACE_Recursive_Thread_Mutex::get_nesting_level (void) { // ACE_TRACE ("ACE_Recursive_Thread_Mutex::get_nesting_level"); -#if defined (ACE_HAS_WINCE) || defined (ACE_VXWORKS) +#if defined (ACE_HAS_WINCE) || defined (ACE_HAS_VXTHREADS) ACE_NOTSUP_RETURN (-1); #elif defined (ACE_HAS_RECURSIVE_MUTEXES) # if defined (ACE_WIN32) diff --git a/ACE/ace/Refcounted_Auto_Ptr.h b/ACE/ace/Refcounted_Auto_Ptr.h index 782f9ab85db..1647d862270 100644 --- a/ACE/ace/Refcounted_Auto_Ptr.h +++ b/ACE/ace/Refcounted_Auto_Ptr.h @@ -52,7 +52,7 @@ public: /// Constructor that initializes an ACE_Refcounted_Auto_Ptr to /// the specified pointer value. - ACE_Refcounted_Auto_Ptr (X *p = 0); + explicit ACE_Refcounted_Auto_Ptr (X *p = 0); /// Copy constructor binds the new ACE_Refcounted_Auto_Ptr to the /// representation object referenced by @a r. @@ -68,7 +68,7 @@ public: /// ACE_Refcounted_Auto_Ptr_Rep. An ACE_Refcounted_Auto_Ptr_Rep /// is created if necessary. void operator = (const ACE_Refcounted_Auto_Ptr<X, ACE_LOCK> &r); - + /// Equality operator that returns @c true if both /// ACE_Refcounted_Auto_Ptr objects point to the same underlying /// representation. It does not compare the actual pointers. @@ -86,6 +86,12 @@ public: /// Accessor method. X &operator *() const; + + /// Check rep easily. + bool operator !() const; + + /// Check rep easily. + operator bool () const; /// Releases the reference to the underlying representation object. /// @retval The pointer value prior to releasing it. diff --git a/ACE/ace/Refcounted_Auto_Ptr.inl b/ACE/ace/Refcounted_Auto_Ptr.inl index f44159606ff..a8412d2d3a2 100644 --- a/ACE/ace/Refcounted_Auto_Ptr.inl +++ b/ACE/ace/Refcounted_Auto_Ptr.inl @@ -124,6 +124,18 @@ ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator *() const return *this->rep_->get (); } +template<class X, class ACE_LOCK> inline bool +ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator !() const +{ + return this->rep_->get () == 0; +} + +template<class X, class ACE_LOCK> inline +ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator bool () const +{ + return this->rep_->get () != 0; +} + template <class X, class ACE_LOCK> inline X* ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::get (void) const { diff --git a/ACE/ace/SOCK_Dgram_Mcast.cpp b/ACE/ace/SOCK_Dgram_Mcast.cpp index 477527d55cf..baa49f521e5 100644 --- a/ACE/ace/SOCK_Dgram_Mcast.cpp +++ b/ACE/ace/SOCK_Dgram_Mcast.cpp @@ -347,9 +347,9 @@ ACE_SOCK_Dgram_Mcast::subscribe_ifs (const ACE_INET_Addr &mcast_addr, if (if_cnt < 2) { - if (this->subscribe (mcast_addr, - reuse_addr, - ACE_TEXT ("0.0.0.0")) == 0) + if (this->join (mcast_addr, + reuse_addr, + ACE_TEXT ("0.0.0.0")) == 0) ++nr_subscribed; } else @@ -363,9 +363,9 @@ ACE_SOCK_Dgram_Mcast::subscribe_ifs (const ACE_INET_Addr &mcast_addr, // Convert to 0-based for indexing, next loop check. if (if_addrs[if_cnt].get_type () != AF_INET || if_addrs[if_cnt].is_loopback ()) continue; - if (this->subscribe (mcast_addr, - reuse_addr, - ACE_TEXT_CHAR_TO_TCHAR + if (this->join (mcast_addr, + reuse_addr, + ACE_TEXT_CHAR_TO_TCHAR (if_addrs[if_cnt].get_host_addr ())) == 0) ++nr_subscribed; } @@ -398,9 +398,9 @@ ACE_SOCK_Dgram_Mcast::subscribe_ifs (const ACE_INET_Addr &mcast_addr, if (if_cnt < 2) { - if (this->subscribe (mcast_addr, - reuse_addr, - ACE_TEXT ("0.0.0.0")) == 0) + if (this->join (mcast_addr, + reuse_addr, + ACE_TEXT ("0.0.0.0")) == 0) ++nr_subscribed; } else @@ -414,9 +414,9 @@ ACE_SOCK_Dgram_Mcast::subscribe_ifs (const ACE_INET_Addr &mcast_addr, // Convert to 0-based for indexing, next loop check. if (if_addrs[if_cnt].is_loopback ()) continue; - if (this->subscribe (mcast_addr, - reuse_addr, - ACE_TEXT_CHAR_TO_TCHAR + if (this->join (mcast_addr, + reuse_addr, + ACE_TEXT_CHAR_TO_TCHAR (if_addrs[if_cnt].get_host_addr ())) == 0) ++nr_subscribed; } @@ -462,22 +462,6 @@ ACE_SOCK_Dgram_Mcast::subscribe_ifs (const ACE_INET_Addr &mcast_addr, } -// Subscribe and add address/iface to subscription list if successful. -int -ACE_SOCK_Dgram_Mcast::subscribe (const ACE_INET_Addr &mcast_addr, - int reuse_addr, - const ACE_TCHAR *net_if, - int protocol_family, - int protocol) -{ - ACE_TRACE ("ACE_SOCK_Dgram_Mcast::subscribe"); - - ACE_UNUSED_ARG (protocol_family); - ACE_UNUSED_ARG (protocol); - - return this->join (mcast_addr,reuse_addr, net_if); -} - int ACE_SOCK_Dgram_Mcast::join (const ACE_INET_Addr &mcast_addr, int reuse_addr, @@ -534,7 +518,7 @@ ACE_SOCK_Dgram_Mcast::join (const ACE_INET_Addr &mcast_addr, } // Attempt subscription. - int result = this->subscribe_i (subscribe_addr, reuse_addr, net_if); + int result = this->subscribe_i (subscribe_addr, reuse_addr, net_if); #if defined (ACE_SOCK_DGRAM_MCAST_DUMPABLE) if (result == 0) @@ -810,24 +794,6 @@ ACE_SOCK_Dgram_Mcast::unsubscribe_ifs (const ACE_INET_Addr &mcast_addr, } -// Unsubscribe, and remove address from subscription list. -// Note: If there are duplicate entries, only finds the first in the list (this -// is a defined restriction - most environments don't allow duplicates to be -// created.) -int -ACE_SOCK_Dgram_Mcast::unsubscribe (const ACE_INET_Addr &mcast_addr, - const ACE_TCHAR *net_if, - int protocol_family, - int protocol) -{ - ACE_TRACE ("ACE_SOCK_Dgram_Mcast::unsubscribe"); - - ACE_UNUSED_ARG (protocol_family); - ACE_UNUSED_ARG (protocol); - - return this->leave (mcast_addr, net_if); -} - int ACE_SOCK_Dgram_Mcast::leave (const ACE_INET_Addr &mcast_addr, const ACE_TCHAR *net_if) @@ -940,30 +906,10 @@ ACE_SOCK_Dgram_Mcast::unsubscribe_i (const ACE_INET_Addr &mcast_addr, } int -ACE_SOCK_Dgram_Mcast::unsubscribe (void) -{ - ACE_TRACE ("ACE_SOCK_Dgram_Mcast::unsubscribe"); - - // Can't implement this reliably without keeping an expensive list, - // and can't close the socket since the caller may want to continue - // using the socket to send() or join() new groups. Even if we - // wanted to be clever and reopen the socket, we'd need to know what - // options had been set, and reset them--and we have no way of doing - // that either. :-( - // Should this return -1? - ACE_ERROR_RETURN ((LM_INFO, - ACE_TEXT ("ACE_SOCK_Dgram_Mcast::unsubscribe (void) ") - ACE_TEXT ("has been deprecated. You must either ") - ACE_TEXT ("close to socket to unsubscribe to all ") - ACE_TEXT ("or unsubscribe to each individually.\n")), - 0); -} - -int ACE_SOCK_Dgram_Mcast::clear_subs_list (void) { ACE_TRACE ("ACE_SOCK_Dgram_Mcast::clear_subs_list"); - int result = 0; + int result = 0; #if defined (ACE_SOCK_DGRAM_MCAST_DUMPABLE) ACE_MT (ACE_GUARD_RETURN (ACE_SDM_LOCK, guard, diff --git a/ACE/ace/SOCK_Dgram_Mcast.h b/ACE/ace/SOCK_Dgram_Mcast.h index 1f53e9f0646..a7e668b4be0 100644 --- a/ACE/ace/SOCK_Dgram_Mcast.h +++ b/ACE/ace/SOCK_Dgram_Mcast.h @@ -250,18 +250,9 @@ public: * Note that the optional @a reuse_addr parameter does not apply to * subscriptions; it is only used if <open> is implicitly invoked (see above). * - * @deprecated This method has been deprecated, please use join() instead. - * In addition, the following parameters have also been deprecated: - * @a protocol_family and @a protocol have no effect. + * Uses the mcast_addr to determine protocol_family, and protocol which + * we always pass as 0 anyway. */ - int subscribe (const ACE_INET_Addr &mcast_addr, - int reuse_addr = 1, // (see above) - const ACE_TCHAR *net_if = 0, - int protocol_family = PF_INET, - int protocol = 0); - - /// join() replaces subscribe() and uses the mcast_addr to determine - /// protocol_family, and protocol which we always pass as 0 anyway. int join (const ACE_INET_Addr &mcast_addr, int reuse_addr = 1, // (see above) const ACE_TCHAR *net_if = 0); @@ -281,35 +272,12 @@ public: * implemented in this environment (_even if_ the <subscribe> specifies a * non- NULL <net_if>). * - * @deprecated This method has been deprecated. Please use leave() instead. - * In addition, @a protocol_family and @a protocol have no effect. + * leave() replaces unsubscribe() and uses mcast_addr to determine + * protocol_family, and protocol which we always pass as 0 anyway. */ - int unsubscribe (const ACE_INET_Addr &mcast_addr, - const ACE_TCHAR *net_if = 0, - int protocol_family = PF_INET, - int protocol = 0); - - /// leave() replaces unsubscribe() and uses mcast_addr to determine - /// protocol_family, and protocol which we always pass as 0 anyway. int leave (const ACE_INET_Addr &mcast_addr, const ACE_TCHAR *net_if = 0); - /// Unsubscribe all current subscriptions. - /** - * Unsubscribe all active group/interface subscriptions (if any). - * - * Returns -1 if any unsubscribe failed, 0 if there are no errors or no - * current subscriptions. - * - * @deprecated This method has been deprecated. Since a list of groups is - * not maintained (except when ACE_SOCK_DGRAM_MCAST_DUMPABLE is defined), - * it isn't possible to unsubscribe to all the groups without closing - * the socket. Therefore, if applications wish to unsubscribe to all - * groups without closing the socket, they much keep track of the - * subscriptions and call the above unsubscribe () for each. - */ - int unsubscribe (void); - // = Data transfer routines. /// Send @a n bytes in @a buf, using the multicast address and network interface diff --git a/ACE/ace/SSL/SSL_SOCK_Stream.cpp b/ACE/ace/SSL/SSL_SOCK_Stream.cpp index 83f5b35f5dc..46130a79fc7 100644 --- a/ACE/ace/SSL/SSL_SOCK_Stream.cpp +++ b/ACE/ace/SSL/SSL_SOCK_Stream.cpp @@ -70,8 +70,7 @@ ACE_SSL_SOCK_Stream::sendv (const iovec iov[], ssize_t bytes_sent = 0; ACE_Time_Value t; - ACE_Time_Value *timeout = - const_cast<ACE_Time_Value *> (max_wait_time); + ACE_Time_Value *timeout = const_cast<ACE_Time_Value *> (max_wait_time); if (max_wait_time != 0) { @@ -86,7 +85,7 @@ ACE_SSL_SOCK_Stream::sendv (const iovec iov[], for (size_t i = 0; i < n; ++i) { - const ssize_t result = this->send (iov[i].iov_base, + ssize_t const result = this->send (iov[i].iov_base, iov[i].iov_len, timeout); @@ -195,7 +194,7 @@ ACE_SSL_SOCK_Stream::send (const void *buf, val) == -1) return -1; - ssize_t bytes_transferred = this->send (buf, len, flags); + ssize_t const bytes_transferred = this->send (buf, len, flags); ACE::restore_non_blocking_mode (this->get_handle (), val); @@ -219,7 +218,7 @@ ACE_SSL_SOCK_Stream::send (size_t n, ...) const { ACE_TRACE ("ACE_SSL_SOCK_Stream::send"); - const size_t total_tuples = n / 2; + size_t const total_tuples = n / 2; va_list argp; va_start (argp, n); @@ -233,9 +232,8 @@ ACE_SSL_SOCK_Stream::send (size_t n, ...) const // scatter writes over SSL. for (size_t i = 0; i < total_tuples; ++i) { - const ssize_t data_len = va_arg (argp, ssize_t); - const ssize_t result = this->send (va_arg (argp, char *), - data_len); + ssize_t const data_len = va_arg (argp, ssize_t); + ssize_t const result = this->send (va_arg (argp, char *), data_len); if (result == -1) { @@ -277,7 +275,7 @@ ACE_SSL_SOCK_Stream::recv (size_t n, ...) const { ACE_TRACE ("ACE_SSL_SOCK_Stream::recv"); - const size_t total_tuples = n / 2; + size_t const total_tuples = n / 2; va_list argp; va_start (argp, n); @@ -286,9 +284,8 @@ ACE_SSL_SOCK_Stream::recv (size_t n, ...) const for (size_t i = 0; i < total_tuples; ++i) { - const ssize_t data_len = va_arg (argp, ssize_t); - const ssize_t result = this->recv (va_arg (argp, char *), - data_len); + ssize_t const data_len = va_arg (argp, ssize_t); + ssize_t const result = this->recv (va_arg (argp, char *), data_len); if (result == -1) { @@ -540,8 +537,8 @@ ACE_SSL_SOCK_Stream::recvv_n (iovec iov[], size_t iovcnt) const for (size_t i = 0; i < iovcnt; ++i) { - ssize_t result = this->recv_n (iov[i].iov_base, - iov[i].iov_len); + ssize_t const result = this->recv_n (iov[i].iov_base, + iov[i].iov_len); if (result == -1) { diff --git a/ACE/ace/SSL/SSL_SOCK_Stream.inl b/ACE/ace/SSL/SSL_SOCK_Stream.inl index 352aca04b3e..f28b55997a5 100644 --- a/ACE/ace/SSL/SSL_SOCK_Stream.inl +++ b/ACE/ace/SSL/SSL_SOCK_Stream.inl @@ -35,7 +35,7 @@ ACE_SSL_SOCK_Stream::send_i (const void *buf, if (flags != 0) ACE_NOTSUP_RETURN (-1); - const int bytes_sent = ::SSL_write (this->ssl_, + int const bytes_sent = ::SSL_write (this->ssl_, static_cast<const char *> (buf), n); @@ -103,7 +103,7 @@ ACE_SSL_SOCK_Stream::recv_i (void *buf, // NOTE: Caller must provide thread-synchronization. int bytes_read = 0; - const ACE_HANDLE handle = this->get_handle (); + ACE_HANDLE const handle = this->get_handle (); // Value for current I/O mode (blocking/non-blocking) int val = 0; @@ -141,7 +141,7 @@ ACE_SSL_SOCK_Stream::recv_i (void *buf, n); } - const int status = ::SSL_get_error (this->ssl_, bytes_read); + int const status = ::SSL_get_error (this->ssl_, bytes_read); switch (status) { case SSL_ERROR_NONE: @@ -275,7 +275,7 @@ ACE_SSL_SOCK_Stream::close (void) // SSL_shutdown() returns 1 on successful shutdown of the SSL // connection, not 0. - const int status = ::SSL_shutdown (this->ssl_); + int const status = ::SSL_shutdown (this->ssl_); switch (::SSL_get_error (this->ssl_, status)) { diff --git a/ACE/ace/Sched_Params.cpp b/ACE/ace/Sched_Params.cpp index d650a37e18a..9a699c773f9 100644 --- a/ACE/ace/Sched_Params.cpp +++ b/ACE/ace/Sched_Params.cpp @@ -122,7 +122,11 @@ ACE_Sched_Params::priority_min (const Policy policy, #elif defined (ACE_VXWORKS) ACE_UNUSED_ARG (policy); ACE_UNUSED_ARG (scope); +# if defined (VX_TASK_PRIORITY_MAX) + return VX_TASK_PRIORITY_MAX; +# else return 255; +# endif #else ACE_UNUSED_ARG (policy); ACE_UNUSED_ARG (scope); @@ -222,7 +226,11 @@ ACE_Sched_Params::priority_max (const Policy policy, #elif defined (ACE_VXWORKS) ACE_UNUSED_ARG (policy); ACE_UNUSED_ARG (scope); +# if defined (VX_TASK_PRIORITY_MIN) + return VX_TASK_PRIORITY_MIN; +# else return 0; +# endif #else ACE_UNUSED_ARG (policy); ACE_UNUSED_ARG (scope); @@ -235,11 +243,7 @@ ACE_Sched_Params::next_priority (const Policy policy, const int priority, const int scope) { -#if defined (ACE_VXWORKS) - return priority > priority_max (policy, scope) - ? priority - 1 - : priority_max (policy, scope); -#elif defined (ACE_HAS_WTHREADS) +#if defined (ACE_HAS_WTHREADS) ACE_UNUSED_ARG (policy); ACE_UNUSED_ARG (scope); switch (priority) @@ -265,8 +269,12 @@ ACE_Sched_Params::next_priority (const Policy policy, (!defined(ACE_LACKS_SETSCHED) || defined (ACE_TANDEM_T1248_PTHREADS) || \ defined (ACE_HAS_PTHREAD_SCHEDPARAM)) // including STHREADS, and PTHREADS - const int max = priority_max (policy, scope); + int const max = priority_max (policy, scope); return priority < max ? priority + 1 : max; +#elif defined (ACE_VXWORKS) + return priority > priority_max (policy, scope) + ? priority - 1 + : priority_max (policy, scope); #else ACE_UNUSED_ARG (policy); ACE_UNUSED_ARG (scope); @@ -280,11 +288,7 @@ ACE_Sched_Params::previous_priority (const Policy policy, const int priority, const int scope) { -#if defined (ACE_VXWORKS) - return priority < priority_min (policy, scope) - ? priority + 1 - : priority_min (policy, scope); -#elif defined (ACE_HAS_WTHREADS) +#if defined (ACE_HAS_WTHREADS) ACE_UNUSED_ARG (policy); ACE_UNUSED_ARG (scope); switch (priority) @@ -310,9 +314,13 @@ ACE_Sched_Params::previous_priority (const Policy policy, (!defined(ACE_LACKS_SETSCHED) || defined (ACE_TANDEM_T1248_PTHREADS) || \ defined (ACE_HAS_PTHREAD_SCHEDPARAM)) // including STHREADS and PTHREADS - const int min = priority_min (policy, scope); + int const min = priority_min (policy, scope); return priority > min ? priority - 1 : min; +#elif defined (ACE_VXWORKS) + return priority < priority_min (policy, scope) + ? priority + 1 + : priority_min (policy, scope); #else ACE_UNUSED_ARG (policy); ACE_UNUSED_ARG (scope); diff --git a/ACE/ace/Select_Reactor_Base.cpp b/ACE/ace/Select_Reactor_Base.cpp index ae6ae6e410c..6fad8f4cc2a 100644 --- a/ACE/ace/Select_Reactor_Base.cpp +++ b/ACE/ace/Select_Reactor_Base.cpp @@ -686,17 +686,17 @@ ACE_Select_Reactor_Notify::notify (ACE_Event_Handler *event_handler, notification_queue_.push_new_notification(buffer); if (notification_required == -1) - { - return -1; - } + { + return -1; + } if (notification_required == 0) - { - // No failures, the handler is now owned by the notification queue - safe_handler.release (); + { + // No failures, the handler is now owned by the notification queue + safe_handler.release (); - return 0; - } + return 0; + } #endif /* ACE_HAS_REACTOR_NOTIFICATION_QUEUE */ ssize_t const n = ACE::send (this->notification_pipe_.write_handle (), @@ -810,8 +810,7 @@ ACE_Select_Reactor_Notify::dispatch_notify (ACE_Notification_Buffer &buffer) // we've been passed. if (buffer.eh_ != 0) { - ACE_Event_Handler *event_handler = - buffer.eh_; + ACE_Event_Handler *event_handler = buffer.eh_; bool const requires_reference_counting = event_handler->reference_counting_policy ().value () == diff --git a/ACE/ace/Select_Reactor_Base.inl b/ACE/ace/Select_Reactor_Base.inl index cfcb5349404..178a8373291 100644 --- a/ACE/ace/Select_Reactor_Base.inl +++ b/ACE/ace/Select_Reactor_Base.inl @@ -112,7 +112,7 @@ ACE_Event_Tuple::operator!= (const ACE_Event_Tuple &rhs) const return !(*this == rhs); } -#if defined (ACE_WIN32_VC8) +#if defined (ACE_WIN32_VC8) || defined (ACE_WIN32_VC9) # pragma warning (push) # pragma warning (disable:4355) /* Use of 'this' in initializer list */ #endif @@ -133,7 +133,7 @@ ACE_Select_Reactor_Impl::ACE_Select_Reactor_Impl (bool ms) , supress_renew_ (0) { } -#if defined (ACE_WIN32_VC8) +#if defined (ACE_WIN32_VC8) || defined (ACE_WIN32_VC9) # pragma warning (pop) #endif diff --git a/ACE/ace/Select_Reactor_T.cpp b/ACE/ace/Select_Reactor_T.cpp index 0831b77f7a9..0d94dffdba3 100644 --- a/ACE/ace/Select_Reactor_T.cpp +++ b/ACE/ace/Select_Reactor_T.cpp @@ -391,10 +391,7 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::open ACE_Sig_Handler, -1); - if (this->signal_handler_ == 0) - result = -1; - else - this->delete_signal_handler_ = 1; + this->delete_signal_handler_ = true; } // Allows the timer queue to be overridden. @@ -404,10 +401,7 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::open ACE_Timer_Heap, -1); - if (this->timer_queue_ == 0) - result = -1; - else - this->delete_timer_queue_ = true; + this->delete_timer_queue_ = true; } // Allows the Notify_Handler to be overridden. @@ -417,10 +411,7 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::open ACE_Select_Reactor_Notify, -1); - if (this->notify_handler_ == 0) - result = -1; - else - this->delete_notify_handler_ = true; + this->delete_notify_handler_ = true; } if (result != -1 && this->handler_rep_.open (size) == -1) @@ -982,7 +973,7 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::is_suspended_i (ACE_HANDLE handl return this->suspend_set_.rd_mask_.is_set (handle) || this->suspend_set_.wr_mask_.is_set (handle) || - this->suspend_set_.ex_mask_.is_set (handle) ; + this->suspend_set_.ex_mask_.is_set (handle); } @@ -1073,7 +1064,7 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::wait_for_multiple_events { ACE_TRACE ("ACE_Select_Reactor_T::wait_for_multiple_events"); ACE_Time_Value timer_buf (0); - ACE_Time_Value *this_timeout; + ACE_Time_Value *this_timeout = 0; int number_of_active_handles = this->any_ready (dispatch_set); diff --git a/ACE/ace/Service_Config.cpp b/ACE/ace/Service_Config.cpp index 22cf75a3b88..02fc863790c 100644 --- a/ACE/ace/Service_Config.cpp +++ b/ACE/ace/Service_Config.cpp @@ -47,7 +47,7 @@ ACE_Service_Config_Guard::ACE_Service_Config_Guard (ACE_Service_Gestalt * psg) { if (ACE::debug ()) ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("ACE (%P|%t) Service_Config_Guard:<ctor=%@>") + ACE_TEXT ("ACE (%P|%t) SCG:<ctor=%@>") ACE_TEXT (" - config=%@ repo=%@ superceded by repo=%@\n"), this, this->saved_, @@ -65,7 +65,7 @@ ACE_Service_Config_Guard::~ACE_Service_Config_Guard (void) if (ACE::debug ()) ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("ACE (%P|%t) Service_Config_Guard:<dtor=%@>") + ACE_TEXT ("ACE (%P|%t) SCG:<dtor=%@>") ACE_TEXT (" - new repo=%@\n"), this, this->saved_->repo_)); @@ -179,7 +179,7 @@ ACE_Service_Config::open_i (const ACE_TCHAR program_name[], if (ACE::debug ()) ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) SC::open_i - this=%@, opened=%d, ") + ACE_TEXT ("ACE (%P|%t) SC::open_i - this=%@, opened=%d, ") ACE_TEXT ("loadstatics=%d\n"), this, this->is_opened_, this->no_static_svcs_)); @@ -263,8 +263,9 @@ ACE_Service_Config::open_i (const ACE_TCHAR program_name[], { ACE_Sig_Set ss; ss.sig_add (ACE_Service_Config::signum_); - if (ACE_Reactor::instance ()->register_handler - (ss, ACE_Service_Config::signal_handler_) == -1) + if ((ACE_Reactor::instance () != 0) && + (ACE_Reactor::instance ()->register_handler + (ss, ACE_Service_Config::signal_handler_) == -1)) ACE_ERROR ((LM_ERROR, ACE_TEXT ("can't register signal handler\n"))); } @@ -326,7 +327,7 @@ ACE_Service_Config::static_svcs (void) return ACE_Service_Config::instance (); } -/// Return the global configuration instance. Allways returns the same +/// Return the global configuration instance. Always returns the same /// instance ACE_Service_Config * ACE_Service_Config::global (void) @@ -380,6 +381,9 @@ ACE_Service_Config::ACE_Service_Config (bool ignore_static_svcs, : ACE_Service_Gestalt (size, false, ignore_static_svcs) { ACE_TRACE ("ACE_Service_Config::ACE_Service_Config"); +#if defined (ACE_HAS_TSS_EMULATION) + ACE_Object_Manager::init_tss (); +#endif this->tss_.ts_object (this); ACE_Service_Config::signum_ = signum; } @@ -447,7 +451,9 @@ ACE_Service_Config::ACE_Service_Config (const ACE_TCHAR program_name[], : ACE_Service_Gestalt (ACE_Service_Repository::DEFAULT_SIZE, false) { ACE_TRACE ("ACE_Service_Config::ACE_Service_Config"); - +#if defined (ACE_HAS_TSS_EMULATION) + ACE_Object_Manager::init_tss (); +#endif this->tss_.ts_object (this); if (this->open (program_name, logger_key) == -1 && errno != ENOENT) diff --git a/ACE/ace/Service_Config.inl b/ACE/ace/Service_Config.inl index 582d4a3cb68..1cc6e35fe1d 100644 --- a/ACE/ace/Service_Config.inl +++ b/ACE/ace/Service_Config.inl @@ -51,7 +51,6 @@ ACE_Service_Config::parse_args (int argc, ACE_TCHAR *argv[]) return ACE_Service_Config::current ()->parse_args (argc, argv); } - /// Return the configuration instance, considered "global" in the /// current thread. This may be the same as instance(), but on some /// occasions, it may be a different one. For example, @@ -63,7 +62,6 @@ ACE_Service_Config::instance (void) return ACE_Service_Config::global ()->tss_; } - /// Return the configuration instance, considered "global" in the /// current thread. This may be the same as instance(), but on some /// occasions, it may be a different one. For example, @@ -83,16 +81,14 @@ ACE_Service_Config::current (ACE_Service_Gestalt *newcurrent) } -// Compare two service descriptors for equality. - +/// Compare two service descriptors for equality. ACE_INLINE bool ACE_Static_Svc_Descriptor::operator== (ACE_Static_Svc_Descriptor &d) const { return ACE_OS::strcmp (name_, d.name_) == 0; } -// Compare two service descriptors for inequality. - +/// Compare two service descriptors for inequality. ACE_INLINE bool ACE_Static_Svc_Descriptor::operator!= (ACE_Static_Svc_Descriptor &d) const { @@ -105,8 +101,7 @@ ACE_Service_Config::signal_handler (ACE_Sig_Adapter *signal_handler) signal_handler_ = signal_handler; } -// Initialize and activate a statically linked service. - +/// Initialize and activate a statically linked service. ACE_INLINE int ACE_Service_Config::initialize (const ACE_TCHAR *svc_name, const ACE_TCHAR *parameters) @@ -116,9 +111,8 @@ ACE_Service_Config::initialize (const ACE_TCHAR *svc_name, parameters); } -// Dynamically link the shared object file and retrieve a pointer to -// the designated shared object in this file. - +/// Dynamically link the shared object file and retrieve a pointer to +/// the designated shared object in this file. ACE_INLINE int ACE_Service_Config::initialize (const ACE_Service_Type *sr, const ACE_TCHAR *parameters) @@ -142,8 +136,8 @@ ACE_Service_Config::process_directive (const ACE_TCHAR directive[]) return ACE_Service_Config::current ()->process_directive (directive); } -// Process service configuration requests as indicated in the queue of -// svc.conf files. +/// Process service configuration requests as indicated in the queue of +/// svc.conf files. ACE_INLINE int ACE_Service_Config::process_directives (void) { diff --git a/ACE/ace/Svc_Conf.h b/ACE/ace/Svc_Conf.h index a62da127abf..2038519c6f7 100644 --- a/ACE/ace/Svc_Conf.h +++ b/ACE/ace/Svc_Conf.h @@ -36,14 +36,7 @@ ACE_BEGIN_VERSIONED_NAMESPACE_DECL // The following yylex() declarations require support for reentrant // parser generation (e.g. from GNU Bison). -#if defined (DEBUGGING) -#if defined (ACE_YY_DECL) -#undef ACE_YY_DECL -#endif /* ACE_YY_DECL */ -#define ACE_YY_DECL extern "C" char *ace_yylex (ACE_YYSTYPE *ace_yylval, void *ACE_YYLEX_PARAM) -#else #define ACE_YY_DECL extern "C" int ace_yylex (ACE_YYSTYPE *ace_yylval, void *ACE_YYLEX_PARAM) -#endif /* DEBUGGING */ // Forward declarations class ACE_Location_Node; diff --git a/ACE/ace/Svc_Conf.y b/ACE/ace/Svc_Conf.y index 87e44928bc2..6b8ee2a1ad7 100644 --- a/ACE/ace/Svc_Conf.y +++ b/ACE/ace/Svc_Conf.y @@ -63,7 +63,7 @@ svc_config_entries { if ($2 != 0) { - $2->apply (ACE_SVC_CONF_PARAM->config, ACE_SVC_CONF_PARAM->yyerrno); + $2->apply (ACE_SVC_CONF_PARAM->config, ACE_SVC_CONF_PARAM->yyerrno); delete $2; } ACE_SVC_CONF_PARAM->obstack.release (); @@ -404,13 +404,13 @@ ace_get_module (ACE_Service_Type const * sr, return const_cast<ACE_Module_Type *> (mt); } -#if defined (DEBUGGING) +#if defined (SVC_CONF_Y_DEBUGGING) // Main driver program. int main (int argc, char *argv[]) { - ACE_Svc_Conf_Param param (stdin); + ACE_Svc_Conf_Param param (0, stdin); // Try to reopen any filename argument to use YYIN. if (argc > 1 && (yyin = freopen (argv[1], "r", stdin)) == 0) @@ -418,7 +418,7 @@ main (int argc, char *argv[]) return ::yyparse (¶m); } -#endif /* DEBUGGING */ +#endif /* SVC_CONF_Y_DEBUGGING */ ACE_END_VERSIONED_NAMESPACE_DECL diff --git a/ACE/ace/Svc_Conf_y.cpp b/ACE/ace/Svc_Conf_y.cpp index d4cee59ec0e..3aa03876a5c 100644 --- a/ACE/ace/Svc_Conf_y.cpp +++ b/ACE/ace/Svc_Conf_y.cpp @@ -1,5 +1,5 @@ /* A Bison parser, made by GNU Bison 2.0. */ - + /* Skeleton parser for Yacc-like parsing with Bison, Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. @@ -1738,21 +1738,21 @@ ace_get_module (ACE_Service_Type const * sr, return const_cast<ACE_Module_Type *> (mt); } -#if defined (DEBUGGING) +#if defined (SVC_CONF_Y_DEBUGGING) // Main driver program. int main (int argc, char *argv[]) { - ACE_Svc_Conf_Param param (stdin); + ACE_Svc_Conf_Param param (0, stdin); // Try to reopen any filename argument to use ACE_YYIN. if (argc > 1 && (ace_yyin = freopen (argv[1], "r", stdin)) == 0) - (void) ACE_OS::ACE_OS::fprintf (stderr, ACE_TEXT ("usage: %s [file]\n"), argv[0]), ACE_OS::exit (1); + (void) ACE_OS::fprintf (stderr, ACE_TEXT ("usage: %s [file]\n"), argv[0]), ACE_OS::exit (1); return ::ace_yyparse (¶m); } -#endif /* DEBUGGING */ +#endif /* SVC_CONF_Y_DEBUGGING */ ACE_END_VERSIONED_NAMESPACE_DECL diff --git a/ACE/ace/TP_Reactor.cpp b/ACE/ace/TP_Reactor.cpp index ccc8c5383c6..4216fa3db15 100644 --- a/ACE/ace/TP_Reactor.cpp +++ b/ACE/ace/TP_Reactor.cpp @@ -170,20 +170,18 @@ ACE_TP_Reactor::handle_events (ACE_Time_Value *max_wait_time) // Update the countdown to reflect time waiting for the token. countdown.update (); - return this->dispatch_i (max_wait_time, - guard); + return this->dispatch_i (max_wait_time, guard); } int ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, ACE_TP_Token_Guard &guard) { - int event_count = - this->get_event_for_dispatching (max_wait_time); + int event_count = this->get_event_for_dispatching (max_wait_time); // We use this count to detect potential infinite loops as described // in bug 2540. - int initial_event_count = event_count; + int const initial_event_count = event_count; int result = 0; @@ -205,8 +203,7 @@ ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, // now is not the right thing... // // @@ We need to do better.. - return this->handle_signals (event_count, - guard); + return this->handle_signals (event_count, guard); } #endif // #if 0 @@ -221,8 +218,7 @@ ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, // need to do that. In the future we *may* have the timers also // returned through the <event_count>. Just passing that along for // that day. - result = this->handle_timer_events (event_count, - guard); + result = this->handle_timer_events (event_count, guard); if (result > 0) return result; @@ -234,8 +230,7 @@ ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, // Next dispatch the notification handlers (if there are any to // dispatch). These are required to handle multiple-threads // that are trying to update the <Reactor>. - result = this->handle_notify_events (event_count, - guard); + result = this->handle_notify_events (event_count, guard); if (result > 0) return result; @@ -246,12 +241,10 @@ ACE_TP_Reactor::dispatch_i (ACE_Time_Value *max_wait_time, if (event_count > 0) { // Handle socket events - result = this->handle_socket_events (event_count, - guard); + result = this->handle_socket_events (event_count, guard); } - if (event_count != 0 - && event_count == initial_event_count) + if (event_count != 0 && event_count == initial_event_count) { this->state_changed_ = true; } @@ -327,27 +320,21 @@ ACE_TP_Reactor::handle_timer_events (int & /*event_count*/, // time. ACE_Timer_Node_Dispatch_Info info; - if (this->timer_queue_->dispatch_info (cur_time, - info)) + if (this->timer_queue_->dispatch_info (cur_time, info)) { const void *upcall_act = 0; // Preinvoke. - this->timer_queue_->preinvoke (info, - cur_time, - upcall_act); + this->timer_queue_->preinvoke (info, cur_time, upcall_act); // Release the token before dispatching notifies... guard.release_token (); // call the functor - this->timer_queue_->upcall (info, - cur_time); + this->timer_queue_->upcall (info, cur_time); // Postinvoke - this->timer_queue_->postinvoke (info, - cur_time, - upcall_act); + this->timer_queue_->postinvoke (info, cur_time, upcall_act); // We have dispatched a timer return 1; @@ -361,8 +348,7 @@ ACE_TP_Reactor::handle_notify_events (int & /*event_count*/, ACE_TP_Token_Guard &guard) { // Get the handle on which notify calls could have occured - ACE_HANDLE notify_handle = - this->get_notify_handle (); + ACE_HANDLE notify_handle = this->get_notify_handle (); int result = 0; @@ -379,8 +365,7 @@ ACE_TP_Reactor::handle_notify_events (int & /*event_count*/, // Keep reading notifies till we empty it or till we have a // dispatchable buffer - while (this->notify_handler_->read_notify_pipe (notify_handle, - buffer) > 0) + while (this->notify_handler_->read_notify_pipe (notify_handle, buffer) > 0) { // Just figure out whether we can read any buffer that has // dispatchable info. If not we have just been unblocked by @@ -488,8 +473,7 @@ ACE_TP_Reactor::get_event_for_dispatching (ACE_Time_Value *max_wait_time) this->ready_set_.ex_mask_.sync (this->ready_set_.ex_mask_.max_set ()); } - return this->wait_for_multiple_events (this->ready_set_, - max_wait_time); + return this->wait_for_multiple_events (this->ready_set_, max_wait_time); } int diff --git a/ACE/ace/Task.cpp b/ACE/ace/Task.cpp index 59e97364122..24cd50da148 100644 --- a/ACE/ace/Task.cpp +++ b/ACE/ace/Task.cpp @@ -19,11 +19,11 @@ ACE_Task_Base::ACE_Task_Base (ACE_Thread_Manager *thr_man) thr_mgr_ (thr_man), flags_ (0), grp_id_ (-1) -#if !defined (ACE_MVS) +#if !(defined (ACE_MVS) || defined(__TANDEM)) ,last_thread_id_ (0) #endif /* !defined (ACE_MVS) */ { -#if defined (ACE_MVS) +#if (defined (ACE_MVS) || defined(__TANDEM)) ACE_OS::memset( &this->last_thread_id_, '\0', sizeof( this->last_thread_id_ )); #endif /* defined (ACE_MVS) */ } @@ -126,7 +126,8 @@ ACE_Task_Base::activate (long flags, ACE_hthread_t thread_handles[], void *stack[], size_t stack_size[], - ACE_thread_t thread_ids[]) + ACE_thread_t thread_ids[], + const char* thr_name[]) { ACE_TRACE ("ACE_Task_Base::activate"); @@ -171,7 +172,8 @@ ACE_Task_Base::activate (long flags, task, thread_handles, stack, - stack_size); + stack_size, + thr_name); else // thread names were specified grp_spawned = @@ -185,7 +187,8 @@ ACE_Task_Base::activate (long flags, stack, stack_size, thread_handles, - task); + task, + thr_name); if (grp_spawned == -1) { // If spawn_n fails, restore original thread count. @@ -196,7 +199,7 @@ ACE_Task_Base::activate (long flags, if (this->grp_id_ == -1) this->grp_id_ = grp_spawned; -#if defined (ACE_MVS) +#if defined (ACE_MVS) || defined(__TANDEM) ACE_OS::memcpy( &this->last_thread_id_, '\0', sizeof(this->last_thread_id_)); #else this->last_thread_id_ = 0; // Reset to prevent inadvertant match on ID @@ -217,6 +220,7 @@ ACE_Task_Base::activate (long flags, ACE_UNUSED_ARG (stack); ACE_UNUSED_ARG (stack_size); ACE_UNUSED_ARG (thread_ids); + ACE_UNUSED_ARG (thr_name); ACE_NOTSUP_RETURN (-1); } #endif /* ACE_MT_SAFE */ @@ -270,7 +274,7 @@ ACE_Task_Base::svc_run (void *args) // Call the Task's svc() hook method. int svc_status = t->svc (); ACE_THR_FUNC_RETURN status; -#if (defined (__BORLANDC__) && (__BORLANDC__ < 0x600)) || defined (__MINGW32__) || (defined (_MSC_VER) && (_MSC_VER <= 1500)) || (defined (ACE_WIN32) && defined (__DCC__)) +#if (defined (__BORLANDC__) && (__BORLANDC__ < 0x600)) || defined (__MINGW32__) || (defined (_MSC_VER) && (_MSC_VER <= 1500)) || (defined (ACE_WIN32) && defined (__DCC__)) || (defined (ACE_VXWORKS) && (ACE_VXWORKS == 0x660) && defined (ACE_HAS_VXTHREADS)) // Some compilers complain about reinterpret_cast from int to unsigned long... status = static_cast<ACE_THR_FUNC_RETURN> (svc_status); #else diff --git a/ACE/ace/Task.h b/ACE/ace/Task.h index b289f4e756f..757cf651323 100644 --- a/ACE/ace/Task.h +++ b/ACE/ace/Task.h @@ -185,7 +185,8 @@ public: ACE_hthread_t thread_handles[] = 0, void *stack[] = 0, size_t stack_size[] = 0, - ACE_thread_t thread_ids[] = 0); + ACE_thread_t thread_ids[] = 0, + const char* thr_name[] = 0); /** * Block until there are no more threads running in this task. diff --git a/ACE/ace/Thread.cpp b/ACE/ace/Thread.cpp index ffdf195c40c..fab00ea5e6b 100644 --- a/ACE/ace/Thread.cpp +++ b/ACE/ace/Thread.cpp @@ -22,7 +22,8 @@ ACE_Thread::spawn_n (size_t n, long priority, void *stack[], size_t stack_size[], - ACE_Thread_Adapter *thread_adapter) + ACE_Thread_Adapter *thread_adapter, + const char* thr_name[]) { ACE_TRACE ("ACE_Thread::spawn_n"); ACE_thread_t t_id; @@ -38,7 +39,8 @@ ACE_Thread::spawn_n (size_t n, priority, stack == 0 ? 0 : stack[i], stack_size == 0 ? ACE_DEFAULT_THREAD_STACKSIZE : stack_size[i], - thread_adapter) != 0) + thread_adapter, + thr_name == 0 ? 0 : &thr_name[i]) != 0) break; return i; @@ -54,17 +56,18 @@ ACE_Thread::spawn_n (ACE_thread_t thread_ids[], void *stack[], size_t stack_size[], ACE_hthread_t thread_handles[], - ACE_Thread_Adapter *thread_adapter) + ACE_Thread_Adapter *thread_adapter, + const char* thr_name[]) { ACE_TRACE ("ACE_Thread::spawn_n"); - size_t i; + size_t i = 0; for (i = 0; i < n; i++) { ACE_thread_t t_id; ACE_hthread_t t_handle; - int result = + int const result = ACE_OS::thr_create (func, arg, flags, @@ -73,7 +76,8 @@ ACE_Thread::spawn_n (ACE_thread_t thread_ids[], priority, stack == 0 ? 0 : stack[i], stack_size == 0 ? ACE_DEFAULT_THREAD_STACKSIZE : stack_size[i], - thread_adapter); + thread_adapter, + thr_name == 0 ? 0 : &thr_name[i]); if (result == 0) { diff --git a/ACE/ace/Thread.h b/ACE/ace/Thread.h index f343a05484a..9800997df16 100644 --- a/ACE/ace/Thread.h +++ b/ACE/ace/Thread.h @@ -89,7 +89,8 @@ public: long priority = ACE_DEFAULT_THREAD_PRIORITY, void *stack = 0, size_t stack_size = ACE_DEFAULT_THREAD_STACKSIZE, - ACE_Thread_Adapter *thread_adapter = 0); + ACE_Thread_Adapter *thread_adapter = 0, + const char** thr_name = 0); /** * Spawn N new threads, which execute @a func with argument @a arg (if @@ -112,12 +113,13 @@ public: long priority = ACE_DEFAULT_THREAD_PRIORITY, void *stack[] = 0, size_t stack_size[] = 0, - ACE_Thread_Adapter *thread_adapter = 0); + ACE_Thread_Adapter *thread_adapter = 0, + const char* thr_name[] = 0); /** - * Spawn @a n new threads, which execute @a func with argument <arg> - * (if <thread_adapter> is non-0 then @a func and <args> are ignored - * and are obtained from <thread_adapter>). The thread_ids of + * Spawn @a n new threads, which execute @a func with argument @a arg + * (if @a thread_adapter is non-0 then @a func and @a args are ignored + * and are obtained from @a thread_adapter). The thread_ids of * successfully spawned threads will be placed into the <thread_ids> * buffer (which must be the same size as @a n). If @a stack != 0 it * is assumed to be an array of @a n pointers to the base of the @@ -141,7 +143,8 @@ public: void *stack[] = 0, size_t stack_size[] = 0, ACE_hthread_t thread_handles[] = 0, - ACE_Thread_Adapter *thread_adapter = 0); + ACE_Thread_Adapter *thread_adapter = 0, + const char* thr_name[] = 0); /** * Wait for one or more threads to exit and reap their exit status. diff --git a/ACE/ace/Thread.inl b/ACE/ace/Thread.inl index ba635c6b2f0..6c292ab27cd 100644 --- a/ACE/ace/Thread.inl +++ b/ACE/ace/Thread.inl @@ -82,7 +82,8 @@ ACE_Thread::spawn (ACE_THR_FUNC func, long priority, void *thr_stack, size_t thr_stack_size, - ACE_Thread_Adapter *thread_adapter) + ACE_Thread_Adapter *thread_adapter, + const char** thr_name) { ACE_TRACE ("ACE_Thread::spawn"); @@ -94,7 +95,8 @@ ACE_Thread::spawn (ACE_THR_FUNC func, priority, thr_stack, thr_stack_size, - thread_adapter); + thread_adapter, + thr_name); } ACE_INLINE int diff --git a/ACE/ace/Thread_Manager.cpp b/ACE/ace/Thread_Manager.cpp index 569850554df..f9a6b934bde 100644 --- a/ACE/ace/Thread_Manager.cpp +++ b/ACE/ace/Thread_Manager.cpp @@ -550,7 +550,8 @@ ACE_Thread_Manager::spawn_i (ACE_THR_FUNC func, int grp_id, void *stack, size_t stack_size, - ACE_Task_Base *task) + ACE_Task_Base *task, + const char** thr_name) { // First, threads created by Thread Manager should not be daemon threads. // Using assertion is probably a bit too strong. However, it helps @@ -591,23 +592,6 @@ ACE_Thread_Manager::spawn_i (ACE_THR_FUNC func, ACE_TRACE ("ACE_Thread_Manager::spawn_i"); ACE_hthread_t thr_handle; -#if defined (ACE_HAS_VXTHREADS) - if (t_handle != 0) - { - thr_handle = *t_handle; - } - else - { - ACE_NEW_RETURN (thr_handle, - char[16], - -1); - // Mark the thread ID to show that the ACE_Thread_Manager - // allocated it. - thr_handle[0] = ACE_THR_ID_ALLOCATED; - thr_handle[1] = '\0'; - } -#endif /* !ACE_HAS_VXTHREADS */ - ACE_thread_t thr_id; if (t_id == 0) t_id = &thr_id; @@ -625,7 +609,8 @@ ACE_Thread_Manager::spawn_i (ACE_THR_FUNC func, priority, stack, stack_size, - thread_args); + thread_args, + thr_name); if (result != 0) { @@ -680,7 +665,8 @@ ACE_Thread_Manager::spawn (ACE_THR_FUNC func, long priority, int grp_id, void *stack, - size_t stack_size) + size_t stack_size, + const char** thr_name) { ACE_TRACE ("ACE_Thread_Manager::spawn"); @@ -701,7 +687,8 @@ ACE_Thread_Manager::spawn (ACE_THR_FUNC func, grp_id, stack, stack_size, - 0) == -1) + 0, + thr_name) == -1) return -1; return grp_id; @@ -719,7 +706,8 @@ ACE_Thread_Manager::spawn_n (size_t n, ACE_Task_Base *task, ACE_hthread_t thread_handles[], void *stack[], - size_t stack_size[]) + size_t stack_size[], + const char* thr_name[]) { ACE_TRACE ("ACE_Thread_Manager::spawn_n"); ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1)); @@ -740,7 +728,8 @@ ACE_Thread_Manager::spawn_n (size_t n, grp_id, stack == 0 ? 0 : stack[i], stack_size == 0 ? ACE_DEFAULT_THREAD_STACKSIZE : stack_size[i], - task) == -1) + task, + thr_name == 0 ? 0 : &thr_name [i]) == -1) return -1; } @@ -760,7 +749,8 @@ ACE_Thread_Manager::spawn_n (ACE_thread_t thread_ids[], void *stack[], size_t stack_size[], ACE_hthread_t thread_handles[], - ACE_Task_Base *task) + ACE_Task_Base *task, + const char* thr_name[]) { ACE_TRACE ("ACE_Thread_Manager::spawn_n"); ACE_MT (ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1)); @@ -781,7 +771,8 @@ ACE_Thread_Manager::spawn_n (ACE_thread_t thread_ids[], grp_id, stack == 0 ? 0 : stack[i], stack_size == 0 ? ACE_DEFAULT_THREAD_STACKSIZE : stack_size[i], - task) == -1) + task, + thr_name == 0 ? 0 : &thr_name [i]) == -1) return -1; } @@ -924,14 +915,6 @@ ACE_Thread_Manager::remove_thr (ACE_Thread_Descriptor *td, td->tm_ = 0; this->thr_list_.remove (td); -#if defined (ACE_HAS_VXTHREADS) - // Delete the thread ID, if the ACE_Thread_Manager allocated it. - if (td->thr_handle_ && td->thr_handle_[0] == ACE_THR_ID_ALLOCATED) - { - delete [] td->thr_handle_; - } -#endif /* ACE_HAS_VXTHREADS */ - #if defined (ACE_WIN32) if (close_handler != 0) ::CloseHandle (td->thr_handle_); @@ -1429,12 +1412,6 @@ ACE_Thread_Manager::join (ACE_thread_t tid, ACE_THR_FUNC_RETURN *status) # endif /* ! _AIX */ return -1; -# if defined (ACE_HAS_PTHREADS_DRAFT4) && defined (ACE_LACKS_SETDETACH) - // Must explicitly detach threads. Threads without THR_DETACHED - // were detached in ACE_OS::thr_create (). - ::pthread_detach (&tdb->thr_handle_); -# endif /* ACE_HAS_PTHREADS_DRAFT4 && ACE_LACKS_SETDETACH */ - delete tdb; return 0; // return immediately if we've found the thread we want to join. @@ -1475,12 +1452,6 @@ ACE_Thread_Manager::join (ACE_thread_t tid, ACE_THR_FUNC_RETURN *status) # endif /* ! _AIX */ return -1; -# if defined (ACE_HAS_PTHREADS_DRAFT4) && defined (ACE_LACKS_SETDETACH) - // Must explicitly detach threads. Threads without THR_DETACHED - // were detached in ACE_OS::thr_create (). - - ::pthread_detach (&tdb.thr_handle_); -# endif /* ACE_HAS_PTHREADS_DRAFT4 && ACE_LACKS_SETDETACH */ return 0; } @@ -1548,12 +1519,6 @@ ACE_Thread_Manager::wait_grp (int grp_id) { if (ACE_Thread::join (copy_table[i].thr_handle_) == -1) result = -1; - -# if defined (ACE_HAS_PTHREADS_DRAFT4) && defined (ACE_LACKS_SETDETACH) - // Must explicitly detach threads. Threads without THR_DETACHED - // were detached in ACE_OS::thr_create (). - ::pthread_detach (©_table[i].thr_handle_); -# endif /* ACE_HAS_PTHREADS_DRAFT4 && ACE_LACKS_SETDETACH */ } delete [] copy_table; @@ -1565,13 +1530,13 @@ ACE_Thread_Manager::wait_grp (int grp_id) // slot. ACE_THR_FUNC_RETURN -ACE_Thread_Manager::exit (ACE_THR_FUNC_RETURN status, int do_thr_exit) +ACE_Thread_Manager::exit (ACE_THR_FUNC_RETURN status, bool do_thread_exit) { ACE_TRACE ("ACE_Thread_Manager::exit"); #if defined (ACE_WIN32) // Remove detached thread handle. - if (do_thr_exit) + if (do_thread_exit) { #if 0 // @@ This callback is now taken care of by TSS_Cleanup. Do we @@ -1595,7 +1560,7 @@ ACE_Thread_Manager::exit (ACE_THR_FUNC_RETURN status, int do_thr_exit) // Find the thread id, but don't use the cache. It might have been // deleted already. - ACE_thread_t id = ACE_OS::thr_self (); + ACE_thread_t const id = ACE_OS::thr_self (); ACE_Thread_Descriptor* td = this->find_thread (id); if (td != 0) { @@ -1605,7 +1570,7 @@ ACE_Thread_Manager::exit (ACE_THR_FUNC_RETURN status, int do_thr_exit) } } - if (do_thr_exit) + if (do_thread_exit) { ACE_Thread::exit (status); // On reasonable systems <ACE_Thread::exit> should not return. @@ -1700,11 +1665,6 @@ ACE_Thread_Manager::wait (const ACE_Time_Value *timeout, // Detached handles shouldn't reached here. (void) ACE_Thread::join (item->thr_handle_); -# if defined (ACE_HAS_PTHREADS_DRAFT4) && defined (ACE_LACKS_SETDETACH) - // Must explicitly detach threads. Threads without - // THR_DETACHED were detached in ACE_OS::thr_create (). - ::pthread_detach (&item->thr_handle_); -# endif /* ACE_HAS_PTHREADS_DRAFT4 && ACE_LACKS_SETDETACH */ delete item; } @@ -1817,12 +1777,6 @@ ACE_Thread_Manager::wait_task (ACE_Task_Base *task) { if (ACE_Thread::join (copy_table[i].thr_handle_) == -1) result = -1; - -# if defined (ACE_HAS_PTHREADS_DRAFT4) && defined (ACE_LACKS_SETDETACH) - // Must explicitly detach threads. Threads without THR_DETACHED - // were detached in ACE_OS::thr_create (). - ::pthread_detach (©_table[i].thr_handle_); -# endif /* ACE_HAS_PTHREADS_DRAFT4 && ACE_LACKS_SETDETACH */ } delete [] copy_table; diff --git a/ACE/ace/Thread_Manager.h b/ACE/ace/Thread_Manager.h index cd7b477816a..bccfab12e1e 100644 --- a/ACE/ace/Thread_Manager.h +++ b/ACE/ace/Thread_Manager.h @@ -461,22 +461,8 @@ public: */ int close (void); - // The <ACE_thread_t> * argument to each of the <spawn> family member - // functions is interpreted and used as shown in the following - // table. NOTE: the final option, to provide task names, is _only_ - // supported on VxWorks! - // - // Value of ACE_thread_t * argument Use Platforms - // ================================ ========================== ========= - // 0 Not used. All - // non-0 (and points to 0 char * The task name is passed All - // on VxWorks) back in the char *. - // non-0, points to non-0 char * The char * is used as VxWorks only - // the task name. The - // argument is not modified. - /** - * Create a new thread, which executes @a func with argument <arg>. + * Create a new thread, which executes @a func with argument @a arg. * Returns: on success a unique group id that can be used to control * other threads added to the same group. On failure, returns -1. */ @@ -488,10 +474,11 @@ public: long priority = ACE_DEFAULT_THREAD_PRIORITY, int grp_id = -1, void *stack = 0, - size_t stack_size = ACE_DEFAULT_THREAD_STACKSIZE); + size_t stack_size = ACE_DEFAULT_THREAD_STACKSIZE, + const char** thr_name = 0); /** - * Spawn N new threads, which execute @a func with argument <arg>. + * Spawn N new threads, which execute @a func with argument @a arg. * If <thread_ids> != 0 the thread_ids of successfully spawned * threads will be placed into the <thread_ids> buffer (which must * be the same size as @a n). If @a stack != 0 it is assumed to be an @@ -528,10 +515,11 @@ public: ACE_Task_Base *task = 0, ACE_hthread_t thread_handles[] = 0, void *stack[] = 0, - size_t stack_size[] = 0); + size_t stack_size[] = 0, + const char* thr_name[] = 0); /** - * Spawn N new threads, which execute @a func with argument <arg>. + * Spawn N new threads, which execute @a func with argument @a arg. * If <thread_ids> != 0 the thread_ids of successfully spawned * threads will be placed into the <thread_ids> buffer (which must * be the same size as @a n). If @a stack != 0 it is assumed to be an @@ -569,7 +557,8 @@ public: void *stack[] = 0, size_t stack_size[] = 0, ACE_hthread_t thread_handles[] = 0, - ACE_Task_Base *task = 0); + ACE_Task_Base *task = 0, + const char* thr_name[] = 0); /** * Called to clean up when a thread exits. @@ -581,7 +570,7 @@ public: * Should _not_ be called by main thread. */ ACE_THR_FUNC_RETURN exit (ACE_THR_FUNC_RETURN status = 0, - int do_thread_exit = 1); + bool do_thread_exit = true); /** * Block until there are no more threads running in this thread @@ -590,7 +579,7 @@ public: * @param timeout is treated as "absolute" time by default, but this * can be changed to "relative" time by setting the @c * use_absolute_time to false. - * @param abandon_detached_threads If non-0, @c wait() will first + * @param abandon_detached_threads If true, @c wait() will first * check thru its thread list for * threads with THR_DETACHED or * THR_DAEMON flags set and remove @@ -602,11 +591,11 @@ public: * flags are set or not unless it is * called with @c * abandon_detached_threads flag set. - * @param use_absolute_time If non-0 then treat @c timeout as + * @param use_absolute_time If true then treat @c timeout as * absolute time, else relative time. * @return 0 on success * and -1 on failure. * - * NOTE that if this function is called while the @c + * @note If this function is called while the @c * ACE_Object_Manager is shutting down (as a result of program * rundown via @c ACE::fini()), it will not wait for any threads to * complete. If you must wait for threads spawned by this thread @@ -618,7 +607,7 @@ public: bool abandon_detached_threads = false, bool use_absolute_time = true); - /// Join a thread specified by <tid>. Do not wait on a detached thread. + /// Join a thread specified by @a tid. Do not wait on a detached thread. int join (ACE_thread_t tid, ACE_THR_FUNC_RETURN *status = 0); /** @@ -665,8 +654,8 @@ public: int suspend_grp (int grp_id); /** - * True if <t_id> is inactive (i.e., suspended), else false. Always - * return false if <t_id> is not managed by the Thread_Manager. + * True if @a t_id is inactive (i.e., suspended), else false. Always + * return false if @a t_id is not managed by the Thread_Manager. */ int testsuspend (ACE_thread_t t_id); @@ -681,8 +670,8 @@ public: int resume_grp (int grp_id); /** - * True if <t_id> is active (i.e., resumed), else false. Always - * return false if <t_id> is not managed by the Thread_Manager. + * True if @a t_id is active (i.e., resumed), else false. Always + * return false if @a t_id is not managed by the Thread_Manager. */ int testresume (ACE_thread_t t_id); @@ -690,16 +679,18 @@ public: /** * Send @a signum to all stopped threads. Not supported on platforms * that do not have advanced signal support, such as Win32. + */ + int kill_all (int signum); + /** * Send the @a signum to a single thread. Not supported on platforms * that do not have advanced signal support, such as Win32. + */ + int kill (ACE_thread_t, int signum); + /** * Send @a signum to a group of threads, not supported on platforms * that do not have advanced signal support, such as Win32. */ - int kill_all (int signum); - int kill (ACE_thread_t, - int signum); - int kill_grp (int grp_id, - int signum); + int kill_grp (int grp_id, int signum); // = Cancel methods, which provides a cooperative thread-termination mechanism (will not block). /** @@ -718,15 +709,15 @@ public: int cancel_grp (int grp_id, int async_cancel = 0); /** - * True if <t_id> is cancelled, else false. Always return false if - * <t_id> is not managed by the Thread_Manager. + * True if @a t_id is cancelled, else false. Always return false if + * @a t_id is not managed by the Thread_Manager. */ int testcancel (ACE_thread_t t_id); /** - * True if <t_id> has terminated (i.e., is no longer running), + * True if @a t_id has terminated (i.e., is no longer running), * but the slot in the thread manager hasn't been reclaimed yet, - * else false. Always return false if <t_id> is not managed by the + * else false. Always return false if @a t_id is not managed by the * Thread_Manager. */ int testterminate (ACE_thread_t t_id); @@ -773,8 +764,7 @@ public: /** * Send a signal @a signum to all threads in an ACE_Task. */ - int kill_task (ACE_Task_Base *task, - int signum); + int kill_task (ACE_Task_Base *task, int signum); /** * Cancel all threads in an ACE_Task. If <async_cancel> is non-0, @@ -987,7 +977,8 @@ protected: int grp_id = -1, void *stack = 0, size_t stack_size = 0, - ACE_Task_Base *task = 0); + ACE_Task_Base *task = 0, + const char** thr_name = 0); /// Run the registered hooks when the thread exits. void run_thread_exit_hooks (int i); diff --git a/ACE/ace/Timer_Queue_Adapters.cpp b/ACE/ace/Timer_Queue_Adapters.cpp index fff641ce613..96010773ad2 100644 --- a/ACE/ace/Timer_Queue_Adapters.cpp +++ b/ACE/ace/Timer_Queue_Adapters.cpp @@ -300,7 +300,8 @@ ACE_Thread_Timer_Queue_Adapter<TQ>::activate (long flags, ACE_hthread_t [], void *stack[], size_t stack_size[], - ACE_thread_t thread_names[]) + ACE_thread_t thread_ids[], + const char* thr_name[]) { // Make sure to set this flag in case we were deactivated earlier. this->active_ = true; @@ -308,7 +309,7 @@ ACE_Thread_Timer_Queue_Adapter<TQ>::activate (long flags, // Make sure that we only allow a single thread to be spawned for // our adapter. Otherwise, too many weird things can happen. return ACE_Task_Base::activate (flags, 1, 0, priority, grp_id, task, 0, - stack, stack_size, thread_names); + stack, stack_size, thread_ids, thr_name); } # if defined (ACE_HAS_DEFERRED_TIMER_COMMANDS) diff --git a/ACE/ace/Timer_Queue_Adapters.h b/ACE/ace/Timer_Queue_Adapters.h index 96b7e33db24..08ea47075f3 100644 --- a/ACE/ace/Timer_Queue_Adapters.h +++ b/ACE/ace/Timer_Queue_Adapters.h @@ -186,7 +186,8 @@ public: ACE_hthread_t thread_handles[] = 0, void *stack[] = 0, size_t stack_size[] = 0, - ACE_thread_t thread_names[] = 0); + ACE_thread_t thread_ids[] = 0, + const char* thr_name[] = 0); # if defined (ACE_HAS_DEFERRED_TIMER_COMMANDS) diff --git a/ACE/ace/Token.cpp b/ACE/ace/Token.cpp index 85fa9cf5b66..a209b02183d 100644 --- a/ACE/ace/Token.cpp +++ b/ACE/ace/Token.cpp @@ -13,10 +13,10 @@ ACE_RCSID(ace, Token, "$Id$") #include "ace/Thread.h" #include "ace/Log_Msg.h" -#if defined (DEBUGGING) +#if defined (ACE_TOKEN_DEBUGGING) // FUZZ: disable check_for_streams_include #include "ace/streams.h" -#endif /* DEBUGGING */ +#endif /* ACE_TOKEN_DEBUGGING */ ACE_BEGIN_VERSIONED_NAMESPACE_DECL @@ -189,11 +189,11 @@ ACE_Token::shared_acquire (void (*sleep_hook_func)(void *), ACE_TRACE ("ACE_Token::shared_acquire"); ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1); -#if defined (DEBUGGING) +#if defined (ACE_TOKEN_DEBUGGING) this->dump (); -#endif /* DEBUGGING */ +#endif /* ACE_TOKEN_DEBUGGING */ - ACE_thread_t thr_id = ACE_Thread::self (); + ACE_thread_t const thr_id = ACE_Thread::self (); // Nobody holds the token. if (!this->in_use_) @@ -255,14 +255,13 @@ ACE_Token::shared_acquire (void (*sleep_hook_func)(void *), ++ret; } - int timed_out = 0; - int error = 0; + bool timed_out = false; + bool error = false; // Sleep until we've got the token (ignore signals). do { - int result = my_entry.wait (timeout, - this->lock_); + int const result = my_entry.wait (timeout, this->lock_); if (result == -1) { @@ -271,19 +270,19 @@ ACE_Token::shared_acquire (void (*sleep_hook_func)(void *), if (errno == EINTR) continue; -#if defined (DEBUGGING) +#if defined (ACE_TOKEN_DEBUGGING) cerr << '(' << ACE_Thread::self () << ')' << " acquire: " << (errno == ETIME ? "timed out" : "error occurred") << endl; -#endif /* DEBUGGING */ +#endif /* ACE_TOKEN_DEBUGGING */ // We come here if a timeout occurs or some serious // ACE_Condition object error. if (errno == ETIME) - timed_out = 1; + timed_out = true; else - error = 1; + error = true; // Stop the loop. break; @@ -295,10 +294,9 @@ ACE_Token::shared_acquire (void (*sleep_hook_func)(void *), --this->waiters_; queue->remove_entry (&my_entry); -#if defined (DEBUGGING) - cerr << '(' << ACE_Thread::self () << ')' - << " acquire (UNBLOCKED)" << endl; -#endif /* DEBUGGING */ +#if defined (ACE_TOKEN_DEBUGGING) + ACE_DEBUG ((LM_DEBUG, "(%t) ACE_Token::shared_acquire (UNBLOCKED)\n")); +#endif /* ACE_TOKEN_DEBUGGING */ // If timeout occured if (timed_out) @@ -362,9 +360,9 @@ ACE_Token::renew (int requeue_position, ACE_TRACE ("ACE_Token::renew"); ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1); -#if defined (DEBUGGING) +#if defined (ACE_TOKEN_DEBUGGING) this->dump (); -#endif /* DEBUGGING */ +#endif /* ACE_TOKEN_DEBUGGING */ // ACE_ASSERT (ACE_OS::thr_equal (ACE_Thread::self (), this->owner_)); // Check to see if there are any waiters worth giving up the lock @@ -403,14 +401,13 @@ ACE_Token::renew (int requeue_position, // Wakeup waiter. this->wakeup_next_waiter (); - int timed_out = 0; - int error = 0; + bool timed_out = false; + bool error = false; // Sleep until we've got the token (ignore signals). do { - int result = my_entry.wait (timeout, - this->lock_); + int const result = my_entry.wait (timeout, this->lock_); if (result == -1) { @@ -419,19 +416,19 @@ ACE_Token::renew (int requeue_position, if (errno == EINTR) continue; -#if defined (DEBUGGING) +#if defined (ACE_TOKEN_DEBUGGING) cerr << '(' << ACE_Thread::self () << ')' << " renew: " << (errno == ETIME ? "timed out" : "error occurred") << endl; -#endif /* DEBUGGING */ +#endif /* ACE_TOKEN_DEBUGGING */ // We come here if a timeout occurs or some serious // ACE_Condition object error. if (errno == ETIME) - timed_out = 1; + timed_out = true; else - error = 1; + error = true; // Stop the loop. break; @@ -443,10 +440,9 @@ ACE_Token::renew (int requeue_position, --this->waiters_; this_threads_queue->remove_entry (&my_entry); -#if defined (DEBUGGING) - cerr << '(' << ACE_Thread::self () << ')' - << " acquire (UNBLOCKED)" << endl; -#endif /* DEBUGGING */ +#if defined (ACE_TOKEN_DEBUGGING) + ACE_DEBUG ((LM_DEBUG, "(%t) ACE_Token::renew (UNBLOCKED)\n")); +#endif /* ACE_TOKEN_DEBUGGING */ // If timeout occured if (timed_out) @@ -485,11 +481,9 @@ ACE_Token::release (void) ACE_TRACE ("ACE_Token::release"); ACE_GUARD_RETURN (ACE_Thread_Mutex, ace_mon, this->lock_, -1); - // ACE_ASSERT (ACE_OS::thr_equal (ACE_Thread::self (), this->owner_)); - -#if defined (DEBUGGING) +#if defined (ACE_TOKEN_DEBUGGING) this->dump (); -#endif /* DEBUGGING */ +#endif /* ACE_TOKEN_DEBUGGING */ // Nested release... if (this->nesting_level_ > 0) diff --git a/ACE/ace/Token.h b/ACE/ace/Token.h index 9344809ca51..81b2d7173af 100644 --- a/ACE/ace/Token.h +++ b/ACE/ace/Token.h @@ -29,7 +29,7 @@ #include "ace/Thread_Mutex.h" -#if (defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)) || defined (ACE_VXWORKS) +#if (defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)) || defined (ACE_HAS_VXTHREADS) // If platforms support semaphores with timed wait, then we use semaphores instead of c.v. # define ACE_TOKEN_USES_SEMAPHORE #endif /* (ACE_WIN32 && !ACE_HAS_WINCE) || VXWORKS */ diff --git a/ACE/ace/Truncate.h b/ACE/ace/Truncate.h index e7026ce3114..7e03d90ca57 100644 --- a/ACE/ace/Truncate.h +++ b/ACE/ace/Truncate.h @@ -46,7 +46,7 @@ namespace ACE_Utils template<> struct Sign_Check<unsigned short> { ACE_STATIC_CONSTANT (bool, is_signed = 0); }; template<> struct Sign_Check<unsigned int> { ACE_STATIC_CONSTANT (bool, is_signed = 0); }; template<> struct Sign_Check<unsigned long> { ACE_STATIC_CONSTANT (bool, is_signed = 0); }; -#ifndef ACE_LACKS_LONGLONG_T +#if !(defined(ACE_LACKS_LONGLONG_T) || defined(ACE_LACKS_UNSIGNEDLONGLONG_T)) # ifdef __GNUC__ // Silence g++ "-pedantic" warnings regarding use of "long long" // type. @@ -114,7 +114,7 @@ namespace ACE_Utils unsigned_type operator() (unsigned_type x) { return x; } }; -#ifndef ACE_LACKS_LONGLONG_T +#if !(defined(ACE_LACKS_LONGLONG_T) || defined(ACE_LACKS_UNSIGNEDLONGLONG_T)) # ifdef __GNUC__ // Silence g++ "-pedantic" warnings regarding use of "long long" // type. @@ -187,7 +187,7 @@ namespace ACE_Utils } }; -#ifndef ACE_LACKS_LONGLONG_T +#if !(defined(ACE_LACKS_LONGLONG_T) || defined(ACE_LACKS_UNSIGNEDLONGLONG_T)) # ifdef __GNUC__ // Silence g++ "-pedantic" warnings regarding use of "long long" // type. diff --git a/ACE/ace/Vector_T.cpp b/ACE/ace/Vector_T.cpp index adf9727c6ff..d66abd411ac 100644 --- a/ACE/ace/Vector_T.cpp +++ b/ACE/ace/Vector_T.cpp @@ -38,6 +38,9 @@ void ACE_Vector<T, DEFAULT_SIZE>::push_back (const T& elem) ACE_Array<T>::size (curr_max_size_ * 2); curr_max_size_ = this->max_size (); } + else + ACE_Array<T>::size (length_ + 1); + ++length_; (*this)[length_-1] = elem; } @@ -82,29 +85,20 @@ int compare(const ACE_Vector<T>& v1, size_t last1 = v1.size () - 1; size_t last2 = v2.size () - 1; if (last1 < from_ndx || last1 < to_ndx) - { - return false; - } + return false; if (last2 < from_ndx || last2 < to_ndx) - { - return false; - } + return false; if (last1 != last2) - { - return false; - } + return false; // cout<<"compare() <================="<<endl; for (size_t i = from_ndx; i <= to_ndx; ++i) - { - // cout<<"V1["<<i<<"]="<<v1[i]; - // cout<<", V2["<<i<<"]="<<v2[i]; - // cout<<": NOT EQUAL == "<<(v1[i]!=v2[i])<<endl; - if (v1[i] != v2[i]) - { - return false; - } - } + // cout<<"V1["<<i<<"]="<<v1[i]; + // cout<<", V2["<<i<<"]="<<v2[i]; + // cout<<": NOT EQUAL == "<<(v1[i]!=v2[i])<<endl; + if (v1[i] != v2[i]) + return false; + // cout<<"compare() ====================>"<<endl; return true; } @@ -117,25 +111,20 @@ int partial_compare(const ACE_Vector<T>& v1, { size_t last1 = v1.size () - 1; size_t last2 = v2.size () - 1; + if (last1 < from_ndx || last1 < to_ndx) - { - return false; - } + return false; if (last2 < from_ndx || last2 < to_ndx) - { - return false; - } + return false; + // cout<<"partial_compare() <================="<<endl; for (size_t i = from_ndx; i <= to_ndx; ++i) - { - // cout<<"V1["<<i<<"]="<<v1[i]; - // cout<<", V2["<<i<<"]="<<v2[i]; - // cout<<": NOT EQUAL == "<<(v1[i]!=v2[i])<<endl; - if (v1[i] != v2[i]) - { - return false; - } - } + // cout<<"V1["<<i<<"]="<<v1[i]; + // cout<<", V2["<<i<<"]="<<v2[i]; + // cout<<": NOT EQUAL == "<<(v1[i]!=v2[i])<<endl; + if (v1[i] != v2[i]) + return false; + // cout<<"partial_compare() ====================>"<<endl; return true; } diff --git a/ACE/ace/Vector_T.inl b/ACE/ace/Vector_T.inl index f9388daf619..8dea22cd361 100644 --- a/ACE/ace/Vector_T.inl +++ b/ACE/ace/Vector_T.inl @@ -9,10 +9,10 @@ ACE_BEGIN_VERSIONED_NAMESPACE_DECL template <class T, size_t DEFAULT_SIZE> ACE_INLINE ACE_Vector<T, DEFAULT_SIZE>::ACE_Vector (const size_t init_size, ACE_Allocator* alloc) - : ACE_Array<T> (init_size == 0 ? DEFAULT_SIZE : init_size, alloc) + : ACE_Array<T> (init_size == 0 ? DEFAULT_SIZE : init_size, alloc), + length_ (0), + curr_max_size_ (this->max_size ()) { - length_ = 0; - curr_max_size_ = this->max_size (); } template <class T, size_t DEFAULT_SIZE> ACE_INLINE @@ -42,7 +42,10 @@ template <class T, size_t DEFAULT_SIZE> ACE_INLINE void ACE_Vector<T, DEFAULT_SIZE>::pop_back (void) { if (length_ > 0) - --length_; + { + --length_; + ACE_Array<T>::size (length_); + } } // Compare this vector with <s> for inequality. @@ -61,7 +64,6 @@ ACE_Vector<T, DEFAULT_SIZE>::swap (ACE_Vector &rhs) std::swap (this->curr_max_size_, rhs.curr_max_size_); } - // **************************************************************** template <class T, size_t DEFAULT_SIZE> ACE_INLINE void @@ -89,10 +91,8 @@ ACE_Vector_Iterator<T, DEFAULT_SIZE>::advance (void) return 1; } else - { - // Already finished iterating. - return 0; - } + // Already finished iterating. + return 0; } template <class T, size_t DEFAULT_SIZE> ACE_INLINE int @@ -104,3 +104,4 @@ ACE_Vector_Iterator<T, DEFAULT_SIZE>::done (void) const } ACE_END_VERSIONED_NAMESPACE_DECL + diff --git a/ACE/ace/Version.h b/ACE/ace/Version.h index 659313bf88f..b50fdbc42fe 100644 --- a/ACE/ace/Version.h +++ b/ACE/ace/Version.h @@ -5,5 +5,5 @@ #define ACE_MAJOR_VERSION 5 #define ACE_MINOR_VERSION 6 -#define ACE_BETA_VERSION 1 -#define ACE_VERSION "5.6.1" +#define ACE_BETA_VERSION 2 +#define ACE_VERSION "5.6.2" diff --git a/ACE/ace/WFMO_Reactor.h b/ACE/ace/WFMO_Reactor.h index a0937ef5bc8..da7ccdefe48 100644 --- a/ACE/ace/WFMO_Reactor.h +++ b/ACE/ace/WFMO_Reactor.h @@ -640,6 +640,13 @@ private: * use the DONT_CALL flag with remove_handler(). Preferably, use dynamically * allocated event handlers and call "delete this" inside the handle_close() * hook method. + * + * Note that although multiple threads can concurrently run the + * ACE_WFMO_Reactor event loop, the concept of the reactor "owner" is still + * important. Only the owner thread can expire timers and wait on the + * notifications handle. Thus, be careful to properly set the owner thread + * when spawning threads to run the event loop while you are using timers + * or notifications. */ class ACE_Export ACE_WFMO_Reactor : public ACE_Reactor_Impl { diff --git a/ACE/ace/ace_for_tao.mpc b/ACE/ace/ace_for_tao.mpc index 963643a46e2..2d8bd62faf3 100644 --- a/ACE/ace/ace_for_tao.mpc +++ b/ACE/ace/ace_for_tao.mpc @@ -188,7 +188,7 @@ project(ACE_FOR_TAO) : acedefaults, install, svcconf, uuid, versioned_namespace, } // ACE_Token implementation uses semaphores on Windows and VxWorks. - conditional(vc6,vc71,vc8,nmake,bmake,borland) { + conditional(vc6,vc71,vc8,vc9,nmake,bmake,borland) { NT_Service.cpp // Required by ace_for_tao sponsors Semaphore.cpp Process_Mutex.cpp diff --git a/ACE/ace/config-aix-5.x.h b/ACE/ace/config-aix-5.x.h index 68ad85c233c..8068829fd2a 100644 --- a/ACE/ace/config-aix-5.x.h +++ b/ACE/ace/config-aix-5.x.h @@ -54,11 +54,6 @@ // Compiler supports the ssize_t typedef. # define ACE_HAS_SSIZE_T -// When using the preprocessor, Ignore info msg; invalid #pragma -# if defined (__IBMCPP__) && (__IBMCPP__ < 400) // IBM C++ 3.6 -# define ACE_CC_PREPROCESSOR_ARGS "-E -qflag=w:w" -# endif /* (__IBMCPP__) && (__IBMCPP__ < 400) */ - // Keep an eye on this as the compiler and standards converge... # define ACE_LACKS_LINEBUFFERED_STREAMBUF # define ACE_LACKS_PRAGMA_ONCE @@ -71,7 +66,7 @@ # endif // These are for Visual Age C++ only -# if defined (__IBMCPP__) && (__IBMCPP__ >= 400) +# if defined (__IBMCPP__) && (__IBMCPP__ >= 600) # define ACE_EXPLICIT_TEMPLATE_DESTRUCTOR_TAKES_ARGS // When using -qtempinc, we don't need to see template implementation // source (though we do need a pragma to find the correct source file). @@ -89,11 +84,8 @@ # undef WIFEXITED # undef WEXITSTATUS - -# if (__IBMCPP__ >= 500) /* Visual Age C++ 5 */ -# define ACE_HAS_STANDARD_CPP_LIBRARY 1 -# define ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB 1 -# endif /* __IBMCPP__ >= 500 */ +# define ACE_HAS_STANDARD_CPP_LIBRARY 1 +# define ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB 1 # if (__IBMCPP__ >= 600) /* Visual Age 6 and XL C/C++ 7 and up */ # define ACE_HAS_TEMPLATE_TYPEDEFS @@ -289,7 +281,6 @@ # endif # define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_PTHREADS_UNIX98_EXT # define ACE_HAS_PTHREAD_CONTINUE_NP # define ACE_HAS_PTHREAD_SUSPEND_NP diff --git a/ACE/ace/config-cray.h b/ACE/ace/config-cray.h index d63cd3b48eb..c50cc9f903e 100644 --- a/ACE/ace/config-cray.h +++ b/ACE/ace/config-cray.h @@ -53,22 +53,6 @@ #define ACE_HAS_PTHREADS -// UNICOS 10 and UNICOS/mk implement a small subset of POSIX Threads, -// but the prototypes follow the POSIX.1c-1995 definitions. Earlier -// UNICOS versions sport Draft 7 threads. - -#if _UNICOS > 9 -# define ACE_HAS_PTHREADS_STD -#else -# define ACE_HAS_PTHREADS_DRAFT7 -# define ACE_LACKS_PTHREAD_ATTR_SETSTACKSIZE -# define ACE_LACKS_PTHREAD_ATTR_SETSTACKADDR - // UNICOS 9 doesn't have this, nor sched.h -# define SCHED_OTHER 0 -# define SCHED_FIFO 1 -# define SCHED_RR 2 -#endif - #define ACE_HAS_THREAD_SPECIFIC_STORAGE #define ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP diff --git a/ACE/ace/config-cygwin32.h b/ACE/ace/config-cygwin32.h index 04b9e079d51..99b709e4c49 100644 --- a/ACE/ace/config-cygwin32.h +++ b/ACE/ace/config-cygwin32.h @@ -181,8 +181,6 @@ # define ACE_HAS_PTHREAD_CONTINUE 1 # define ACE_HAS_PTHREAD_SUSPEND 1 -// ... and the final standard even! -# define ACE_HAS_PTHREADS_STD # define ACE_LACKS_PTHREAD_ATTR_SETSTACKADDR // Cygwin (see pthread.h): Not supported or implemented. # define ACE_LACKS_SETSCHED diff --git a/ACE/ace/config-hpux-11.00.h b/ACE/ace/config-hpux-11.00.h index ff1413f7007..ae83149b845 100644 --- a/ACE/ace/config-hpux-11.00.h +++ b/ACE/ace/config-hpux-11.00.h @@ -425,8 +425,6 @@ // features (lacks thread priority inheritance and protection), so // config-posix.h doesn't get this one... # define ACE_HAS_PTHREADS - -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_PTHREADS_UNIX98_EXT # define ACE_HAS_PTHREAD_CONTINUE # define ACE_HAS_PTHREAD_RESUME_NP diff --git a/ACE/ace/config-integritySCA.h b/ACE/ace/config-integritySCA.h index 2a164db6ca3..5c0a356c46f 100644 --- a/ACE/ace/config-integritySCA.h +++ b/ACE/ace/config-integritySCA.h @@ -75,7 +75,6 @@ #define ACE_HAS_THREADS #define ACE_HAS_PTHREADS -#define ACE_HAS_PTHREADS_STD /***** End Threading Defines *****/ /***** Hardware Defines *****/ diff --git a/ACE/ace/config-irix6.x-common.h b/ACE/ace/config-irix6.x-common.h index 38d8ea5f5cc..72629881ec7 100644 --- a/ACE/ace/config-irix6.x-common.h +++ b/ACE/ace/config-irix6.x-common.h @@ -240,7 +240,6 @@ // IRIX 6.2 supports a variant of POSIX Pthreads, supposedly POSIX 1c #define ACE_HAS_PTHREADS -#define ACE_HAS_PTHREADS_STD // Compiler/platform has thread-specific storage #define ACE_HAS_THREAD_SPECIFIC_STORAGE diff --git a/ACE/ace/config-linux-common.h b/ACE/ace/config-linux-common.h index 76d61201ba0..afed971b64a 100644 --- a/ACE/ace/config-linux-common.h +++ b/ACE/ace/config-linux-common.h @@ -25,7 +25,7 @@ # define ACE_HAS_PTHREADS_UNIX98_EXT #endif /* _XOPEN_SOURCE - 0 >= 500 */ -#if defined (ACE_HAS_LINUX_NPTL) +#if !defined (ACE_LACKS_LINUX_NPTL) # include "ace/config-posix.h" @@ -48,7 +48,7 @@ # define ACE_HAS_POSIX_SEM_TIMEOUT # endif /* !ACE_HAS_POSIX_SEM_TIMEOUT && (((_POSIX_C_SOURCE - 0) >= 200112L) || (_XOPEN_SOURCE >= 600)) */ # endif /* ACE_HAS_POSIX_SEM */ -#endif /* ACE_HAS_LINUX_NPTL */ +#endif /* !ACE_LACKS_LINUX_NPTL */ // First the machine specific part @@ -67,9 +67,13 @@ // Then glibc/libc5 specific parts #if defined(__GLIBC__) -# define ACE_HAS_NONCONST_SETRLIMIT -# define ACE_HAS_RUSAGE_WHO_ENUM enum __rusage_who -# define ACE_HAS_RLIMIT_RESOURCE_ENUM enum __rlimit_resource +# if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1) +# define ACE_HAS_NONCONST_SETRLIMIT +# endif +# if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 3) +# define ACE_HAS_RUSAGE_WHO_ENUM enum __rusage_who +# define ACE_HAS_RLIMIT_RESOURCE_ENUM enum __rlimit_resource +# endif # define ACE_HAS_SOCKLEN_T # define ACE_HAS_4_4BSD_SENDMSG_RECVMSG @@ -295,6 +299,8 @@ #define ACE_DEFAULT_MAX_SOCKET_BUFSIZ 65535 +#define ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE 1 + #define ACE_HAS_GETPAGESIZE 1 #if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 2) diff --git a/ACE/ace/config-linux.h b/ACE/ace/config-linux.h index 982d699fbd8..7f6510f7d05 100644 --- a/ACE/ace/config-linux.h +++ b/ACE/ace/config-linux.h @@ -26,8 +26,6 @@ #define ACE_HAS_THREADS // And they're even POSIX pthreads (LinuxThreads implementation) #define ACE_HAS_PTHREADS -// ... and the final standard even! -#define ACE_HAS_PTHREADS_STD // On linux this is part of pthreads # if (defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L) diff --git a/ACE/ace/config-macosx-leopard.h b/ACE/ace/config-macosx-leopard.h index 417c0c5944b..f2f73a4683f 100644 --- a/ACE/ace/config-macosx-leopard.h +++ b/ACE/ace/config-macosx-leopard.h @@ -175,7 +175,6 @@ # define ACE_HAS_THREADS // And they're even POSIX pthreads # define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_PTHREAD_SCHEDPARAM # define ACE_HAS_THREAD_SPECIFIC_STORAGE #endif /* ACE_MT_SAFE == 1 */ diff --git a/ACE/ace/config-macosx-panther.h b/ACE/ace/config-macosx-panther.h index 65c0b6aba6f..1c7361fd416 100644 --- a/ACE/ace/config-macosx-panther.h +++ b/ACE/ace/config-macosx-panther.h @@ -143,7 +143,6 @@ # define ACE_HAS_THREADS // And they're even POSIX pthreads # define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_PTHREAD_SCHEDPARAM # define ACE_HAS_THREAD_SPECIFIC_STORAGE #endif /* ACE_MT_SAFE == 1 */ diff --git a/ACE/ace/config-macosx-tiger.h b/ACE/ace/config-macosx-tiger.h index 5655e9d0675..906509818ab 100644 --- a/ACE/ace/config-macosx-tiger.h +++ b/ACE/ace/config-macosx-tiger.h @@ -171,7 +171,6 @@ # define ACE_HAS_THREADS // And they're even POSIX pthreads # define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_PTHREAD_SCHEDPARAM # define ACE_HAS_THREAD_SPECIFIC_STORAGE #endif /* ACE_MT_SAFE == 1 */ diff --git a/ACE/ace/config-macosx.h b/ACE/ace/config-macosx.h index c772efb07c8..c721353ca48 100644 --- a/ACE/ace/config-macosx.h +++ b/ACE/ace/config-macosx.h @@ -145,7 +145,6 @@ # define ACE_HAS_THREADS // And they're even POSIX pthreads # define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_THREAD_SPECIFIC_STORAGE # define ACE_LACKS_THREAD_PROCESS_SCOPING #endif /* ACE_MT_SAFE == 1 */ diff --git a/ACE/ace/config-mvs.h b/ACE/ace/config-mvs.h index 239452a93ec..3572bae3cde 100644 --- a/ACE/ace/config-mvs.h +++ b/ACE/ace/config-mvs.h @@ -56,7 +56,6 @@ #define ACE_HAS_POSIX_NONBLOCK #define ACE_HAS_POSIX_TIME #define ACE_HAS_PTHREADS -#define ACE_HAS_PTHREADS_DRAFT6 #define ACE_HAS_PTHREAD_CONDATTR_SETKIND_NP #define ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP #define ACE_HAS_SIGINFO_T diff --git a/ACE/ace/config-netbsd.h b/ACE/ace/config-netbsd.h index 4a091a380d1..7c25423fe4c 100644 --- a/ACE/ace/config-netbsd.h +++ b/ACE/ace/config-netbsd.h @@ -15,7 +15,6 @@ #if defined(ACE_MT_SAFE) && (ACE_MT_SAFE != 0) # define ACE_HAS_THREADS 1 # define ACE_HAS_PTHREADS 1 -# define ACE_HAS_PTHREADS_STD 1 # define ACE_HAS_PTHREADS_UNIX98_EXT 1 # define ACE_HAS_PTHREAD_RESUME_NP 1 # define ACE_HAS_PTHREAD_SUSPEND_NP 1 diff --git a/ACE/ace/config-openvms.h b/ACE/ace/config-openvms.h index 42442c9070e..606ef5b4472 100644 --- a/ACE/ace/config-openvms.h +++ b/ACE/ace/config-openvms.h @@ -150,7 +150,6 @@ #define ACE_LACKS_THREAD_PROCESS_SCOPING 1 #define ACE_HAS_PTHREADS 1 -#define ACE_HAS_PTHREADS_STD 1 #define ACE_HAS_PTHREAD_PROCESS_ENUM 1 #define ACE_LACKS_UNNAMED_SEMAPHORE 1 #define ACE_MT_SAFE 1 @@ -196,4 +195,7 @@ #define ACE_LACKS_UNIX_SYSLOG 1 #define ACE_LACKS_ALPHASORT 1 +#define ACE_HAS_SOCK_BUF_SIZE_MAX +#define ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE 65535 + #endif diff --git a/ACE/ace/config-posix.h b/ACE/ace/config-posix.h index e571574a5c4..482e2b91d10 100644 --- a/ACE/ace/config-posix.h +++ b/ACE/ace/config-posix.h @@ -59,10 +59,6 @@ # define ACE_HAS_PTHREADS # endif /* ACE_HAS_PTHREADS */ -# if !defined(ACE_HAS_PTHREADS_STD) -# define ACE_HAS_PTHREADS_STD -# endif /* ACE_HAS_PTHREADS_STD */ - # endif /* _POSIX_THREADS */ # endif /* ACE_HAS_THREADS */ #endif /* !ACE_MT_SAFE */ diff --git a/ACE/ace/config-qnx-neutrino.h b/ACE/ace/config-qnx-neutrino.h index e60f6c87ba5..ba53271f0b5 100644 --- a/ACE/ace/config-qnx-neutrino.h +++ b/ACE/ace/config-qnx-neutrino.h @@ -68,7 +68,6 @@ #define ACE_HAS_POSIX_SEM #define ACE_HAS_POSIX_TIME #define ACE_HAS_PTHREADS -#define ACE_HAS_PTHREADS_STD #define ACE_HAS_P_READ_WRITE #define ACE_HAS_REENTRANT_FUNCTIONS #define ACE_HAS_SELECT_H diff --git a/ACE/ace/config-qnx-rtp-62x.h b/ACE/ace/config-qnx-rtp-62x.h index 114d53710f9..6ccea40af39 100644 --- a/ACE/ace/config-qnx-rtp-62x.h +++ b/ACE/ace/config-qnx-rtp-62x.h @@ -43,7 +43,6 @@ #define ACE_HAS_POSIX_SEM #define ACE_HAS_POSIX_TIME #define ACE_HAS_PTHREADS -#define ACE_HAS_PTHREADS_STD #define ACE_HAS_P_READ_WRITE #define ACE_HAS_REENTRANT_FUNCTIONS #define ACE_HAS_SELECT_H diff --git a/ACE/ace/config-qnx-rtp-pre62x.h b/ACE/ace/config-qnx-rtp-pre62x.h index 5f32f71c318..00ad0166f18 100644 --- a/ACE/ace/config-qnx-rtp-pre62x.h +++ b/ACE/ace/config-qnx-rtp-pre62x.h @@ -41,7 +41,6 @@ #define ACE_HAS_POSIX_SEM #define ACE_HAS_POSIX_TIME #define ACE_HAS_PTHREADS -#define ACE_HAS_PTHREADS_STD #define ACE_HAS_P_READ_WRITE #define ACE_HAS_REENTRANT_FUNCTIONS #define ACE_HAS_SELECT_H diff --git a/ACE/ace/config-rtems.h b/ACE/ace/config-rtems.h index f7a600dc5b1..b32fbb8c15a 100644 --- a/ACE/ace/config-rtems.h +++ b/ACE/ace/config-rtems.h @@ -71,7 +71,6 @@ #if ACE_MT_SAFE # define ACE_HAS_THREADS # define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_THREAD_SPECIFIC_STORAGE # define ACE_HAS_PTHREAD_SCHEDPARAM # define ACE_LACKS_THREAD_PROCESS_SCOPING diff --git a/ACE/ace/config-sunos5.5.h b/ACE/ace/config-sunos5.5.h index 56fc7e9c0d8..8666932642c 100644 --- a/ACE/ace/config-sunos5.5.h +++ b/ACE/ace/config-sunos5.5.h @@ -322,7 +322,6 @@ # endif /* ! _POSIX_PTHREAD_SEMANTICS */ # define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD // . . . but only supports SCHED_OTHER scheduling policy # define ACE_HAS_ONLY_SCHED_OTHER # define ACE_HAS_SIGWAIT @@ -408,5 +407,8 @@ # define ACE_HAS_3_PARAM_READDIR_R #endif +// Sum of the iov_len values can't be larger then SSIZE_MAX +#define ACE_HAS_SOCK_BUF_SIZE_MAX + #include /**/ "ace/post.h" #endif /* ACE_CONFIG_H */ diff --git a/ACE/ace/config-tandem-nsk-mips-v2.h b/ACE/ace/config-tandem-nsk-mips-v2.h index b96d033f5d4..3dee75016c0 100644 --- a/ACE/ace/config-tandem-nsk-mips-v2.h +++ b/ACE/ace/config-tandem-nsk-mips-v2.h @@ -250,19 +250,6 @@ typedef enum CMA_T_SCHED_POLICY { // ACE_HAS_... thing for extensions. #define ACE_HAS_PTHREADS -// Platform's 'Pthreads' is .4a draft 4 -#ifndef ACE_TANDEM_T1248_PTHREADS -# define ACE_HAS_PTHREADS_DRAFT4 -# define ACE_LACKS_CONST_TIMESPEC_PTR -extern int cma_sigwait (sigset_t *); -#endif - -// Platform supports POSIX.1c-1995 threads -// (This is the final standard Pthreads). -#ifdef ACE_TANDEM_T1248_PTHREADS -#define ACE_HAS_PTHREADS_STD -#endif - // Standard pthreads supports only SCHED_FIFO #define ACE_HAS_ONLY_SCHED_FIFO diff --git a/ACE/ace/config-tandem-nsk-mips-v3.h b/ACE/ace/config-tandem-nsk-mips-v3.h index acc49d52fc4..80fdb49becd 100644 --- a/ACE/ace/config-tandem-nsk-mips-v3.h +++ b/ACE/ace/config-tandem-nsk-mips-v3.h @@ -244,6 +244,23 @@ typedef enum CMA_T_SCHED_POLICY { // Size of a wchar #define ACE_SIZEOF_WCHAR 2 +// Platform lacks time typedefs +#define ACE_LACKS_SUSECONDS_T +#define ACE_LACKS_USECONDS_T + +// Platform lacks setegid() and seteuid() +#define ACE_LACKS_SETEGID +#define ACE_LACKS_SETEUID + +// Platform lacks vsnprintf() +#define ACE_LACKS_VSNPRINTF + +// Platform lacks log2() +#define ACE_LACKS_LOG2 + +// Platform lacks alphasort() +#define ACE_LACKS_ALPHASORT + //========================================================================= // Threads specific parts @@ -258,19 +275,6 @@ typedef enum CMA_T_SCHED_POLICY { // ACE_HAS_... thing for extensions. #define ACE_HAS_PTHREADS -// Platform's 'Pthreads' is .4a draft 4 -#ifndef ACE_TANDEM_T1248_PTHREADS -# define ACE_HAS_PTHREADS_DRAFT4 -# define ACE_LACKS_CONST_TIMESPEC_PTR -extern int cma_sigwait (sigset_t *); -#endif - -// Platform supports POSIX.1c-1995 threads -// (This is the final standard Pthreads). -#ifdef ACE_TANDEM_T1248_PTHREADS -#define ACE_HAS_PTHREADS_STD -#endif - // Standard pthreads supports only SCHED_FIFO #define ACE_HAS_ONLY_SCHED_FIFO @@ -304,6 +308,9 @@ extern int cma_sigwait (sigset_t *); // Platform lacks pthread_attr_setstackaddr #define ACE_LACKS_PTHREAD_ATTR_SETSTACKADDR +// Platform lacks pthread_attr_setstack +#define ACE_LACKS_PTHREAD_ATTR_SETSTACK + // Defining ACE_HAS_UCONTEXT_T since G06.21 version of spthreads has // a definition for it. #ifdef ACE_TANDEM_T1248_PTHREADS @@ -364,12 +371,15 @@ extern int cma_sigwait (sigset_t *); // Platform lacks <poll.h> #define ACE_LACKS_POLL_H +// Platform lacks <sys/sysctl.h> +#define ACE_LACKS_SYS_SYSCTL_H + //========================================================================= // Compiler specific parts //========================================================================= // Compiler supports C++ exception handling -#define ACE_HAS_EXCEPTIONS +#define ACE_HAS_EXCEPTIONS 1 // Compiler/platform has correctly prototyped header files #define ACE_HAS_CPLUSPLUS_HEADERS @@ -411,6 +421,9 @@ extern int cma_sigwait (sigset_t *); // Compiler can handle any operators in namespace #define ACE_ANY_OPS_USE_NAMESPACE +// Platform lacks intptr_t typedef +#define ACE_LACKS_INTPTR_T + //========================================================================= // C++ version3 import/export macros //========================================================================= diff --git a/ACE/ace/config-tru64.h b/ACE/ace/config-tru64.h index 02532cecab9..1877af703bb 100644 --- a/ACE/ace/config-tru64.h +++ b/ACE/ace/config-tru64.h @@ -59,47 +59,17 @@ # endif /* __cplusplus */ #endif /* ! __GNUG__ && ! __DECCXX && ! __rational__ */ -#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 199506L) - // cxx with POSIX 1003.1c-1995 threads (pthreads) . . . -# define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R -# define ACE_HAS_BROKEN_IF_HEADER -# define ACE_HAS_BROKEN_R_ROUTINES +#define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R +#define ACE_HAS_BROKEN_IF_HEADER +#define ACE_HAS_BROKEN_R_ROUTINES #if (ACE_MT_SAFE != 0) # define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS #endif /* ACE_MT_SAFE != 0 */ -# define ACE_LACKS_T_ERRNO -# if !defined (DIGITAL_UNIX) -# define DIGITAL_UNIX 0x400 -# endif /* ! DIGITAL_UNIX */ - // DJT removed this due to some minor issues related to the - // definitions of timestruc_t and tid_t in procfs.h not sure what - // functionality is lost? Platform supports <sys/procfs.h> - //#define ACE_HAS_PROC_FS -#else /* _POSIX_C_SOURCE < 199506L */ - // cxx with DCE threads . . . - // This ACE configuration is only supported with cxx; it has not been - // test with g++. -# define ACE_HAS_BROKEN_MSG_H -# define ACE_HAS_BROKEN_POSIX_TIME -#if (ACE_MT_SAFE != 0) -# define ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_DRAFT4 -# define ACE_HAS_THREAD_SELF -# define ACE_LACKS_THREAD_PROCESS_SCOPING -# define ACE_LACKS_PTHREAD_THR_SIGSETMASK -# define ACE_LACKS_PTHREAD_THR_SIGSETMASK -#endif -# define ACE_HAS_GETPAGESIZE -# define ACE_HAS_PROC_FS -# define ACE_HAS_SETKIND_NP -# define ACE_LACKS_CONST_TIMESPEC_PTR -# define ACE_LACKS_READDIR_R -# define ACE_LACKS_SETSCHED -# define ACE_LACKS_SIGNED_CHAR -# define ACE_LACKS_SYSV_MSQ_PROTOS -#endif /* _POSIX_C_SOURCE < 199506L */ +#define ACE_LACKS_T_ERRNO +#if !defined (DIGITAL_UNIX) +# define DIGITAL_UNIX 0x400 +#endif /* ! DIGITAL_UNIX */ #define ACE_SIZEOF_LONG 8 diff --git a/ACE/ace/config-unixware-7.1.0.h b/ACE/ace/config-unixware-7.1.0.h index 808a247bb7f..53f42f3a1b1 100644 --- a/ACE/ace/config-unixware-7.1.0.h +++ b/ACE/ace/config-unixware-7.1.0.h @@ -164,9 +164,6 @@ /* Platform supports POSIX Threads */ #define ACE_HAS_PTHREADS 1 -/* Platform supports POSIX.1c-1995 threads */ -#define ACE_HAS_PTHREADS_STD 1 - /* pthread.h declares an enum with PTHREAD_PROCESS_PRIVATE and PTHREAD_PROCESS_SHARED values */ #define ACE_HAS_PTHREAD_PROCESS_ENUM 1 diff --git a/ACE/ace/config-unixware-7.1.0.udk.h b/ACE/ace/config-unixware-7.1.0.udk.h index d608bbee680..0ba282a4e51 100644 --- a/ACE/ace/config-unixware-7.1.0.udk.h +++ b/ACE/ace/config-unixware-7.1.0.udk.h @@ -198,9 +198,6 @@ /* Platform supports POSIX Threads */ #define ACE_HAS_PTHREADS -/* Platform supports POSIX.1c-1995 threads */ -#define ACE_HAS_PTHREADS_STD - /* pthread.h declares an enum with PTHREAD_PROCESS_PRIVATE and PTHREAD_PROCESS_SHARED values */ #define ACE_HAS_PTHREAD_PROCESS_ENUM diff --git a/ACE/ace/config-vxworks5.x.h b/ACE/ace/config-vxworks5.x.h index 767ef43370a..744d4a8a221 100644 --- a/ACE/ace/config-vxworks5.x.h +++ b/ACE/ace/config-vxworks5.x.h @@ -36,6 +36,10 @@ # define ACE_LACKS_LINEBUFFERED_STREAMBUF +# if (__GNUC__ == 2) +# define ACE_CDR_IMPLEMENT_WITH_NATIVE_DOUBLE 1 +# endif + # if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) // GNU 3.3+ toolchain supports long long types but fails to define this so STL // skips some definitions @@ -272,7 +276,6 @@ // It is possible to enable pthread support with VxWorks, when the user decides // to use this, we need some more defines #if defined ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_LACKS_CONDATTR_PSHARED # define ACE_LACKS_MUTEXATTR_PSHARED # define ACE_HAS_THREAD_SPECIFIC_STORAGE diff --git a/ACE/ace/config-vxworks6.2.h b/ACE/ace/config-vxworks6.2.h index ef289fc1925..ff78628b15b 100644 --- a/ACE/ace/config-vxworks6.2.h +++ b/ACE/ace/config-vxworks6.2.h @@ -69,6 +69,15 @@ # endif /* __cplusplus */ #endif /* ! __GNUG__ && ! ghs */ +#if !defined __RTP__ +# if defined (TOOL) && (TOOL == gnu) +# if defined (CPU) && (CPU == PPC85XX || CPU == PPC604 || CPU == PPC603) +// These PPC's do lack log2 in kernel mode +# define ACE_LACKS_LOG2 +# endif +# endif +#endif + // OS-specific configuration #define ACE_HAS_4_4BSD_SENDMSG_RECVMSG #define ACE_HAS_NONCONST_GETBY @@ -260,7 +269,6 @@ // It is possible to enable pthread support with VxWorks, when the user decides // to use this, we need some more defines #if defined ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_THREAD_SPECIFIC_STORAGE # define ACE_HAS_POSIX_SEM # define ACE_LACKS_MUTEXATTR_PSHARED diff --git a/ACE/ace/config-vxworks6.3.h b/ACE/ace/config-vxworks6.3.h index 2dd7a8789ed..b855b301793 100644 --- a/ACE/ace/config-vxworks6.3.h +++ b/ACE/ace/config-vxworks6.3.h @@ -51,6 +51,15 @@ # endif /* __cplusplus */ #endif /* ! __GNUG__ && ! ghs */ +#if !defined __RTP__ +# if defined (TOOL) && (TOOL == gnu) +# if defined (CPU) && (CPU == PPC85XX || CPU == PPC604 || CPU == PPC603) +// These PPC's do lack log2 in kernel mode +# define ACE_LACKS_LOG2 +# endif +# endif +#endif + // OS-specific configuration #define ACE_HAS_4_4BSD_SENDMSG_RECVMSG #define ACE_HAS_NONCONST_GETBY @@ -246,7 +255,6 @@ // It is possible to enable pthread support with VxWorks, when the user decides // to use this, we need some more defines #if defined ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_THREAD_SPECIFIC_STORAGE # define ACE_HAS_POSIX_SEM # define ACE_LACKS_MUTEXATTR_PSHARED diff --git a/ACE/ace/config-vxworks6.4.h b/ACE/ace/config-vxworks6.4.h index 256a0c1c5c2..37b13ef7dd1 100644 --- a/ACE/ace/config-vxworks6.4.h +++ b/ACE/ace/config-vxworks6.4.h @@ -76,6 +76,15 @@ #endif #endif +#if !defined __RTP__ +# if defined (TOOL) && (TOOL == gnu) +# if defined (CPU) && (CPU == PPC85XX || CPU == PPC604 || CPU == PPC603) +// These PPC's do lack log2 in kernel mode +# define ACE_LACKS_LOG2 +# endif +# endif +#endif + // OS-specific configuration #define ACE_HAS_4_4BSD_SENDMSG_RECVMSG #define ACE_HAS_3_PARAM_READDIR_R @@ -273,7 +282,6 @@ // It is possible to enable pthread support with VxWorks, when the user decides // to use this, we need some more defines #if defined ACE_HAS_PTHREADS -# define ACE_HAS_PTHREADS_STD # define ACE_HAS_THREAD_SPECIFIC_STORAGE # if !defined __RTP__ # define ACE_LACKS_PTHREAD_ATTR_SETSTACK diff --git a/ACE/ace/config-vxworks6.6.h b/ACE/ace/config-vxworks6.6.h new file mode 100644 index 00000000000..71a4145328f --- /dev/null +++ b/ACE/ace/config-vxworks6.6.h @@ -0,0 +1,339 @@ +//* -*- C++ -*- */ +// $Id$ + +// The following configuration file is designed to work for VxWorks +// 6.4 platforms using one of these compilers: +// 1) The GNU g++ compiler that is shipped with VxWorks 6.6 +// 2) The Diab compiler that is shipped with VxWorks 6.6 + +#ifndef ACE_CONFIG_VXWORKS_6_6_H +#define ACE_CONFIG_VXWORKS_6_6_H +#include /**/ "ace/pre.h" + +#if ! defined (VXWORKS) +# define VXWORKS +#endif /* ! VXWORKS */ + +#if ! defined (ACE_VXWORKS) +# define ACE_VXWORKS 0x660 +#endif /* ! ACE_VXWORKS */ + +#if !defined (__RTP__) + // Fix for wrong typedef of time_t in kernel mode + #ifndef _TIME_T + #define _TIME_T + typedef long time_t; + #endif +#endif + +#if ! defined (__ACE_INLINE__) +# define __ACE_INLINE__ +#endif /* ! __ACE_INLINE__ */ + +// Compiler-specific configuration. +#if defined (__GNUG__) +# include "ace/config-g++-common.h" + +# define ACE_LACKS_IOSTREAM_FX +# define ACE_LACKS_LINEBUFFERED_STREAMBUF + +# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) + // GNU 3.3+ toolchain supports long long types but fails to define this so STL + // skips some definitions +# if !defined (_GLIBCPP_USE_LONG_LONG) +# define _GLIBCPP_USE_LONG_LONG +# endif +# endif /* (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) */ + +#elif defined (__DCC__) +# define ACE_HAS_STANDARD_CPP_LIBRARY 1 +# define ACE_TEMPLATES_REQUIRE_SOURCE +#else /* ! __GNUG__ && ! ghs && !__DCC__ */ +# ifdef __cplusplus /* Let it slide for C compilers. */ +# error unsupported compiler on VxWorks +# endif /* __cplusplus */ +#endif /* ! __GNUG__ && ! ghs */ + +// Needed include to get all VxWorks CPU types +#include "types/vxCpu.h" +#if defined __RTP__ + #if defined (_VX_CPU) && (_VX_CPU == _VX_PENTIUM || _VX_CPU == _VX_PENTIUM2 || _VX_CPU == _VX_PENTIUM3 || _VX_CPU == _VX_PENTIUM4) + // If running an Intel Pentium the + // ACE_OS::gethrtime () can use the RDTSC instruction. + # define ACE_HAS_PENTIUM + #endif +#else + #if defined (CPU) && (CPU == PENTIUM || CPU == PENTIUM2 || CPU == PENTIUM3 || CPU == PENTIUM4) + // If running an Intel Pentium the + // ACE_OS::gethrtime () can use the RDTSC instruction. + # define ACE_HAS_PENTIUM + #endif +#endif + +#if !defined __RTP__ +# if defined (TOOL) && (TOOL == gnu) +# if defined (CPU) && (CPU == PPC85XX || CPU == PPC604 || CPU == PPC603) +// These PPC's do lack log2 in kernel mode +# define ACE_LACKS_LOG2 +# endif +# endif +#endif + +// OS-specific configuration +#define ACE_HAS_4_4BSD_SENDMSG_RECVMSG +#define ACE_HAS_3_PARAM_READDIR_R +#define ACE_HAS_NONCONST_GETBY +#define ACE_HAS_NONCONST_SWAB +#define ACE_LACKS_UNIX_SYSLOG +#define ACE_DEFAULT_MAX_SOCKET_BUFSIZ 32768 +#define ACE_DEFAULT_THREAD_KEYS 16 +#define ACE_HAS_BROKEN_ACCEPT_ADDR +#define ACE_HAS_NONCONST_SENDMSG +#define ACE_HAS_NONCONST_WRITEV +#define ACE_HAS_CHARPTR_DL +#define ACE_HAS_CLOCK_GETTIME +#define ACE_HAS_CLOCK_SETTIME +#define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES +#define ACE_HAS_CPLUSPLUS_HEADERS +#define ACE_HAS_DIRENT +#define ACE_HAS_DLL 0 +#define ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT +#define ACE_HAS_MSG +#define ACE_HAS_NONCONST_READV +#define ACE_HAS_NONCONST_SELECT_TIMEVAL +#define ACE_HAS_NONSTATIC_OBJECT_MANAGER +#define ACE_HAS_POSIX_NONBLOCK +#define ACE_HAS_POSIX_TIME +#define ACE_HAS_REENTRANT_FUNCTIONS +#define ACE_HAS_SIGACTION_CONSTP2 +#define ACE_HAS_SIGINFO_T +#define ACE_HAS_SIGWAIT +#define ACE_HAS_SIG_ATOMIC_T +#define ACE_HAS_SOCKADDR_IN_SIN_LEN +#define ACE_HAS_SOCKADDR_IN6_SIN6_LEN +#define ACE_HAS_STRERROR +#define ACE_HAS_THREADS +#define ACE_HAS_SYSCTL +#define ACE_LACKS_ALPHASORT +#define ACE_LACKS_EXEC +#define ACE_LACKS_RLIMIT +#define ACE_LACKS_FILELOCKS +#define ACE_LACKS_FORK +#define ACE_LACKS_GETHOSTENT +#define ACE_LACKS_GETSERVBYNAME +#define ACE_LACKS_GETPROTOBYNAME +#define ACE_LACKS_GETPROTOBYNUMBER +#define ACE_LACKS_GETIPNODEBYADDR +#define ACE_LACKS_GETIPNODEBYNAME_IPV6 +#define ACE_LACKS_LSTAT +#define ACE_LACKS_MADVISE +#define ACE_LACKS_MALLOC_H +#define ACE_LACKS_MEMORY_H +#define ACE_LACKS_MKFIFO +#define ACE_LACKS_MKSTEMP +#define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS +#define ACE_LACKS_SYS_PARAM_H +#define ACE_LACKS_PWD_FUNCTIONS +#define ACE_LACKS_READLINK +#define ACE_LACKS_REALPATH +#define ACE_LACKS_PIPE +#define ACE_LACKS_RWLOCK_T +#define ACE_LACKS_SBRK +#define ACE_LACKS_SEEKDIR +#define ACE_LACKS_SEMBUF_T +#define ACE_LACKS_SIGINFO_H +#define ACE_LACKS_SI_ADDR +#define ACE_LACKS_SOCKETPAIR +#define ACE_LACKS_STRRECVFD +#define ACE_LACKS_SYSV_SHMEM +#define ACE_LACKS_TELLDIR +#define ACE_LACKS_TIMESPEC_T +#define ACE_LACKS_TRUNCATE +#define ACE_LACKS_UCONTEXT_H +#define ACE_LACKS_USECONDS_T +#define ACE_LACKS_UMASK +#define ACE_LACKS_STRPTIME +#define ACE_LACKS_MKTEMP +#define ACE_LACKS_TEMPNAM +#define ACE_PAGE_SIZE 4096 +#define ACE_THR_PRI_FIFO_DEF 101 +#define ACE_THR_PRI_OTHER_DEF ACE_THR_PRI_FIFO_DEF +#define ACE_HAS_SIGTIMEDWAIT +#define ACE_HAS_SIGSUSPEND +#define ACE_HAS_GETIFADDRS + +#define ACE_LACKS_SETEGID +#define ACE_LACKS_SETPGID +#define ACE_LACKS_SETREGID +#define ACE_LACKS_SETREUID +#define ACE_LACKS_SETSID +#define ACE_LACKS_SETUID +#define ACE_LACKS_SETEUID +#define ACE_LACKS_GETEUID +#define ACE_LACKS_GETUID +#define ACE_LACKS_GETPGID +#define ACE_LACKS_GETEGID +#define ACE_LACKS_GETGID +#define ACE_LACKS_SETGID + +#define ACE_LACKS_SYS_UIO_H +#define ACE_LACKS_SYS_IPC_H +#define ACE_LACKS_SYS_SEM_H +#define ACE_LACKS_STROPTS_H +#define ACE_LACKS_SYS_MSG_H +#define ACE_LACKS_PWD_H +#define ACE_LACKS_SYS_SHM_H +#define ACE_LACKS_TERMIOS_H +#define ACE_LACKS_POLL_H +#define ACE_LACKS_FCNTL + +// Some string things +#define ACE_LACKS_ITOW +#define ACE_LACKS_WCSDUP +#define ACE_LACKS_WCSICMP +#define ACE_LACKS_WCSNICMP + +#define ACE_HAS_CHARPTR_SOCKOPT +#define ACE_LACKS_SYMLINKS + +#if defined __RTP__ + // We are building for RTP mode + #if !defined (ACE_AS_STATIC_LIBS) + # define ACE_HAS_SVR4_DYNAMIC_LINKING + #endif + #define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R + #define ACE_LACKS_REGEX_H + #if defined ACE_HAS_PENTIUM + // Bug to workaround VxWorks 6.4 x86 + # define ACE_LACKS_PUTENV + #endif + #define ACE_HAS_SETENV + #define ACE_LACKS_STRCASECMP + #define ACE_HAS_3_PARAM_WCSTOK + #define ACE_HAS_WCHAR + #define ACE_HAS_VFWPRINTF + #define ACE_SIZEOF_WCHAR 2 + #define ACE_HAS_SHM_OPEN + #if defined (ACE_AS_STATIC_LIBS) + # define ACE_HAS_AIO_CALLS + #endif + // VxWorks seems to either not define this or define as zero up till now + #if !defined (IOV_MAX) || (IOV_MAX == 0) + #define ACE_IOV_MAX 16 + #endif +#else + // We are building for kernel mode + #define ACE_LACKS_SUSECONDS_T + #define ACE_LACKS_INTPTR_T + #define ACE_LACKS_INTTYPES_H + #define ACE_LACKS_STDINT_H + #define ACE_LACKS_UNAME + #define ACE_LACKS_UTSNAME_T + #define ACE_LACKS_RAND_REENTRANT_FUNCTIONS + #define ACE_LACKS_DLFCN_H + #define ACE_LACKS_WAIT + #define ACE_LACKS_WAITPID + #define ACE_LACKS_SYS_TIME_H + #define ACE_LACKS_SYS_SELECT_H + #define ACE_MKDIR_LACKS_MODE + #define ACE_HAS_SIZET_PTR_ASCTIME_R_AND_CTIME_R + #define ACE_LACKS_SEARCH_H + #define ACE_LACKS_SYSCONF + #define ACE_LACKS_GETPPID + #define ACE_LACKS_WCHAR_H + #define ACE_LACKS_WCTYPE_H + #define ACE_LACKS_WCSCAT + #define ACE_LACKS_WCSCHR + #define ACE_LACKS_WCSCMP + #define ACE_LACKS_WCSCPY + #define ACE_LACKS_WCSCSPN + #define ACE_LACKS_WCSLEN + #define ACE_LACKS_WCSNCAT + #define ACE_LACKS_WCSNCMP + #define ACE_LACKS_WCSNCPY + #define ACE_LACKS_WCSPBRK + #define ACE_LACKS_WCSRCHR + #define ACE_LACKS_WCSSPN + #define ACE_LACKS_WCSSTR + #define ACE_LACKS_WCSTOK + #define ACE_LACKS_TOWLOWER + #define ACE_LACKS_TOWUPPER + #define ACE_LACKS_WCSTOD + #define ACE_LACKS_WCSTOL + #define ACE_LACKS_WCSTOUL + #define ACE_LACKS_FGETWC + #define ACE_LACKS_FGETWS + #define ACE_LACKS_FPUTWS + #define ACE_HAS_IOCTL_INT_3_PARAM + #define ACE_LACKS_MMAP + #define ACE_LACKS_MSYNC + #define ACE_LACKS_MPROTECT + #if !defined (ACE_MAIN) + # define ACE_MAIN ace_main + #endif /* ! ACE_MAIN */ +#endif + +// It is possible to enable pthread support with VxWorks, when the user decides +// to use this, we need some more defines +#if defined ACE_HAS_PTHREADS +# define ACE_HAS_THREAD_SPECIFIC_STORAGE +# if !defined __RTP__ +# define ACE_LACKS_PTHREAD_ATTR_SETSTACK +# endif +# define ACE_HAS_PTHREAD_ATTR_SETNAME +# define ACE_HAS_POSIX_SEM +# define ACE_LACKS_MUTEXATTR_PSHARED +# define ACE_LACKS_CONDATTR_PSHARED +// Include this file, the sys/stat.h file shipped with VxWorks has old types +// and without this include we get a lot of compile errors. A TSR has been filed +// so that hopefully in the future we can zap this include +#include "types/vxTypesOld.h" +#else +# define ACE_LACKS_PTHREAD_H +# define ACE_HAS_VXTHREADS +# if !defined __RTP__ +// Only when building for kernel mode we can use TSS emulation, in rtp mode +// we can't use the WIND_TCB struct anymore +# define ACE_HAS_TSS_EMULATION +# if !defined (ACE_VXWORKS_SPARE) +# define ACE_VXWORKS_SPARE spare4 +# endif /* ! ACE_VXWORKS_SPARE */ +# endif +// VxWorks has no recursive mutexes. This was set in the past but it doesn't +// work with the pthread support, so only set it for the time being when pthread +// is disabled +# define ACE_HAS_RECURSIVE_MUTEXES +# define ACE_LACKS_COND_T +# define ACE_HAS_MUTEX_TIMEOUTS +#endif + +#if !defined (ACE_MT_SAFE) +# define ACE_MT_SAFE 1 +#endif + +// VxWorks defines the CPU define MAP, undef it to prevent problems with +// application code +#if defined (MAP) +#undef MAP +#endif /* MAP */ + +#if !defined (ACE_NEEDS_HUGE_THREAD_STACKSIZE) +# define ACE_NEEDS_HUGE_THREAD_STACKSIZE 65536 +#endif /* ACE_NEEDS_HUGE_THREAD_STACKSIZE */ + +#if !defined (ACE_NTRACE) +# define ACE_NTRACE 1 +#endif /* ACE_NTRACE */ + +// By default, don't include RCS Id strings in object code. +#if !defined (ACE_USE_RCSID) +#define ACE_USE_RCSID 0 +#endif /* !ACE_USE_RCSID */ + +#if defined (ACE_HAS_IP_MULTICAST) +# define ACE_LACKS_PERFECT_MULTICAST_FILTERING 1 +#endif /* ACE_HAS_IP_MULTICAST */ + +#include /**/ "ace/post.h" +#endif /* ACE_CONFIG_VXWORKS_6_4_H */ + diff --git a/ACE/ace/config-win32-interix.h b/ACE/ace/config-win32-interix.h index b9c064c4359..19cb586aa8f 100644 --- a/ACE/ace/config-win32-interix.h +++ b/ACE/ace/config-win32-interix.h @@ -37,7 +37,6 @@ #define _THREAD_SAFE #define ACE_MTSAFE 1 #define ACE_MT_SAFE 1 -#define ACE_HAS_PTHREADS_STD #define ACE_LACKS_PTHREAD_YIELD #define ACE_HAS_MUTEX_TIMEOUTS #else diff --git a/ACE/ace/config-win32-msvc-9.h b/ACE/ace/config-win32-msvc-9.h index a30d76cc321..a8c9ec3ff2e 100644 --- a/ACE/ace/config-win32-msvc-9.h +++ b/ACE/ace/config-win32-msvc-9.h @@ -116,6 +116,9 @@ // Disable warning of using Microsoft Extension. # pragma warning(disable:4231) +// 'class1' : inherits 'class2::member' via dominance +#pragma warning(disable:4250) + // CE (at least thru Windows Mobile 5) doesn't have the new, secure CRT. #if !defined (ACE_HAS_WINCE) && !defined (ACE_HAS_TR24731_2005_CRT) # define ACE_HAS_TR24731_2005_CRT diff --git a/ACE/ace/os_include/os_limits.h b/ACE/ace/os_include/os_limits.h index 61430536f31..a7f6e9e0fb2 100644 --- a/ACE/ace/os_include/os_limits.h +++ b/ACE/ace/os_include/os_limits.h @@ -102,7 +102,7 @@ extern "C" # define ACE_IOV_MAX IOV_MAX #endif /* ACE_IOV_MAX */ -#if defined (ACE_VXWORKS) && ((ACE_VXWORKS >= 0x620) && (ACE_VXWORKS <= 0x640)) && !defined (__RTP__) +#if defined (ACE_VXWORKS) && ((ACE_VXWORKS >= 0x620) && (ACE_VXWORKS <= 0x660)) && !defined (__RTP__) # if defined (PIPE_BUF) && (PIPE_BUF == -1) # undef PIPE_BUF # endif diff --git a/ACE/ace/os_include/os_pthread.h b/ACE/ace/os_include/os_pthread.h index 8708f4683e6..9ae6427079b 100644 --- a/ACE/ace/os_include/os_pthread.h +++ b/ACE/ace/os_include/os_pthread.h @@ -72,19 +72,6 @@ extern "C" pthread_t pthread_self (void); # define ACE_SCHED_FIFO SCHED_FIFO # define ACE_SCHED_RR SCHED_RR -// Definitions for mapping POSIX pthreads draft 6 into 1003.1c names - -# if defined (ACE_HAS_PTHREADS_DRAFT6) -# define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_LOCAL -# define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_GLOBAL -# define PTHREAD_CREATE_UNDETACHED 0 -# define PTHREAD_CREATE_DETACHED 1 -# define PTHREAD_CREATE_JOINABLE 0 -# define PTHREAD_EXPLICIT_SCHED 0 -# define PTHREAD_MIN_PRIORITY 0 -# define PTHREAD_MAX_PRIORITY 126 -# endif /* ACE_HAS_PTHREADS_DRAFT6 */ - // Definitions for THREAD- and PROCESS-LEVEL priorities...some // implementations define these while others don't. In order to // further complicate matters, we don't redefine the default (*_DEF) @@ -301,34 +288,14 @@ extern "C" pthread_t pthread_self (void); # endif /* PTHREAD_MUTEXTYPE_FAST */ # endif /* PTHREAD_PROCESS_SHARED */ -# if defined (ACE_HAS_PTHREADS_DRAFT4) -# if defined (PTHREAD_PROCESS_PRIVATE) -# if !defined (USYNC_THREAD) -# define USYNC_THREAD PTHREAD_PROCESS_PRIVATE -# endif /* ! USYNC_THREAD */ -# else -# if !defined (USYNC_THREAD) -# define USYNC_THREAD MUTEX_NONRECURSIVE_NP -# endif /* ! USYNC_THREAD */ -# endif /* PTHREAD_PROCESS_PRIVATE */ - -# if defined (PTHREAD_PROCESS_SHARED) -# if !defined (USYNC_PROCESS) -# define USYNC_PROCESS PTHREAD_PROCESS_SHARED -# endif /* ! USYNC_PROCESS */ -# else -# if !defined (USYNC_PROCESS) -# define USYNC_PROCESS MUTEX_NONRECURSIVE_NP -# endif /* ! USYNC_PROCESS */ -# endif /* PTHREAD_PROCESS_SHARED */ -# elif !defined (ACE_HAS_STHREADS) +# if !defined (ACE_HAS_STHREADS) # if !defined (USYNC_THREAD) # define USYNC_THREAD PTHREAD_PROCESS_PRIVATE # endif /* ! USYNC_THREAD */ # if !defined (USYNC_PROCESS) # define USYNC_PROCESS PTHREAD_PROCESS_SHARED # endif /* ! USYNC_PROCESS */ -# endif /* ACE_HAS_PTHREADS_DRAFT4 */ +# endif /* ACE_HAS_STHREADS */ /* MM-Graz: prevent warnings */ # if !defined (UNIXWARE_7_1) diff --git a/ACE/ace/os_include/os_time.h b/ACE/ace/os_include/os_time.h index 6f19ad1282b..6d03b2f6e82 100644 --- a/ACE/ace/os_include/os_time.h +++ b/ACE/ace/os_include/os_time.h @@ -90,13 +90,13 @@ extern "C" // requirements as threads evolved. They are probably not all needed - some // overlap or are otherwise confused. This is an attempt to start // straightening them out. -#if defined (ACE_HAS_PTHREADS_STD) /* POSIX.1c threads (pthreads) */ +#if defined (ACE_HAS_PTHREADS) /* POSIX.1c threads (pthreads) */ // ... and 2-parameter asctime_r and ctime_r # if !defined (ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R) && \ !defined (ACE_HAS_STHREADS) && !defined (ACE_VXWORKS) # define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R # endif -#endif /* ACE_HAS_PTHREADS_STD */ +#endif /* ACE_HAS_PTHREADS */ #if defined (ACE_LACKS_STRPTIME_PROTOTYPE) && !defined (_XOPEN_SOURCE) extern char *strptime (const char *s, const char *fmt, struct tm *tp); diff --git a/ACE/ace/os_include/sys/os_msg.h b/ACE/ace/os_include/sys/os_msg.h index e6b2c6c1c63..fee07f3677b 100644 --- a/ACE/ace/os_include/sys/os_msg.h +++ b/ACE/ace/os_include/sys/os_msg.h @@ -27,14 +27,7 @@ #include "ace/os_include/sys/os_ipc.h" #if !defined (ACE_LACKS_SYS_MSG_H) -// OSF1 has problems with sys/msg.h and C++... -# if defined (ACE_HAS_BROKEN_MSG_H) -# define _KERNEL -# endif /* ACE_HAS_BROKEN_MSG_H */ -# include /**/ <sys/msg.h> -# if defined (ACE_HAS_BROKEN_MSG_H) -# undef _KERNEL -# endif /* ACE_HAS_BROKEN_MSG_H */ +# include /**/ <sys/msg.h> #endif /* !ACE_LACKS_SYS_MSG_H */ // Place all additions (especially function declarations) within extern "C" {} diff --git a/ACE/ace/os_include/sys/os_socket.h b/ACE/ace/os_include/sys/os_socket.h index 01f0de3e507..3e18332d1fc 100644 --- a/ACE/ace/os_include/sys/os_socket.h +++ b/ACE/ace/os_include/sys/os_socket.h @@ -213,6 +213,10 @@ extern "C" # define ACE_PROTOCOL_FAMILY_INET PF_INET #endif /* ACE_HAS_IPV6 */ +#if !defined (ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE) +#define ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE SSIZE_MAX +#endif /* ACE_HAS_SOCK_BUF_SIZE_MAX_VALUE */ + #if defined (ACE_HAS_SOCKLEN_T) # if defined (__hpux) /* diff --git a/ACE/ace/os_include/sys/os_types.h b/ACE/ace/os_include/sys/os_types.h index 36be32cf5ec..42780144992 100644 --- a/ACE/ace/os_include/sys/os_types.h +++ b/ACE/ace/os_include/sys/os_types.h @@ -89,9 +89,10 @@ typedef double ACE_timer_t; typedef offset_t ACE_LOFF_T; #elif defined (WIN32) typedef __int64 ACE_LOFF_T; -#elif (defined (ACE_VXWORKS) && (ACE_VXWORKS <= 0x650)) || \ +#elif (defined (ACE_VXWORKS) && (ACE_VXWORKS <= 0x660)) || \ defined (ACE_LYNXOS_MAJOR) || \ - (defined (ACE_OPENVMS) && !defined (_LARGEFILE)) + (defined (ACE_OPENVMS) && !defined (_LARGEFILE)) || \ + defined (__TANDEM) typedef long long ACE_LOFF_T; #else typedef loff_t ACE_LOFF_T; diff --git a/ACE/apps/JAWS/ChangeLog b/ACE/apps/JAWS/ChangeLog index cd9c930c8a1..8fbcef9842b 100644 --- a/ACE/apps/JAWS/ChangeLog +++ b/ACE/apps/JAWS/ChangeLog @@ -1,3 +1,9 @@ +Fri Dec 7 22:00:18 UTC 2007 Will Otte <wotte@dre.Vanderbilt.Edu> + + * server/HTTP_Helpers.cpp: + Replaced format strings passed sscanf as char arrays to be + string literals instead, to address a gcc warning. + Wed Jul 17 14:40:28 UTC 2007 Johnny Willemsen <jwillemsen@remedy.nl> * clients/Caching/http_handler.cpp: diff --git a/ACE/apps/JAWS/server/HTTP_Helpers.cpp b/ACE/apps/JAWS/server/HTTP_Helpers.cpp index 176b471037d..4bbaa6ee498 100644 --- a/ACE/apps/JAWS/server/HTTP_Helpers.cpp +++ b/ACE/apps/JAWS/server/HTTP_Helpers.cpp @@ -56,9 +56,9 @@ HTTP_Helper::HTTP_mktime (const char *httpdate) // rfc850-date = weekday "," SP dd-month-yy SP hh:mm:ss SP "GMT" // asctime-date = wkday SP month dd SP hh:mm:ss SP yyyy - static const char rfc1123_date[] = "%3s,;%2d;%3s;%4d;%2d:%2d:%2d;GMT"; - static const char rfc850_date[] = "%s,;%2d-%3s-%2d;%2d:%2d:%2d;GMT"; - static const char asctime_date[] = "%3s;%3s;%2d;%2d:%2d:%2d;%4d"; + // static const char rfc1123_date[] = "%3s,;%2d;%3s;%4d;%2d:%2d:%2d;GMT"; + // static const char rfc850_date[] = "%s,;%2d-%3s-%2d;%2d:%2d:%2d;GMT"; + // static const char asctime_date[] = "%3s;%3s;%2d;%2d:%2d:%2d;%4d"; // Should also support other versions (such as from NNTP and SMTP) // for robustness, but it should be clear how to extend this. @@ -67,7 +67,7 @@ HTTP_Helper::HTTP_mktime (const char *httpdate) char month[4]; char weekday[10]; - if (::sscanf(buf, rfc1123_date, + if (::sscanf(buf, "%3s,;%2d;%3s;%4d;%2d:%2d:%2d;GMT", // RFC-1123 date format weekday, &tms.tm_mday, month, @@ -76,14 +76,14 @@ HTTP_Helper::HTTP_mktime (const char *httpdate) &tms.tm_min, &tms.tm_sec) == 7) ; - else if (::sscanf(buf, rfc850_date, + else if (::sscanf(buf, "%s,;%2d-%3s-%2d;%2d:%2d:%2d;GMT", // RFC-850 date format weekday, &tms.tm_mday, month, &tms.tm_year, &tms.tm_hour, &tms.tm_min, &tms.tm_sec) == 7) { weekday[3] = '\0'; } - else if (::sscanf(buf, asctime_date, + else if (::sscanf(buf, "%3s;%3s;%2d;%2d:%2d:%2d;%4d", // ASCTIME date format. weekday, month, &tms.tm_mday, &tms.tm_hour, &tms.tm_min, &tms.tm_sec, diff --git a/ACE/apps/gperf/gperf.mpc b/ACE/apps/gperf/gperf.mpc index 446f0f4c0a3..5f593c87afd 100644 --- a/ACE/apps/gperf/gperf.mpc +++ b/ACE/apps/gperf/gperf.mpc @@ -2,8 +2,8 @@ // $Id$ project (gperf_docs) : man { - Man_Files { gperf.1 } + custom_only=1 } diff --git a/ACE/apps/gperf/tests/test.cpp b/ACE/apps/gperf/tests/test.cpp index e5fda938430..0333e3f3b70 100644 --- a/ACE/apps/gperf/tests/test.cpp +++ b/ACE/apps/gperf/tests/test.cpp @@ -23,7 +23,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) while (ACE_OS::fgets (buf, sizeof buf, stdin) != 0) { - int len = ACE_OS::strlen (buf) - 1; + size_t len = ACE_OS::strlen (buf) - 1; buf[len] = '\0'; if (in_word_set (buf, len) && verbose) ACE_OS::printf ("in word set %s\n", buf); diff --git a/ACE/bin/MakeProjectCreator/config/ace_fl.mpb b/ACE/bin/MakeProjectCreator/config/ace_fl.mpb index 315e3f9499e..fd7f56695aa 100644 --- a/ACE/bin/MakeProjectCreator/config/ace_fl.mpb +++ b/ACE/bin/MakeProjectCreator/config/ace_fl.mpb @@ -6,13 +6,13 @@ project : ace_x11, ace_gl { // Depends on configuration from include/makeinclude/platform_*.GNU verbatim(gnuace,local) { - CPPFLAGS += $(PLATFORM_FL_CPPFLAGS) + CPPFLAGS += $(PLATFORM_FL_CPPFLAGS) CPPFLAGS += $(PLATFORM_GL_CPPFLAGS) $(PLATFORM_X11_CPPFLAGS) LIBS += $(PLATFORM_FL_LIBS) $(PLATFORM_GL_LIBS) $(PLATFORM_X11_LIBS) - LDFLAGS += $(PLATFORM_FL_LDFLAGS) $(PLATFORM_GL_LDFLAGS) + LDFLAGS += $(PLATFORM_FL_LDFLAGS) $(PLATFORM_GL_LDFLAGS) LDFLAGS += $(PLATFORM_GL_LDFLAGS) } - specific(vc8,vc71,vc7,vc6) { + specific(vc9,vc8,vc71,vc7,vc6) { libs += fltkdll } diff --git a/ACE/bin/MakeProjectCreator/config/ace_gl.mpb b/ACE/bin/MakeProjectCreator/config/ace_gl.mpb index 69bccb163af..645fd0104aa 100644 --- a/ACE/bin/MakeProjectCreator/config/ace_gl.mpb +++ b/ACE/bin/MakeProjectCreator/config/ace_gl.mpb @@ -10,7 +10,7 @@ project : ace_x11 { LIBS += $(PLATFORM_GL_LIBS) $(PLATFORM_X11_LIBS) LDFLAGS += $(PLATFORM_GL_LDFLAGS) $(PLATFORM_GL_LDFLAGS) } - specific(vc6,vc7,vc71,vc8) { + specific(vc6,vc7,vc71,vc8,vc9) { lit_libs += OpenGL32 } } diff --git a/ACE/bin/MakeProjectCreator/config/ace_qt.mpb b/ACE/bin/MakeProjectCreator/config/ace_qt.mpb index 5b66aa7f68f..3c8635caaf2 100644 --- a/ACE/bin/MakeProjectCreator/config/ace_qt.mpb +++ b/ACE/bin/MakeProjectCreator/config/ace_qt.mpb @@ -21,7 +21,7 @@ project: qt { pure_libs += $(ACE_QT_LIBS) } - specific(vc6, vc7, vc71, vc8, nmake) { + specific(vc6, vc7, vc71, vc8, vc9, nmake) { lit_libs -= qt-mt$(QT_VERSION) pure_libs += $(PLATFORM_QT_LIBS) } diff --git a/ACE/bin/MakeProjectCreator/config/ace_x11.mpb b/ACE/bin/MakeProjectCreator/config/ace_x11.mpb index 0b2f478acc2..38164eb093f 100644 --- a/ACE/bin/MakeProjectCreator/config/ace_x11.mpb +++ b/ACE/bin/MakeProjectCreator/config/ace_x11.mpb @@ -2,7 +2,7 @@ // $Id$ project { - specific(vc6,vc7,vc71,vc8) { + specific(vc6,vc7,vc71,vc8,vc9) { } else { requires += x11 } diff --git a/ACE/bin/MakeProjectCreator/config/acedefaults.mpb b/ACE/bin/MakeProjectCreator/config/acedefaults.mpb index e7d14465290..9135b78e7af 100644 --- a/ACE/bin/MakeProjectCreator/config/acedefaults.mpb +++ b/ACE/bin/MakeProjectCreator/config/acedefaults.mpb @@ -1,7 +1,7 @@ // -*- MPC -*- // $Id$ -project: ipv6, vc8_warnings { +project: ipv6, vc_warnings { staticflags += ACE_AS_STATIC_LIBS includes += $(ACE_ROOT) libpaths += $(ACE_ROOT)/lib @@ -19,7 +19,7 @@ project: ipv6, vc8_warnings { libpaths -= $(ACE_ROOT)/lib } - specific(vc8) { + specific(vc8,vc9) { // Enable structured exception handling ExceptionHandling = 2 } diff --git a/ACE/bin/MakeProjectCreator/config/ipv6.mpb b/ACE/bin/MakeProjectCreator/config/ipv6.mpb index 60ceabf96f0..291cee4960b 100644 --- a/ACE/bin/MakeProjectCreator/config/ipv6.mpb +++ b/ACE/bin/MakeProjectCreator/config/ipv6.mpb @@ -2,7 +2,7 @@ // $Id$ feature(ipv6) { - specific(vc6, vc7, vc71, vc8, nmake, borland, bmake, bds4) { + specific(vc6, vc7, vc71, vc8, vc9, nmake, borland, bmake, bds4) { lit_libs += iphlpapi } diff --git a/ACE/bin/MakeProjectCreator/config/vc9.features b/ACE/bin/MakeProjectCreator/config/vc9.features new file mode 100644 index 00000000000..16181dc6293 --- /dev/null +++ b/ACE/bin/MakeProjectCreator/config/vc9.features @@ -0,0 +1,7 @@ +// $Id$ + +ssl=0 +qos=1 +cidl=0 +rwho=0 +sctp=0 diff --git a/ACE/bin/MakeProjectCreator/config/vc9nmake.mpb b/ACE/bin/MakeProjectCreator/config/vc9nmake.mpb new file mode 100644 index 00000000000..461c8f4bfc9 --- /dev/null +++ b/ACE/bin/MakeProjectCreator/config/vc9nmake.mpb @@ -0,0 +1,11 @@ +// -*- MPC -*- +// $Id$ + +project { + specific(nmake) { + compile_flags -= /EHsc + compile_flags += /EHa + addcompile -= /Wp64 + } +} + diff --git a/ACE/bin/MakeProjectCreator/config/vc8_warnings.mpb b/ACE/bin/MakeProjectCreator/config/vc_warnings.mpb index 46c2b0c65fe..32e49922a7b 100644 --- a/ACE/bin/MakeProjectCreator/config/vc8_warnings.mpb +++ b/ACE/bin/MakeProjectCreator/config/vc_warnings.mpb @@ -1,28 +1,28 @@ // -*- MPC -*- // $Id$ -// This file contains a number of optional features that disable VC8 -// warnings regarding various items that VC8 turned into warnings that were +// This file contains a number of optional features that disable VC +// warnings regarding various items that VC turned into warnings that were // not present in earlier versions. Some people may consider these superfluous // or have already checked code to be sure it causes no trouble. So these // warnings are disabled by default. To enable them, generate your projects // with the feature set to 0. -feature(vc8_avoid_crt_secure_warnings) { - specific(vc8, nmake) { +feature(vc_avoid_crt_secure_warnings) { + specific(vc8, vc9, nmake) { macros += _CRT_SECURE_NO_WARNINGS _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE } } -feature(!vc8_scl_secure_warnings) { - specific(vc8, nmake) { +feature(!vc_scl_secure_warnings) { + specific(vc8, vc9, nmake) { macros += _SCL_SECURE_NO_WARNINGS } } -feature(vc8_avoid_this_in_initializer_warnings) { - specific(vc8) { +feature(vc_avoid_this_in_initializer_warnings) { + specific(vc8, vc9) { DisableSpecificWarnings += 4355 } specific(nmake) { diff --git a/ACE/bin/MakeProjectCreator/docs/templates/gnu.txt b/ACE/bin/MakeProjectCreator/docs/templates/gnu.txt index 4fe86bd9ab8..9d16b357afb 100644 --- a/ACE/bin/MakeProjectCreator/docs/templates/gnu.txt +++ b/ACE/bin/MakeProjectCreator/docs/templates/gnu.txt @@ -11,7 +11,6 @@ cidlc_flags = The default flags for the cidl compiler. dds = Indicates whether or not this project contains DDS code. idl_files = When a Define_Custom(IDL) is used, they will be accessible through this variable name. install = This is a synonym for exeout. -link_groups = This indicates that statically linked executable library names will be surrounded by -Wl,--start-group and -Wl,--end-group for the GNU compiler only. tao = Indicates whether or not this project contains TAO code. tao_idl = The full path to the idl compiler. tao_idl3_to_idl2 = The full path to the idl3 to idl2 compiler. diff --git a/ACE/bin/MakeProjectCreator/templates/gnu.mpd b/ACE/bin/MakeProjectCreator/templates/gnu.mpd index 6af26002efe..93d1d5fe0a8 100644 --- a/ACE/bin/MakeProjectCreator/templates/gnu.mpd +++ b/ACE/bin/MakeProjectCreator/templates/gnu.mpd @@ -453,8 +453,8 @@ endif <%if(staticflags)%> ifeq ($(static_libs),1) CPPFLAGS +=<%foreach(staticflags)%> -D<%staticflag%><%endfor%> -<%if(exename && link_groups)%> - ifeq ($(notdir $(CXX)), g++) +<%if(exename)%> + ifeq ($(link_groups), 1) LDLIBS := -Wl,--start-group $(LDLIBS) -Wl,--end-group endif <%endif%> diff --git a/ACE/bin/PerlACE/ConfigList.pm b/ACE/bin/PerlACE/ConfigList.pm index 65a22272214..023e2f8cc9c 100644 --- a/ACE/bin/PerlACE/ConfigList.pm +++ b/ACE/bin/PerlACE/ConfigList.pm @@ -61,18 +61,18 @@ sub check_config (@) { my $self = shift; my @testconfigs = @_; - my $included = 0; - my $excluded = 0; - my $noincludes = 1; + my $the_config_allows_this = 1; # default case is true + # Go though each ID on the line in turn... foreach my $config (@testconfigs) { - if ($config =~ /^\w/) { $noincludes = 0; } + my $required_found = !($config =~ /^\w/); foreach my $myconfig (@{$self->{MY_CONFIGS}}) { - if ($config eq "!$myconfig") { $excluded = 1; } - if ($config eq $myconfig) { $included = 1; } + if ($config eq "!$myconfig") { $the_config_allows_this = 0; } + if ($config eq $myconfig) { $required_found = 1; } } + if (!$required_found) { $the_config_allows_this = 0; } } - return ($included || $noincludes) && !$excluded; + return $the_config_allows_this; } sub load ($) diff --git a/ACE/bin/PerlACE/ProcessVX_Unix.pm b/ACE/bin/PerlACE/ProcessVX_Unix.pm index 029d2169c6c..c600c957b60 100644 --- a/ACE/bin/PerlACE/ProcessVX_Unix.pm +++ b/ACE/bin/PerlACE/ProcessVX_Unix.pm @@ -201,6 +201,8 @@ sub Spawn () my $t; my $ok; + my $iboot; + my $text; ## ## initialize VxWorks kernel (reboot!) if needed @@ -212,6 +214,36 @@ sub Spawn () system ($ENV{'ACE_RUN_VX_REBOOT_TOOL'}); } else { + if (defined $ENV{'ACE_RUN_VX_IBOOT'}) { + if (defined $ENV{'ACE_TEST_VERBOSE'}) { + print "Using iBoot: $ENV{'ACE_RUN_VX_IBOOT'}\n"; + } + $iboot = IO::Socket::INET->new ("$ENV{'ACE_RUN_VX_IBOOT'}"); + if ($iboot) { + $iboot->send ("\ePASS\ef\r"); + $iboot->recv ($text,128); + if (defined $ENV{'ACE_TEST_VERBOSE'}) { + print "iBoot is currently: $text\n"; + } + close $iboot; + } + else { + print "ERROR: FAILED to execute 'reboot' command!\n"; + } + $iboot = IO::Socket::INET->new ("$ENV{'ACE_RUN_VX_IBOOT'}"); + if ($iboot) { + $iboot->send ("\ePASS\en\r"); + $iboot->recv ($text,128); + if (defined $ENV{'ACE_TEST_VERBOSE'}) { + print "iBoot is currently: $text\n"; + } + close $iboot; + } + else { + print "ERROR: FAILED to execute 'reboot' command!\n"; + } + } + else { if (defined $ENV{'ACE_TEST_VERBOSE'}) { print "Executing 'reboot' command over Telnet to ".$ENV{'ACE_RUN_VX_TGTHOST'}.".\n"; } @@ -228,6 +260,7 @@ sub Spawn () print "ERROR: FAILED to execute 'reboot' command!\n"; } $t->close(); + } } $set_vx_defgw = 1; $do_vx_init = 0; @@ -260,6 +293,14 @@ sub Spawn () @cmds[$cmdnr++] = 'cd "' . $ENV{'ACE_RUN_VX_TGTSVR_ROOT'} . "/" . $cwdrel . '"'; @cmds[$cmdnr++] = 'C putenv("TMPDIR=' . $ENV{"ACE_RUN_VX_TGTSVR_ROOT"} . "/" . $cwdrel . '")'; + if (defined $ENV{'ACE_RUN_ACE_DEBUG'}) { + @cmds[$cmdnr++] = 'putenv("ACE_DEBUG=' . $ENV{"ACE_RUN_ACE_DEBUG"} . '")'; + } + + if (defined $ENV{'ACE_RUN_TAO_ORB_DEBUG'}) { + @cmds[$cmdnr++] = 'putenv("TAO_ORB_DEBUG=' . $ENV{"ACE_RUN_TAO_ORB_DEBUG"} . '")'; + } + if (defined $ENV{'ACE_RUN_VX_CHECK_RESOURCES'}) { @cmds[$cmdnr++] = 'C memShow()'; } @@ -276,6 +317,14 @@ sub Spawn () @cmds[$cmdnr++] = 'cd "' . $ENV{'ACE_RUN_VX_TGTSVR_ROOT'} . "/" . $cwdrel . '"'; @cmds[$cmdnr++] = 'putenv("TMPDIR=' . $ENV{"ACE_RUN_VX_TGTSVR_ROOT"} . "/" . $cwdrel . '")'; + if (defined $ENV{'ACE_RUN_ACE_DEBUG'}) { + @cmds[$cmdnr++] = 'putenv("ACE_DEBUG=' . $ENV{"ACE_RUN_ACE_DEBUG"} . '")'; + } + + if (defined $ENV{'ACE_RUN_TAO_ORB_DEBUG'}) { + @cmds[$cmdnr++] = 'putenv("TAO_ORB_DEBUG=' . $ENV{"ACE_RUN_TAO_ORB_DEBUG"} . '")'; + } + if (defined $ENV{'ACE_RUN_VX_CHECK_RESOURCES'}) { @cmds[$cmdnr++] = 'memShow()'; } diff --git a/ACE/bin/PerlACE/ProcessVX_Win32.pm b/ACE/bin/PerlACE/ProcessVX_Win32.pm index 80c8acce3c8..78693dac747 100644 --- a/ACE/bin/PerlACE/ProcessVX_Win32.pm +++ b/ACE/bin/PerlACE/ProcessVX_Win32.pm @@ -89,8 +89,6 @@ sub Normalize_Executable_Name $executable = $dirname.$basename.$self->{EXE_EXT}; } - $executable =~ s/\//\\/g; # / <- # color coding issue in devenv - return $executable; } @@ -110,7 +108,6 @@ sub Executable } else { $executable = $executable.$self->{EXE_EXT}; - $executable =~ s/\//\\/g; # / <- # color coding issue in devenv } return $executable; @@ -187,6 +184,8 @@ sub Spawn () my $t; my $ok; + my $iboot; + my $text; ## ## initialize VxWorks kernel (reboot!) if needed @@ -198,6 +197,36 @@ sub Spawn () system ($ENV{'ACE_RUN_VX_REBOOT_TOOL'}); } else { + if (defined $ENV{'ACE_RUN_VX_IBOOT'}) { + if (defined $ENV{'ACE_TEST_VERBOSE'}) { + print "Using iBoot: $ENV{'ACE_RUN_VX_IBOOT'}\n"; + } + $iboot = IO::Socket::INET->new ("$ENV{'ACE_RUN_VX_IBOOT'}"); + if ($iboot) { + $iboot->send ("\ePASS\ef\r"); + $iboot->recv ($text,128); + if (defined $ENV{'ACE_TEST_VERBOSE'}) { + print "iBoot is currently: $text\n"; + } + close $iboot; + } + else { + print "ERROR: FAILED to execute 'reboot' command!\n"; + } + $iboot = IO::Socket::INET->new ("$ENV{'ACE_RUN_VX_IBOOT'}"); + if ($iboot) { + $iboot->send ("\ePASS\en\r"); + $iboot->recv ($text,128); + if (defined $ENV{'ACE_TEST_VERBOSE'}) { + print "iBoot is currently: $text\n"; + } + close $iboot; + } + else { + print "ERROR: FAILED to execute 'reboot' command!\n"; + } + } + else { if (defined $ENV{'ACE_TEST_VERBOSE'}) { print "Executing 'reboot' command over Telnet to ".$ENV{'ACE_RUN_VX_TGTHOST'}.".\n"; } @@ -214,6 +243,7 @@ sub Spawn () print "ERROR: FAILED to execute 'reboot' command!\n"; } $t->close(); + } } $set_vx_defgw = 1; $do_vx_init = 0; @@ -229,6 +259,7 @@ sub Spawn () else { $cwdrel = File::Spec->abs2rel( $cwdrel, $ENV{"ACE_ROOT"} ); } + $cwdrel =~ s/\\/\//g; $program = basename($program, $self->{EXE_EXT}); unlink "run_vx.pl"; @@ -253,6 +284,14 @@ sub Spawn () @cmds[$cmdnr++] = 'cd "' . $ENV{'ACE_RUN_VX_TGTSVR_ROOT'} . "/" . $cwdrel . '"'; @cmds[$cmdnr++] = 'C putenv("TMPDIR=' . $ENV{"ACE_RUN_VX_TGTSVR_ROOT"} . "/" . $cwdrel . '")'; + if (defined $ENV{'ACE_RUN_ACE_DEBUG'}) { + @cmds[$cmdnr++] = 'putenv("ACE_DEBUG=' . $ENV{"ACE_RUN_ACE_DEBUG"} . '")'; + } + + if (defined $ENV{'ACE_RUN_TAO_ORB_DEBUG'}) { + @cmds[$cmdnr++] = 'putenv("TAO_ORB_DEBUG=' . $ENV{"ACE_RUN_TAO_ORB_DEBUG"} . '")'; + } + if (defined $ENV{'ACE_RUN_VX_CHECK_RESOURCES'}) { @cmds[$cmdnr++] = 'C memShow()'; } @@ -273,6 +312,14 @@ sub Spawn () @cmds[$cmdnr++] = 'memShow()'; } + if (defined $ENV{'ACE_RUN_ACE_DEBUG'}) { + @cmds[$cmdnr++] = 'putenv("ACE_DEBUG=' . $ENV{"ACE_RUN_ACE_DEBUG"} . '")'; + } + + if (defined $ENV{'ACE_RUN_TAO_ORB_DEBUG'}) { + @cmds[$cmdnr++] = 'putenv("TAO_ORB_DEBUG=' . $ENV{"ACE_RUN_TAO_ORB_DEBUG"} . '")'; + } + @cmds[$cmdnr++] = 'ld <'. $program . $self->{EXE_EXT}; $cmdline = $program . $self->{EXE_EXT} . ' ' . $self->{ARGUMENTS}; if (defined $self->{ARGUMENTS}) { diff --git a/ACE/bin/PerlACE/perlace.mpc b/ACE/bin/PerlACE/perlace.mpc index ee60bdc70a9..8139eee3a2d 100644 --- a/ACE/bin/PerlACE/perlace.mpc +++ b/ACE/bin/PerlACE/perlace.mpc @@ -9,4 +9,5 @@ project(PerlACE) : script { Process_Win32.pm Run_Test.pm } + custom_only=1 } diff --git a/ACE/bin/fuzz.pl b/ACE/bin/fuzz.pl index 10b159781b1..297ef6244c1 100755 --- a/ACE/bin/fuzz.pl +++ b/ACE/bin/fuzz.pl @@ -287,6 +287,89 @@ sub check_for_noncvs_files () } } +# This test checks for the use of ACE_SYNCH_MUTEX in TAO/CIAO, +# TAO_SYNCH_MUTEX should used instead. + +sub check_for_ACE_SYNCH_MUTEX () +{ + print "Running ACE_SYNCH_MUTEX check\n"; + ITERATION: foreach $file (@files_cpp, @files_inl, @files_h) { + if (open (FILE, $file)) { + my $disable = 0; + print "Looking at file $file\n" if $opt_d; + while (<FILE>) { + ++$line; + if (/FUZZ\: disable check_for_ACE_SYNCH_MUTEX/) { + $disable = 1; + } + if (/FUZZ\: enable check_for_ACE_SYNCH_MUTEX/) { + $disable = 0; + next ITERATION; + } + if ($disable == 0 and /ACE_SYNCH_MUTEX/) { + # It is okay to use ACE_SYNCH_MUTEX in ACE + # so don't check the ACE directory. The below + # will check it for TAO and CIAO. + if (($file !~ /.*TAO.*/)) { + next ITERATION; + } + + # Disable the check in the ESF directory for the + # time being until we fix the issues there. + if(($file =~ /.*TAO\/orbsvcs\/orbsvcs\/ESF.*/)) { + next ITERATION; + } + + print_error ("$file:$.: found ACE_SYNCH_MUTEX, use TAO_SYNCH_MUTEX instead"); + } + } + close (FILE); + } + else { + print STDERR "Error: Could not open $file\n"; + } + } +} + +# This test checks for the use of ACE_Thread_Mutex in TAO/CIAO, +# TAO_SYNCH_MUTEX should used instead to make the code build +# in single-threaded builds. + +sub check_for_ACE_Thread_Mutex () +{ + print "Running ACE_Thread_Mutex check\n"; + ITERATION: foreach $file (@files_cpp, @files_inl, @files_h) { + if (open (FILE, $file)) { + my $disable = 0; + print "Looking at file $file\n" if $opt_d; + while (<FILE>) { + ++$line; + if (/FUZZ\: disable check_for_ACE_Thread_Mutex/) { + $disable = 1; + } + if (/FUZZ\: enable check_for_ACE_Thread_Mutex/) { + $disable = 0; + next ITERATION; + } + if ($disable == 0 and /ACE_Thread_Mutex/) { + # It is okay to use ACE_Thread_Mutex in ACE + # so don't check the ACE directory. The below + # will check it for TAO and CIAO. + if (($file !~ /.*TAO.*/)) { + next ITERATION; + } + + print_error ("$file:$.: found ACE_Thread_Mutex, use TAO_SYNCH_MUTEX instead to allow the code to work in single-threaded builds"); + } + } + close (FILE); + } + else { + print STDERR "Error: Could not open $file\n"; + } + } +} + # This test checks for the use of tabs, spaces should be used instead of tabs sub check_for_tab () { @@ -1681,6 +1764,8 @@ if (!getopts ('cdhl:t:mv') || $opt_h) { check_for_inline_in_cpp check_for_id_string check_for_newline + check_for_ACE_SYNCH_MUTEX + check_for_ACE_Thread_Mutex check_for_tab check_for_exception_spec check_for_NULL @@ -1742,6 +1827,8 @@ check_for_makefile_variable () if ($opt_l >= 1); check_for_inline_in_cpp () if ($opt_l >= 2); check_for_id_string () if ($opt_l >= 1); check_for_newline () if ($opt_l >= 1); +check_for_ACE_Thread_Mutex () if ($opt_l >= 1); +check_for_ACE_SYNCH_MUTEX () if ($opt_l >= 1); check_for_tab () if ($opt_l >= 1); check_for_lack_ACE_OS () if ($opt_l >= 10); check_for_exception_spec () if ($opt_l >= 1); diff --git a/ACE/bin/make_release.py b/ACE/bin/make_release.py index bdbdc6cde1b..a4f7f74ea52 100755 --- a/ACE/bin/make_release.py +++ b/ACE/bin/make_release.py @@ -694,6 +694,10 @@ def generate_workspaces (stage_dir): static_vc8_option = ' -static -name_modifier *_vc8_Static -apply_project -exclude TAO/CIAO ' static_vc8_option += mpc_option + static_vc9_option = ' -static -name_modifier *_vc9_Static -apply_project -exclude TAO/CIAO ' + static_vc9_option += mpc_option + + vc9_option = ' -name_modifier *_vc9 ' vc8_option = ' -name_modifier *_vc8 ' vc71_option = ' -name_modifier *_vc71 ' @@ -712,6 +716,9 @@ def generate_workspaces (stage_dir): print "\tGenerating GNUmakefiles...." ex (mpc_command + " -type gnuace " + exclude_option + mpc_option + redirect_option) + print "\tGenerating VC9 solutions..." + ex (mpc_command + " -type vc9 " + mpc_option + vc9_option + redirect_option) + print "\tGenerating VC8 solutions..." ex (mpc_command + " -type vc8 " + mpc_option + vc8_option + redirect_option) @@ -730,6 +737,9 @@ def generate_workspaces (stage_dir): print "\tGenerating VC8 Static solutions" ex (mpc_command + " -type vc8 " + static_vc8_option + redirect_option) + print "\tGenerating VC9 Static solutions" + ex (mpc_command + " -type vc9 " + static_vc9_option + redirect_option) + print "\tBootstrapping autotools support" ex ("bin/bootstrap " + redirect_option) diff --git a/ACE/bin/msvc_mpc_auto_compile.pl b/ACE/bin/msvc_mpc_auto_compile.pl index 03a35a680c0..02033d3be37 100755 --- a/ACE/bin/msvc_mpc_auto_compile.pl +++ b/ACE/bin/msvc_mpc_auto_compile.pl @@ -261,6 +261,10 @@ while ( $#ARGV >= 0 && $ARGV[0] =~ /^(-|\/)/ ) print "Using VC8 files\n" if ( $verbose ); $vc7 = 1; # vc8 is like vc7 } + elsif ($ARGV[0] =~ '-vc9') { # Use VC9 project and solution files. + print "Using VC9 files\n" if ( $verbose ); + $vc7 = 1; # vc9 is like vc7 + } elsif ($ARGV[0] =~ '-v') { # verbose mode $verbose = 1; } diff --git a/ACE/bin/msvc_static_compile.pl b/ACE/bin/msvc_static_compile.pl index 7798f931d10..aadc0039ffe 100755 --- a/ACE/bin/msvc_static_compile.pl +++ b/ACE/bin/msvc_static_compile.pl @@ -261,6 +261,11 @@ while ( $#ARGV >= 0 && $ARGV[0] =~ /^(-|\/)/ ) $vc7 = 1; # VC8 is like VC7 $proj_ext = '.vcproj'; } + elsif ($ARGV[0] =~ '-vc9') { # Use VC9 project and solution files. + print "Using VC9 files\n" if ( $verbose ); + $vc7 = 1; # VC9 is like VC7 + $proj_ext = '.vcproj'; + } elsif ($ARGV[0] =~ '-v') { # verbose mode $verbose = 1; } diff --git a/ACE/bin/tao_orb_tests.lst b/ACE/bin/tao_orb_tests.lst index 252513ea90e..902ea099f42 100644 --- a/ACE/bin/tao_orb_tests.lst +++ b/ACE/bin/tao_orb_tests.lst @@ -50,7 +50,7 @@ TAO/tests/Bug_1535_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MI TAO/tests/Bug_1568_Regression/run_test.pl: !NO_MESSAGING !CORBA_E_MICRO TAO/tests/Bug_1670_Regression/run_test.pl: !NO_MESSAGING !CORBA_E_MICRO TAO/tests/Bug_1270_Regression/run_test.pl: !Win32 !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO -TAO/tests/Bug_1020_Basic_Regression/run_test.pl: !Win32 !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST +TAO/tests/Bug_1020_Basic_Regression/run_test.pl: !Win32 !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST !VxWorks TAO/tests/Bug_1020_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST !Win32 TAO/tests/Bug_1254_Regression/run_test.pl: TAO/tests/Bug_1330_Regression/run_test.pl: @@ -105,6 +105,9 @@ TAO/tests/Bug_2966_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MI TAO/tests/Bug_3000_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO TAO/tests/Bug_3042_Regression/run_test.pl: TAO/tests/Bug_3108_Regression/run_test.pl: !ST +TAO/tests/Bug_3154_Regression/run_test.pl: +TAO/tests/Bug_3163_Regression/run_test.pl: +TAO/tests/Bug_3171_Regression/run_test.pl: !ST !MINIMUM TAO/tests/DIOP/run_test.pl: !ST !NO_DIOP !ACE_FOR_TAO !CORBA_E_MICRO TAO/tests/DIOP/run_test_ipv6.pl: IPV6 !ST !NO_DIOP !ACE_FOR_TAO !CORBA_E_MICRO TAO/tests/RTCORBA/Activate_Object_Multiple_ORBs/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST @@ -156,7 +159,7 @@ TAO/tests/No_Server_MT_Connect_Test/run_test.pl: !ST !MINIMUM !CORBA_E_COMPACT ! TAO/tests/Connect_Strategy_Test/run_test.pl: # DISABLED TAO/tests/Client_Leaks/run_test.pl: !VxWorks !ST !Tru64 TAO/tests/Server_Leaks/run_test.pl -TAO/tests/Smart_Proxies/Policy/run_test.pl: !VxWorks +TAO/tests/Smart_Proxies/Policy/run_test.pl: TAO/tests/Smart_Proxies/run_test.pl: TAO/tests/Smart_Proxies/dtor/run_test.pl: TAO/tests/Stack_Recursion/run_test.pl: !ST !DISABLE_ToFix_LynxOS_PPC @@ -251,7 +254,7 @@ TAO/tests/Oneways_Invoking_Twoways/run_test.pl: !ST TAO/tests/Queued_Message_Test/run_test.pl: TAO/tests/DLL_ORB/run_test.pl: !STATIC TAO/tests/InterOp-Naming/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO -TAO/tests/Multiple/run_test.pl: !VxWorks !SUNCC5_1 +TAO/tests/Multiple/run_test.pl: !SUNCC5_1 TAO/tests/Exposed_Policies/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST !ACE_FOR_TAO TAO/tests/Portable_Interceptors/Bug_1559/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !DISABLE_INTERCEPTORS TAO/tests/Portable_Interceptors/Bug_2510_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !DISABLE_INTERCEPTORS !ST @@ -278,8 +281,9 @@ TAO/tests/Portable_Interceptors/AdvSlotExt/run_test.pl: !MINIMUM !CORBA_E_COMPAC TAO/tests/Portable_Interceptors/Redirection/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !DISABLE_INTERCEPTORS TAO/tests/Portable_Interceptors/Bug_3079/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !DISABLE_INTERCEPTORS TAO/tests/Portable_Interceptors/Bug_3080/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !DISABLE_INTERCEPTORS +TAO/tests/Portable_Interceptors/Bug_2133/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !DISABLE_INTERCEPTORS TAO/tests/ORT/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !DISABLE_INTERCEPTORS -TAO/tests/Object_Loader/run_test.pl: !VxWorks !STATIC +TAO/tests/Object_Loader/run_test.pl: !STATIC TAO/tests/Two_Objects/run_test.pl: !ST TAO/tests/TransportCurrent/Framework/run_test.pl -dynamic: !DISABLE_TRANSPORT_CURRENT !STATIC !DISABLE_INTERCEPTORS !MINIMUM TAO/tests/TransportCurrent/Framework/run_test.pl -static: !DISABLE_TRANSPORT_CURRENT STATIC !DISABLE_INTERCEPTORS !MINIMUM @@ -292,36 +296,37 @@ TAO/tests/Sequence_Unit_Tests/run_test.pl -noboost: TAO/tests/Sequence_Unit_Tests/run_test.pl -boost: BOOST TAO/tests/Typedef_String_Array/run_test.pl: TAO/tests/GIOP_Fragments/PMB_With_Fragments/run_test.pl: !CORBA_E_MICRO -TAO/tests/CodeSets/simple/run_test.pl: !VxWorks !GIOP10 !STATIC +TAO/tests/CodeSets/simple/run_test.pl: !GIOP10 !STATIC TAO/tests/Hang_Shutdown/run_test.pl: !ST !ACE_FOR_TAO TAO/tests/Any/Recursive/run_test.pl: !STATIC !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_1/run_test.pl: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl collocated: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote_orbthreads: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote_servants: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote_csdthreads: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote_big: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl big: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl collocated: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote_orbthreads: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote_servants: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote_csdthreads: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote_big: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl big: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl collocated: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote_orbthreads: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote_servants: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote_csdthreads: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote_big: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl big: !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_Dynamic/run_test.pl: !STATIC !ST !VxWorks !CORBA_E_MICRO -TAO/tests/CSD_Strategy_Tests/TP_Test_Static/run_test.pl: !ST !VxWorks !CORBA_E_MICRO +TAO/tests/CSD_Strategy_Tests/TP_Test_1/run_test.pl: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl collocated: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote_orbthreads: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote_servants: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote_csdthreads: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl remote_big: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_2/run_test.pl big: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl collocated: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote_orbthreads: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote_servants: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote_csdthreads: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl remote_big: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_3/run_test.pl big: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl collocated: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote_orbthreads: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote_servants: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote_csdthreads: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl remote_big: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_4/run_test.pl big: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_Dynamic/run_test.pl: !STATIC !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Strategy_Tests/TP_Test_Static/run_test.pl: !ST !CORBA_E_MICRO !LynxOS +TAO/tests/CSD_Collocation/run_test.pl: !ST !CORBA_E_COMPACT !CORBA_E_MICRO !MINIMUM !LynxOS TAO/tests/Permanent_Forward/run_test.pl: TAO/tests/Parallel_Connect_Strategy/run_test.pl: TAO/tests/DII_Collocation_Tests/oneway/run_test.pl: !ST !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO diff --git a/ACE/bin/tao_other_tests.lst b/ACE/bin/tao_other_tests.lst index 0a83c81e9fa..042f641e407 100644 --- a/ACE/bin/tao_other_tests.lst +++ b/ACE/bin/tao_other_tests.lst @@ -94,6 +94,8 @@ TAO/orbsvcs/tests/InterfaceRepo/IFR_Inheritance_Test/run_test.pl: !MINIMUM !COR TAO/orbsvcs/tests/InterfaceRepo/Latency_Test/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NO_IFR !ACE_FOR_TAO TAO/orbsvcs/tests/InterfaceRepo/Persistence_Test/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NO_IFR !ACE_FOR_TAO TAO/orbsvcs/tests/InterfaceRepo/Bug_2962_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NO_IFR !ACE_FOR_TAO +TAO/orbsvcs/tests/InterfaceRepo/Bug_3155_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NO_IFR !ACE_FOR_TAO +TAO/orbsvcs/tests/InterfaceRepo/Bug_3174_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !NO_IFR !ACE_FOR_TAO TAO/orbsvcs/tests/ImplRepo/run_test.pl both_ir: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ACE_FOR_TAO TAO/orbsvcs/tests/ImplRepo/run_test.pl nestea_ir: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ACE_FOR_TAO TAO/orbsvcs/tests/ImplRepo/run_test.pl airplane_ir: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ACE_FOR_TAO diff --git a/ACE/configure.ac b/ACE/configure.ac index 37fb079b94f..2ea6f6481c8 100644 --- a/ACE/configure.ac +++ b/ACE/configure.ac @@ -57,7 +57,7 @@ dnl Check what platform we are running on. AC_CANONICAL_TARGET([]) dnl Initialize GNU Automake, and require Automake 1.9.6 or better. -AM_INIT_AUTOMAKE([1.9.6 foreign no-define]) +AM_INIT_AUTOMAKE([1.9.6 foreign no-define nostdinc]) dnl Add maintainer mode option to the option list. dnl AM_MAINTAINER_MODE @@ -2490,7 +2490,16 @@ ACE_CACHE_CHECK([if const char * can be rvalue in conditional operator], ],,[AC_DEFINE([ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS])]) dnl Check if templates require source on platform -dnl FIXME: This test may be broken. +dnl +dnl FIXME: This test may be broken. +dnl +dnl FIXME: This test contains vestigial bits of tests for explicit +dnl template instantiation feature macros, even though support for +dnl the same has been removed. +dnl +dnl A rewrite to test only whether ACE_TEMPLATES_REQUIRE_SOURCE or +dnl ACE_TEMPLATES_REQUIRE_PRAGMA is clearly needed. +dnl ACE_CACHE_CHECK([if templates require source], [ace_cv_feature_templates_require_source], [ @@ -2954,40 +2963,6 @@ dnl END OUTER REQUIRE PRAGMA ######################################### ]) ]) -ACE_CACHE_CHECK([if explicit template instantiation is needed], - [ace_cv_feature_explicit_template_instantiation], - [ - AC_MSG_ERROR([ -Bug in configure script, check for need of explicit template -instantiation should have occurred during check for need of template -source. Please e-mail the maintainer of this configure script: - $ACE_CONFIGURE_MAINTAINER -this message. - ]) - ], - [ - AC_DEFINE([ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION]) - ], - [ - ACE_CACHE_CHECK([if pragma template instantiation is needed], - [ace_cv_feature_pragma_template_instantiation], - [ - AC_MSG_FAILURE([ -Bug in configure script, check for need of pragma template -instantiation should have occurred during check for need of template -source. Please e-mail the maintainer of this configure script: - $ACE_CONFIGURE_MAINTAINER -this message. - ]) - ], - [ - AC_DEFINE([ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA]) - ], - [ - dnl Do nothing - ]) - ]) - dnl Check if platform supports template specialization ACE_CACHE_CHECK([for template specialization], @@ -3468,7 +3443,18 @@ ACE_CHECK_LACKS_FUNCS(alarm) ACE_CHECK_LACKS_FUNCS(bsearch) -ACE_CHECK_HAS_FUNCS(bswap_16 bswap_32 bswap_64) +ACE_CHECK_HAS_DEFINES([bswap16]) +if test "$ace_cv_defined_bswap16" = no; then + ACE_CHECK_HAS_DEFINES([bswap_16]) +fi +ACE_CHECK_HAS_DEFINES([bswap32]) +if test "$ace_cv_defined_bswap32" = no; then + ACE_CHECK_HAS_DEFINES([bswap_32]) +fi +ACE_CHECK_HAS_DEFINES([bswap64]) +if test "$ace_cv_defined_bswap64" = no; then + ACE_CHECK_HAS_DEFINES([bswap_64]) +fi ACE_CHECK_LACKS_FUNCS(chdir) @@ -4115,6 +4101,8 @@ ACE_CHECK_LACKS_FUNCS(unlink) ACE_CHECK_HAS_FUNCS(vasprintf vaswprintf vfwprintf vswprintf) +ACE_CHECK_HAS_FUNCS(wcsnlen) + ACE_CHECK_LACKS_FUNCS(fgetws fputws itow towlower towupper wcscat wcschr wcscmp wcscpy wcscspn wcslen wcsncat wcsncmp wcsncpy wcsnicmp wcspbrk wcsrchr wcsspn wcsstr wcstod wcstok wcstol wcstoul) if test "$ac_cv_func_wcstok" = yes; then @@ -4428,7 +4416,8 @@ main () dnl action if cross-compiling ace_cv_sem_timedwait_works=yes ]) - ],,) + ], + [AC_DEFINE([ACE_HAS_POSIX_SEM_TIMEOUT])],) fi @@ -7040,7 +7029,8 @@ ACE_CACHE_CHECK([if running on an Alpha], dnl We only define ACE_HAS_ALPHA_TIMER if we are running Linux dnl on an Alpha and are using GNU C++! if test "$GXX" = yes; then - AC_DEFINE([ACE_HAS_ALPHA_TIMER]) + AC_DEFINE([ACE_HAS_ALPHA_TIMER], 1, + [Define to 1 if system should use Alpha's cycle counter]) fi ;; esac @@ -7066,7 +7056,8 @@ ACE_CACHE_CHECK([if running on a Power PC], *) dnl Only define ACE_HAS_POWERPC_TIMER when using GNU C++! if test "$GXX" = yes; then - AC_DEFINE([ACE_HAS_POWERPC_TIMER]) + AC_DEFINE([ACE_HAS_POWERPC_TIMER], 1, + [Define to 1 if system should use PowerPC's cycle counter]) fi ;; esac @@ -7091,10 +7082,27 @@ dnl since gethrtime.cpp uses assembler code specific to that compiler. esac ], [ - AC_DEFINE([ACE_HAS_PENTIUM]) + AC_DEFINE([ACE_HAS_PENTIUM], 1, + [Define to 1 if system is using Intel Pentium(tm) processor]) ],) AM_CONDITIONAL([ACE_ON_PENTIUM], [test X$ace_cv_feature_pentium = Xyes]) +case "$host" in + i386-* | i486-* | i586-* | i686-* | x86_64-*) + if test "$GXX" = yes; then + ace_cv_has_intel_assembly=yes + else + ace_cv_has_intel_assembly=no + fi + ;; + *) + ace_cv_has_intel_assembly=no + ;; +esac +if test "$ace_cv_has_intel_assembly" != "no"; then + AC_DEFINE([ACE_HAS_INTEL_ASSEMBLY], 1, + [Define to 1 if the system supports x86/x86_64 inline assembly]) +fi dnl dnl SECTION 14: checks for aggregated features diff --git a/ACE/contrib/minizip/minizip.mpc b/ACE/contrib/minizip/minizip.mpc index c6b5dc3daa6..d02914de641 100644 --- a/ACE/contrib/minizip/minizip.mpc +++ b/ACE/contrib/minizip/minizip.mpc @@ -1,7 +1,7 @@ // -*- MPC -*- // $Id$ -project (minizip) : zlib, vc8_warnings { +project (minizip) : zlib, vc_warnings { sharedname = minizip libout = $(ACE_ROOT)/lib dynamicflags += MINIZIP_BUILD_DLL diff --git a/ACE/docs/ACE-bug-process.html b/ACE/docs/ACE-bug-process.html index 41ca26b6417..5ae7e0d2b39 100644 --- a/ACE/docs/ACE-bug-process.html +++ b/ACE/docs/ACE-bug-process.html @@ -176,6 +176,17 @@ that can be used to keep track of changes to your platform/compiler combiation and ensure things continue to work as the ACE+TAO source code evolves. <P> +<LI> By submitting bug fixes submitters acknowledge that they have the +right to do so, that any such submissions are given freely and +unreservedly, and that they waive any claims to copyright or +ownership. In addition, submitters acknowledge that any such +submission might become part of the copyright maintained on the +overall body of code that comprises the DOC software. By making a bug +fix submission, submitter agree to these terms. Moreover, submitters +acknowledge that the incorporation or modification of such submissions +is entirely at the discretion of the moderators of the open-source DOC +software projects or their designees. <P> + </OL> Please be sensitive to the fact that the core <A diff --git a/ACE/docs/ACE-development-process.html b/ACE/docs/ACE-development-process.html index ecae894332e..5c4717c199c 100644 --- a/ACE/docs/ACE-development-process.html +++ b/ACE/docs/ACE-development-process.html @@ -173,6 +173,28 @@ into the repository etc. The idea is to allow commercial support vendors to stabilize the major or minor release for their product offerings. <p> +<p><hr> +<H3>Contributions from the Open-Source Community</H3> +<P> + +Over the years, ACE+TAO+CIAO have benefitted significantly from +contributions by <A +HREF="http://www.cs.wustl.edu/~schmidt/ACE-members.html">thousands</A> +of deveopers in the open-source community. To avoid fragmentation of +the code base, by submitting comments, suggestions, code, code +snippets, techniques (including that of usage) and algorithms +(collectively ``Submissions''), submitters acknowledge that they have +the right to do so, that any such Submissions are given freely and +unreservedly, and that they waive any claims to copyright or +ownership. In addition, submitters acknowledge that any such +Submission might become part of the copyright maintained on the +overall body of code that comprises the open-source DOC Group +software. By making a Submission, submitter agree to these terms. +Moreover, submitters acknowledge that the incorporation or +modification of such Submissions is entirely at the discretion of the +moderators of the open-source DOC software projects or their +designees. + <hr><p> <font size=-1> Last modified diff --git a/ACE/docs/Download.html b/ACE/docs/Download.html index 606f1ac7ac9..2684bdcadd6 100644 --- a/ACE/docs/Download.html +++ b/ACE/docs/Download.html @@ -65,7 +65,7 @@ document to decide which version below is more appropriate for your case. You may want to understand the DOC group's <A HREF="https://svn.dre.vanderbilt.edu/viewvc/Middleware/trunk/ACE/docs/ACE-bug-process.html?revision=HEAD"> bug fixing policies</A> when you make this decision. -</P>The full packages do contain all sources with pre generated makefiles for GNU make, Visual C++ 7.1/8.0, Borland +</P>The full packages do contain all sources with pre generated makefiles for GNU make, Visual C++ 7.1/8.0/9.0, Borland C++ make, and GNU autoconf. The sources only packes just contain the sources, you have to generate your own makefiles with MPC. </P> @@ -80,101 +80,101 @@ of the ACE, TAO, and CIAO beta kit is available for <TR><TH>Filename</TH><TH>Description</TH><TH>Full</TH><TH>Sources only</TH></TR> <TR><TD>ACE+TAO+CIAO.tar.gz</TD> <TD>ACE+TAO+CIAO (tar+gzip format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.1.tar.gz">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.1.tar.gz">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.2.tar.gz">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.2.tar.gz">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.1.tar.gz">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.1.tar.gz">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.2.tar.gz">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.2.tar.gz">FTP</A>] </TD> </TR> <TR><TD>ACE+TAO+CIAO.tar.bz2</TD> <TD>ACE+TAO+CIAO (tar+bzip2 format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.1.tar.bz2">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.1.tar.bz2">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.2.tar.bz2">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.2.tar.bz2">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.1.tar.bz2">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.1.tar.bz2">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.2.tar.bz2">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.2.tar.bz2">FTP</A>] </TD> </TR> <TR><TD>ACE+TAO+CIAO.zip</TD> <TD>ACE+TAO+CIAO (zip format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.1.zip">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.1.zip">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.2.zip">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-5.6.2.zip">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.1.zip">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.1.zip">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.2.zip">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO+CIAO-src-5.6.2.zip">FTP</A>] </TD> </TR> <TR><TD>ACE+TAO.tar.gz</TD> <TD>ACE+TAO (tar+gzip format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.1.tar.gz">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.1.tar.gz">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.2.tar.gz">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.2.tar.gz">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.1.tar.gz">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.1.tar.gz">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.2.tar.gz">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.2.tar.gz">FTP</A>] </TD> </TR> <TR><TD>ACE+TAO.tar.bz2</TD> <TD>ACE+TAO (tar+bzip2 format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.1.tar.bz2">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.1.tar.bz2">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.2.tar.bz2">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.2.tar.bz2">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.1.tar.bz2">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.1.tar.bz2">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.2.tar.bz2">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.2.tar.bz2">FTP</A>] </TD> </TR> <TR><TD>ACE+TAO.zip</TD> <TD>ACE+TAO (zip format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.1.zip">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.1.zip">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.2.zip">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-5.6.2.zip">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.1.zip">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.1.zip">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.2.zip">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-5.6.2.zip">FTP</A>] </TD> </TR> <TR><TD>ACE-html.tar.gz</TD> <TD>Doxygen documentation for ACE+TAO+CIAO (tar+gzip format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.1.tar.gz">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.1.tar.gz">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.2.tar.gz">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.2.tar.gz">FTP</A>] </TD> </TR> <TR><TD>ACE-html.tar.bz2</TD> <TD>Doxygen documentation for ACE+TAO+CIAO (tar+bzip2 format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.1.tar.bz2">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.1.tar.bz2">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.2.tar.bz2">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.2.tar.bz2">FTP</A>] </TD> </TR> <TR><TD>ACE-html.zip</TD> <TD>Doxygen documentation for ACE+TAO+CIAO (zip format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.1.zip">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.1.zip">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.2.zip">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-5.6.2.zip">FTP</A>] </TD> </TR> <TR><TD>ACE.tar.gz</TD> <TD>ACE only (tar+gzip format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.1.tar.gz">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.1.tar.gz">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.2.tar.gz">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.2.tar.gz">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.1.tar.gz">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.1.tar.gz">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.2.tar.gz">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.2.tar.gz">FTP</A>] </TD> </TR> <TR><TD>ACE.tar.bz2</TD> <TD>ACE only (tar+bzip2 format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.1.tar.bz2">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.1.tar.bz2">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.2.tar.bz2">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.2.tar.bz2">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.1.tar.bz2">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.1.tar.bz2">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.2.tar.bz2">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.2.tar.bz2">FTP</A>] </TD> </TR> <TR><TD>ACE.zip</TD> <TD>ACE only (zip format)</TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.1.zip">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.1.zip">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.2.zip">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-5.6.2.zip">FTP</A>] </TD> - <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.1.zip">HTTP</A>] - [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.1.zip">FTP</A>] + <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.2.zip">HTTP</A>] + [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-5.6.2.zip">FTP</A>] </TD> </TR> </TABLE> diff --git a/ACE/docs/bczar/bczar.html b/ACE/docs/bczar/bczar.html index 22446bbde7f..7e076de8c83 100644 --- a/ACE/docs/bczar/bczar.html +++ b/ACE/docs/bczar/bczar.html @@ -181,10 +181,9 @@ you execute these commands all users can download these packages.</li> <code> cp $DOC_ROOT/packages-PID/ACE* /export/www/download.dre/ACE+TAO-distribution<br> </code> -<li>Once the distribution is ready, get ready for creating doxygen -documentation. This is slightly complicated than it requires. We will -address the complexity soon.</li> -<li>Login to naboo.dre.vanderbilt.edu as bczar</li> +<li>After the repository is tagged you can start generating the doxygen +documentation.</li> +<li>Login to naboo.dre.vanderbilt.edu as bczar: <code>ssh bczar@naboo.dre.vanderbilt.edu</code></li> <ul><li>After login, ssh to bczar@download.dre.vanderbilt.edu as bczar and check whether ssh succeeds. If not fix the problem. The make script tries to copy the tar.gz files to the website using ssh.</li></ul> <li> go to /web/users/isisbuilds/tmp/ACE_wrappers and remove the contents of this directory</li> <li> Update the workspace with the right version tag </li> @@ -314,7 +313,7 @@ as Solaris).<br> 15. When you get an account to access the cvs repo, make sure you are added to the correct groups, for example, gid=100(users),5000(doc),5002(acetaodev),5003(cvs). Otherwise you will have problem to checkout various modules.<br> 16. Install your public key to the different machines you have frequent access to avoid typing password.<br> 17. Update this page if you have any more tips for future build czars :-). This -page is <code>bugzilla@deuce.doc.wustl.edu:~/.www-docs/index.html</code><br> +page is in svn under <code>ACE_wrappres/docs/bczar/bczar.html</code><br> </p> </body> diff --git a/ACE/etc/index.html b/ACE/etc/index.html index 9fe34620cbb..86ef5298182 100644 --- a/ACE/etc/index.html +++ b/ACE/etc/index.html @@ -35,6 +35,7 @@ <hr> We do have the documentation for previous releases and beta's <ul> + <LI><P><A HREF="5.6.2/html">5.6.2</A></P></LI> <LI><P><A HREF="5.6.1/html">5.6.1</A></P></LI> <LI><P><A HREF="5.6/html">5.6</A></P></LI> <LI><P><A HREF="5.5.10/html">5.5.10</A></P></LI> diff --git a/ACE/examples/APG/Reactor/HAStatus-AC.cpp b/ACE/examples/APG/Reactor/HAStatus-AC.cpp index 38d994f30d1..4d8c974c614 100644 --- a/ACE/examples/APG/Reactor/HAStatus-AC.cpp +++ b/ACE/examples/APG/Reactor/HAStatus-AC.cpp @@ -62,7 +62,7 @@ ClientService::handle_input (ACE_HANDLE) 0); if (send_cnt == -1) send_cnt = 0; - ACE_Message_Block *mb; + ACE_Message_Block *mb = 0; size_t remaining = static_cast<size_t> ((recv_cnt - send_cnt)); ACE_NEW_RETURN (mb, ACE_Message_Block (remaining), -1); @@ -88,7 +88,7 @@ ClientService::handle_input (ACE_HANDLE) int ClientService::handle_output (ACE_HANDLE) { - ACE_Message_Block *mb; + ACE_Message_Block *mb = 0; ACE_Time_Value nowait (ACE_OS::gettimeofday ()); while (-1 != this->getq (mb, &nowait)) { diff --git a/ACE/examples/Connection/non_blocking/CPP-connector.cpp b/ACE/examples/Connection/non_blocking/CPP-connector.cpp index e113b5f5acb..94ac62fc28f 100644 --- a/ACE/examples/Connection/non_blocking/CPP-connector.cpp +++ b/ACE/examples/Connection/non_blocking/CPP-connector.cpp @@ -148,12 +148,10 @@ Peer_Handler<PR_ST_2>::handle_output (ACE_HANDLE) } template <PR_ST_1> int -Peer_Handler<PR_ST_2>::handle_signal (int signum, +Peer_Handler<PR_ST_2>::handle_signal (int, siginfo_t *, ucontext_t *) { - ACE_UNUSED_ARG (signum); - // @@ Note that this code is not portable to all OS platforms since // it uses print statements within signal handler context. ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("in handle_signal\n"))); diff --git a/ACE/examples/Reactor/Multicast/Log_Wrapper.cpp b/ACE/examples/Reactor/Multicast/Log_Wrapper.cpp index 522cbd1add9..4a5a6c78938 100644 --- a/ACE/examples/Reactor/Multicast/Log_Wrapper.cpp +++ b/ACE/examples/Reactor/Multicast/Log_Wrapper.cpp @@ -44,8 +44,8 @@ Log_Wrapper::open (const int port, const char *mcast_addr) // This starts out initialized to all zeros! server_ = ACE_INET_Addr (port, mcast_addr); - if (logger_.subscribe (server_) == -1) - ACE_OS::perror("can't subscribe to multicast group"), ACE_OS::exit(1); + if (logger_.join (server_) == -1) + ACE_OS::perror("can't join to multicast group"), ACE_OS::exit(1); // success. return 0; diff --git a/ACE/examples/Reactor/Multicast/server.cpp b/ACE/examples/Reactor/Multicast/server.cpp index ef1b53e670a..5d69a646779 100644 --- a/ACE/examples/Reactor/Multicast/server.cpp +++ b/ACE/examples/Reactor/Multicast/server.cpp @@ -91,7 +91,7 @@ Server_Events::Server_Events (u_short port, "%p\n", "hostname")); - else if (this->mcast_dgram_.subscribe (this->mcast_addr_) == -1) + else if (this->mcast_dgram_.join (this->mcast_addr_) == -1) ACE_ERROR ((LM_ERROR, "%p\n", "subscribe")); @@ -109,7 +109,7 @@ Server_Events::Server_Events (u_short port, Server_Events::~Server_Events (void) { - this->mcast_dgram_.unsubscribe (); + this->mcast_dgram_.leave (this->mcast_addr_); ACE_DEBUG ((LM_DEBUG, "total bytes received = %d after %d second\n", diff --git a/ACE/examples/Reactor/Ntalker/ntalker.cpp b/ACE/examples/Reactor/Ntalker/ntalker.cpp index 80873ead1a9..e73b3ae8b60 100644 --- a/ACE/examples/Reactor/Ntalker/ntalker.cpp +++ b/ACE/examples/Reactor/Ntalker/ntalker.cpp @@ -46,6 +46,9 @@ public: private: ACE_SOCK_Dgram_Mcast mcast_; // Multicast wrapper. + + ACE_INET_Addr sockmc_addr_; + // Address to multicast to. }; ACE_HANDLE @@ -134,29 +137,28 @@ Handler::handle_close (ACE_HANDLE h, ACE_Reactor_Mask) Handler::~Handler (void) { - if (this->mcast_.unsubscribe () == -1) + if (this->mcast_.leave (sockmc_addr_) == -1) ACE_ERROR ((LM_ERROR, "%p\n", - "unsubscribe fails")); + "leave fails")); } Handler::Handler (u_short udp_port, const char *ip_addr, - const ACE_TCHAR *a_interface, + const ACE_TCHAR *a_interface, ACE_Reactor &reactor) { // Create multicast address to listen on. - ACE_INET_Addr sockmc_addr (udp_port, ip_addr); + this->sockmc_addr_ = ACE_INET_Addr (udp_port, ip_addr); // subscribe to multicast group. - if (this->mcast_.subscribe (sockmc_addr, 1, a_interface) == -1) - { - ACE_ERROR ((LM_ERROR, + if (this->mcast_.join (sockmc_addr_, 1, a_interface) == -1) + ACE_ERROR ((LM_ERROR, "%p\n", "can't subscribe to multicast group")); - } + // Disable loopbacks. // if (this->mcast_.set_option (IP_MULTICAST_LOOP, 0) == -1 ) // ACE_OS::perror (" can't disable loopbacks " ), ACE_OS::exit (1); @@ -170,11 +172,11 @@ Handler::Handler (u_short udp_port, "can't register with Reactor\n")); // Register the STDIN handler. else if (ACE_Event_Handler::register_stdin_handler (this, - ACE_Reactor::instance (), - ACE_Thread_Manager::instance ()) == -1) - ACE_ERROR ((LM_ERROR, - "%p\n", - "register_stdin_handler")); + ACE_Reactor::instance (), + ACE_Thread_Manager::instance ()) == -1) + ACE_ERROR ((LM_ERROR, + "%p\n", + "register_stdin_handler")); } static void diff --git a/ACE/examples/Service_Configurator/Misc/Timer_Service.cpp b/ACE/examples/Service_Configurator/Misc/Timer_Service.cpp index 82ace8f657c..d7bcdd15989 100644 --- a/ACE/examples/Service_Configurator/Misc/Timer_Service.cpp +++ b/ACE/examples/Service_Configurator/Misc/Timer_Service.cpp @@ -35,7 +35,7 @@ Timer_Service_1::init (int argc, ACE_TCHAR *argv[]) interval = ACE_OS::atoi (argv[1]); if (interval == 0) - interval = Timer_Service_1::TIMEOUT; + interval = Timer_Service_1::TIMEOUT; } if (argc > 2) @@ -45,7 +45,7 @@ Timer_Service_1::init (int argc, ACE_TCHAR *argv[]) this->max_timeouts_ = ACE_OS::atoi (argv[2]); if (this->max_timeouts_ == 0) - this->max_timeouts_ = Timer_Service_1::MAX_TIMEOUTS; + this->max_timeouts_ = Timer_Service_1::MAX_TIMEOUTS; } this->cur_timeouts_ = 0; diff --git a/ACE/examples/Service_Configurator/Misc/main.cpp b/ACE/examples/Service_Configurator/Misc/main.cpp index 11db456fed4..d3bd663ad48 100644 --- a/ACE/examples/Service_Configurator/Misc/main.cpp +++ b/ACE/examples/Service_Configurator/Misc/main.cpp @@ -48,8 +48,8 @@ ACE_TMAIN (int, ACE_TCHAR *argv[]) args.add (ACE_TEXT ("-S")); args.add (ACE_TEXT ("\"dynamic Timer_Service_2 Service_Object * Timer:_make_Timer_Service_2() 'timer 2 10 $TRACE'\"")); // Test the -f option! - args.add (ACE_TEXT ("-fsvc.conf1")); - args.add (ACE_TEXT ("-fsvc.conf2")); + args.add (ACE_TEXT ("-f svc.conf1")); + args.add (ACE_TEXT ("-f svc.conf2")); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("argc = %d\n"), diff --git a/ACE/include/makeinclude/platform_aix_ibm.GNU b/ACE/include/makeinclude/platform_aix_ibm.GNU index a977d96dacc..7ca8fb094d6 100644 --- a/ACE/include/makeinclude/platform_aix_ibm.GNU +++ b/ACE/include/makeinclude/platform_aix_ibm.GNU @@ -1,10 +1,7 @@ # $Id$ -# This file is for use with AIX 4.3 and up, using either of the IBM -# compilers (IBM C/C++ 3.6.6 or Visual Age C++ 5 or 6 batch compiler). -# If you wish to use the CSet++ compiler, please use platform_aix4_cset++.GNU. -# Note that as of ACE 5.4, the only supported compilers from IBM are -# Visual Age C++ 6 and up. +# This file is for use with AIX 5.x and up, using either of the IBM +# compilers (Visual Age C++ 6 or newer compiler). debug ?= 1 distrib ?= 0 @@ -86,71 +83,57 @@ endif DCCFLAGS += -g -qcheck=nobounds:div:null DCFLAGS += -g -# Now sort out the compiler differences here... -ifeq ($(XLCVERSION),0x0306) - SHR_FILTER=$(ACE_ROOT)/bin/aix_shr - TEMPINCDIR = tempinc - CCFLAGS += -qlanglvl=ansi -qflag=e:e -qonce -qtempinc=$(TEMPINCDIR) -DACE_TEMPLATES_REQUIRE_PRAGMA - SOFLAGS += -p 0 -# ibmcxx_build turns on the extra step for instantiating and compiling -# template instances in rules.lib.GNU. - ibmcxx_build = 1 -else # Visual Age 5 and up - ifeq ($(XLCVERSION),0x0500) - SHR_FILTER=$(ACE_ROOT)/bin/aix_shr - TEMPINCDIR = tempinc - CCFLAGS += -qflag=w:w -qonce -qtempinc=$(TEMPINCDIR) +ifeq ($(XLCVERSION),0x0600) + # This is just for the workaround for aio, above. Without it, the + # compiler warns that __C99_RESTRICT is reserved. When that workaround + # is gone, this ifeq can be removed also. -qflag=w:w is what we want + # in the end. + CCFLAGS += -qtemplateregistry=templateregistry.$(MAKEFILE) + ifeq (502,$(AIX_VERS)) + CCFLAGS += -qflag=e:e else - ifeq ($(XLCVERSION),0x0600) - # This is just for the workaround for aio, above. Without it, the - # compiler warns that __C99_RESTRICT is reserved. When that workaround - # is gone, this ifeq can be removed also. -qflag=w:w is what we want - # in the end. - CCFLAGS += -qtemplateregistry=templateregistry.$(MAKEFILE) - ifeq (502,$(AIX_VERS)) - CCFLAGS += -qflag=e:e - else - CCFLAGS += -qflag=w:w - endif + CCFLAGS += -qflag=w:w + endif +else + ifeq ($(XLCVERSION),0x0700) + CCFLAGS += -qflag=w:w + ifeq ($(templates),manual) + CCFLAGS += -qnotempinc -qnotemplateregistry else - ifeq ($(XLCVERSION),0x0700) - CCFLAGS += -qflag=w:w - ifeq ($(templates),manual) - CCFLAGS += -qnotempinc -qnotemplateregistry - else - CCFLAGS += -qtemplateregistry=templateregistry.$(MAKEFILE) - endif - # According to documentation, default is -qeh, which is equivalent - # to -qeh=v5. Apparently 6.0 fixed some problems with nested - # try-catch blocks. - ifeq ($(exceptions),1) - CCFLAGS += -qeh=v6 - endif - else - CXX = echo "Unrecognized compiler version $(XLCVERSION)\n" - endif + CCFLAGS += -qtemplateregistry=templateregistry.$(MAKEFILE) endif - endif - DLD = $(CXX) -qmkshrobj - SOFLAGS += $(CCFLAGS) $(CPPFLAGS) $(INCLDIRS) - ifeq ($(buildbits),64) - DLD += -q64 - CFLAGS += -q64 -qwarn64 - CCFLAGS += -q64 -qwarn64 - ARFLAGS := -X64 $(ARFLAGS) - - # This option results in a crash of TAO when building 64bit with - # Visual Age 6. No idea why but don't use it when using Visual Age 6. - ifneq ($(XLCVERSION),0x0600) - # CCFLAGS += -qstaticinline + # According to documentation, default is -qeh, which is equivalent + # to -qeh=v5. Apparently 6.0 fixed some problems with nested + # try-catch blocks. + ifeq ($(exceptions),1) + CCFLAGS += -qeh=v6 endif else - # Using 32bit the staticinline option works. - #CCFLAGS += -qstaticinline + CXX = echo "Unrecognized compiler version $(XLCVERSION)\n" endif - CCFLAGS += -qfuncsect endif +DLD = $(CXX) -qmkshrobj +SOFLAGS += $(CCFLAGS) $(CPPFLAGS) $(INCLDIRS) + +ifeq ($(buildbits),64) + DLD += -q64 + CFLAGS += -q64 -qwarn64 + CCFLAGS += -q64 -qwarn64 + ARFLAGS := -X64 $(ARFLAGS) + + # This option results in a crash of TAO when building 64bit with + # Visual Age 6. No idea why but don't use it when using Visual Age 6. + ifneq ($(XLCVERSION),0x0600) + # CCFLAGS += -qstaticinline + endif +else + # Using 32bit the staticinline option works. + #CCFLAGS += -qstaticinline +endif + +CCFLAGS += -qfuncsect + # The Visual Age preprocessor is not usable with the TAO_IDL compiler. # At the moment an idl file just contains includes of other idl files # the Visual Age preprocessor doesn't report that file in the list of @@ -182,7 +165,4 @@ SOVERSION = # either in this file or on the command line. #OCCFLAGS += -qarch=ppc -qtune=604 -# -O2 is too much for Visual Age C++ 5.0. It ends up calling -# the wrong methods in some cases (orbsvcs/tests/EC_Throughput). -# Chad Elliott 7/24/2001 -OCCFLAGS += -qlibansi -O -qarch=com +OCCFLAGS += -qlibansi -O2 -qarch=com diff --git a/ACE/include/makeinclude/platform_g++_common.GNU b/ACE/include/makeinclude/platform_g++_common.GNU index efe1db31f5e..90089bfc1dc 100644 --- a/ACE/include/makeinclude/platform_g++_common.GNU +++ b/ACE/include/makeinclude/platform_g++_common.GNU @@ -50,22 +50,6 @@ endif static_libs_only ?= CXX_FULL_VERSION := $(shell $(CXX_FOR_VERSION_TEST) --version) -ifeq (Red Hat 4.1.1-51,$(findstring Red Hat 4.1.1-51,$(CXX_FULL_VERSION))) - FC6 := $(shell sh -c 'test -s /etc/redhat-release && cat /etc/redhat-release | grep -c "Zod"') - ifeq ($(FC6),1) - gcc_template_instantiation_visibility ?= 1 - endif -endif -ifeq (Red Hat 4.1.1-52,$(findstring Red Hat 4.1.1-52,$(CXX_FULL_VERSION))) - gcc_template_instantiation_visibility ?= 1 -endif -ifeq (Red Hat 4.1.1-30,$(findstring Red Hat 4.1.1-30,$(CXX_FULL_VERSION))) - gcc_template_instantiation_visibility ?= 1 -endif -ifeq (Red Hat 4.1.2-12,$(findstring Red Hat 4.1.2-12,$(CXX_FULL_VERSION))) - gcc_template_instantiation_visibility ?= 1 -endif - gcc_template_instantiation_visibility ?= 0 # Only modify LDFLAGS if DLD has been set. diff --git a/ACE/include/makeinclude/platform_linux.GNU b/ACE/include/makeinclude/platform_linux.GNU index faf6e6fd36f..fdaf63ce04e 100644 --- a/ACE/include/makeinclude/platform_linux.GNU +++ b/ACE/include/makeinclude/platform_linux.GNU @@ -9,11 +9,41 @@ include $(ACE_ROOT)/include/makeinclude/platform_linux_common.GNU ifeq ($(insure),0) CC ?= gcc CXX ?= g++ + CXX_FOR_VERSION_TEST ?= $(CXX) +else + CXX_FOR_VERSION_TEST ?= g++ endif # fix this pipes ?= 1 +CXX_FULL_VERSION := $(shell $(CXX_FOR_VERSION_TEST) --version) + +ifeq (Ubuntu, $(findstring Ubuntu,$(LSB_RELEASE_ID))) + ifeq (7.10, $(findstring 7.10,$(LSB_RELEASE_RELEASE))) + no_hidden_visibility ?= 1 + endif + ifeq (7.04, $(findstring 7.04,$(LSB_RELEASE_RELEASE))) + no_hidden_visibility ?= 1 + endif +endif +ifeq (Fedora, $(findstring Fedora,$(LSB_RELEASE_ID))) + ifeq (6, $(findstring 6,$(LSB_RELEASE_RELEASE))) + gcc_template_instantiation_visibility ?= 1 + endif + ifeq (7, $(findstring 7,$(LSB_RELEASE_RELEASE))) + gcc_template_instantiation_visibility ?= 1 + endif + ifeq (8, $(findstring 8,$(LSB_RELEASE_RELEASE))) + gcc_template_instantiation_visibility ?= 1 + endif +endif +ifeq (RedHatEnterpriseServer, $(findstring RedHatEnterpriseServer,$(LSB_RELEASE_ID))) + ifeq (5, $(findstring 5,$(LSB_RELEASE_RELEASE))) + gcc_template_instantiation_visibility ?= 1 + endif +endif + CFLAGS += -W -Wall -Wpointer-arith ifeq ($(threads),1) CPPFLAGS += -D_REENTRANT $(PLATFORM_AIO_SUPPORT) diff --git a/ACE/include/makeinclude/platform_linux_common.GNU b/ACE/include/makeinclude/platform_linux_common.GNU index 71cb5b1e6f6..e5b988e6e5f 100644 --- a/ACE/include/makeinclude/platform_linux_common.GNU +++ b/ACE/include/makeinclude/platform_linux_common.GNU @@ -81,10 +81,13 @@ ifeq (NPTL, $(word 1,$(GNU_LIBPTHREAD_VERSION))) endif endif nptl ?= 0 -ifeq ($(nptl),1) - CPPFLAGS += -DACE_HAS_LINUX_NPTL +ifeq ($(nptl),0) + CPPFLAGS += -DACE_LACKS_LINUX_NPTL endif +LSB_RELEASE_ID := $(shell lsb_release -i) +LSB_RELEASE_RELEASE := $(shell lsb_release -r) + ssl ?= 0 ifeq ($(ssl),1) # Some Linux OpenSSL installations compile in Kerberos support. Add diff --git a/ACE/include/makeinclude/platform_linux_icc.GNU b/ACE/include/makeinclude/platform_linux_icc.GNU index 3c5a3c99d42..e4bd1856f7e 100644 --- a/ACE/include/makeinclude/platform_linux_icc.GNU +++ b/ACE/include/makeinclude/platform_linux_icc.GNU @@ -34,6 +34,9 @@ ifeq (10.0,$(findstring 10.0,$(CXX_VERSION))) CFLAGS += -wd1684 no_hidden_visibility ?= 1 endif +ifeq (10.1,$(findstring 10.1,$(CXX_VERSION))) + CFLAGS += -wd1684 +endif no_hidden_visibility ?= 1 diff --git a/ACE/include/makeinclude/platform_vxworks5.5.x.GNU b/ACE/include/makeinclude/platform_vxworks5.5.x.GNU index ca4e0339cea..bffea24a846 100644 --- a/ACE/include/makeinclude/platform_vxworks5.5.x.GNU +++ b/ACE/include/makeinclude/platform_vxworks5.5.x.GNU @@ -93,6 +93,7 @@ endif ifeq ($(findstring PPC, $(CPU)), PPC) CCFLAGS += -mlongcall + CFLAGS += -mlongcall endif ifeq ($(shared_libs),1) diff --git a/ACE/include/makeinclude/platform_vxworks6.2.GNU b/ACE/include/makeinclude/platform_vxworks6.2.GNU index 51ed3ef2e4c..7cf1da393fb 100644 --- a/ACE/include/makeinclude/platform_vxworks6.2.GNU +++ b/ACE/include/makeinclude/platform_vxworks6.2.GNU @@ -85,7 +85,7 @@ endif ifeq ($(rtp),0) ifeq ($(findstring PPC, $(CPU)), PPC) - CCFLAGS += -mlongcall + CPPFLAGS += -mlongcall endif PRJ_TYPE = vxApp endif diff --git a/ACE/include/makeinclude/platform_vxworks6.3.GNU b/ACE/include/makeinclude/platform_vxworks6.3.GNU index 9782a1d50c2..f7330b7b0cb 100644 --- a/ACE/include/makeinclude/platform_vxworks6.3.GNU +++ b/ACE/include/makeinclude/platform_vxworks6.3.GNU @@ -107,8 +107,8 @@ ifeq ("$(TOOL_FAMILY)","gnu") endif ifeq ($(rtp),0) - ifeq ($(findstring PPC, $(CPU)), PPC) - CCFLAGS += -mlongcall + ifeq ($(findstring PPC,$(CPU)),PPC) + CPPFLAGS += -mlongcall endif PRJ_TYPE = vxApp endif @@ -216,11 +216,16 @@ endif ifeq ($(SHARED_LIBS), 1) ifeq ("$(TOOL_FAMILY)","gnu") - PIC = -fpic - SOFLAGS += -fpic -shared + ifeq ($(rtp),1) + PIC = -fpic + SOFLAGS += -fpic + endif + SOFLAGS += -shared LDFLAGS += -non-static else - PIC = -Xpic + ifeq ($(rtp),1) + PIC = -Xpic + endif SOFLAGS += -Xshared LDFLAGS += -Xdynamic endif diff --git a/ACE/include/makeinclude/platform_vxworks6.6.GNU b/ACE/include/makeinclude/platform_vxworks6.6.GNU new file mode 100644 index 00000000000..639f2d9c484 --- /dev/null +++ b/ACE/include/makeinclude/platform_vxworks6.6.GNU @@ -0,0 +1,8 @@ +# $Id$ +# VxWorks 6.6 + +ifeq ($(VXWORKS_VERSION_FLAG),) + VXWORKS_VERSION_FLAG = -DACE_VXWORKS=0x660 +endif # VXWORKS_VERSION_FLAG + +include $(ACE_ROOT)/include/makeinclude/platform_vxworks6.5.GNU diff --git a/ACE/include/makeinclude/wrapper_macros.GNU b/ACE/include/makeinclude/wrapper_macros.GNU index 957344409cb..c169a790bc7 100644 --- a/ACE/include/makeinclude/wrapper_macros.GNU +++ b/ACE/include/makeinclude/wrapper_macros.GNU @@ -91,6 +91,9 @@ # wfmo Build with wfmo support (Win32 only) # winregistry Build with windows registry support (Win32 only) # winnt Build WinNT-specific projects (Win32 only) +# link_groups This indicates that statically linked executable library +# names will be surrounded by -Wl,--start-group and +# -Wl,--end-group for the GNU compiler only. # # Usually, users do not need to be concerned with make targets. # Just enter "make" on the command line to build. A few notable @@ -299,6 +302,7 @@ versioned_so ?= 1 use_dep_libs ?= 1 threads ?= 1 symlinks ?= relative +link_groups ?= 0 SOVERSION ?= SONAME ?= diff --git a/ACE/m4/ace_defines.m4 b/ACE/m4/ace_defines.m4 new file mode 100644 index 00000000000..bb5ba514afc --- /dev/null +++ b/ACE/m4/ace_defines.m4 @@ -0,0 +1,48 @@ +# ACE_CHECK_DEFINE(DEFINE, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +# [INCLUDES = 'default-includes']) +#----------------------------------------------------------------------------- +AC_DEFUN([ACE_CHECK_DEFINE],[ +AS_VAR_PUSHDEF([ac_var],[ace_cv_defined_$1])dnl +AC_CACHE_CHECK([for $1], ac_var, +AC_COMPILE_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT([$4]) +#ifdef $1 +int ok; +#else +choke me +#endif +])],AS_VAR_SET(ac_var, yes),AS_VAR_SET(ac_var, no))) +AS_IF([test AS_VAR_GET(ac_var) != "no"], [$2], [$3])dnl +AS_VAR_POPDEF([ac_var])dnl +]) + +# ACE_CHECK_HAS_DEFINES(DEFINE..., [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +# [INCLUDES = 'default-includes']) +#----------------------------------------------------------------------------- +AC_DEFUN([ACE_CHECK_HAS_DEFINES], +[AC_FOREACH([ACE_Def], [$1], + [AH_TEMPLATE(AS_TR_CPP(ACE_HAS_[]ACE_Def), + [Define to 1 if platform has ]ACE_Def[().])])dnl +for ace_def in $1 +do +ACE_CHECK_DEFINE($ace_def, + [AC_DEFINE_UNQUOTED([AS_TR_CPP([ACE_HAS_$ace_def])]) $2], + [$3], + [$4])dnl +done +]) + +# ACE_CHECK_LACKS_DEFINES(DEFINE..., [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# [INCLUDES = 'default-includes']) +#----------------------------------------------------------------------------- +AC_DEFUN([ACE_CHECK_LACKS_DEFINES], +[AC_FOREACH([ACE_Def], [$1], + [AH_TEMPLATE(AS_TR_CPP(ACE_LACKS_[]ACE_Def), + [Define to 1 if platform lacks ]ACE_Def[().])])dnl +for ace_def in $1 +do +ACE_CHECK_DEFINE($ace_def, + [$2], + [AC_DEFINE_UNQUOTED([AS_TR_CPP([ACE_LACKS_$ace_def])]) $3], + [$4])dnl +done +]) diff --git a/ACE/m4/config_h.m4 b/ACE/m4/config_h.m4 index 3b94a0c518a..fdf10ac94e7 100644 --- a/ACE/m4/config_h.m4 +++ b/ACE/m4/config_h.m4 @@ -72,7 +72,6 @@ AH_TEMPLATE([ACE_HAS_TANDEM_SIGNALS],[]) AH_TEMPLATE([ACE_HAS_IRIX_53_SIGNALS],[]) AH_TEMPLATE([PTHREAD_STACK_MIN],[]) -AH_TEMPLATE([PTHREAD_STACK_MAX],[]) dnl ///////////////////// OSSAMA'S NEW STUFF ////////////////// */ dnl THIS STUFF WILL REPLACE THE ABOVE OLDER STUFF AND/OR WILL BE MERGED INTO IT @@ -91,9 +90,6 @@ dnl /* results from checks for system services */ dnl AIX specific configuration parameters AH_TEMPLATE([AIX],[Configure for use on AIX]) -dnl DG/UX specific configuration parameters -AH_TEMPLATE([ACE_DGUX],[]) - dnl FreeBSD specific configuration parameters dnl Nothing yet @@ -116,10 +112,6 @@ dnl Nothing yet */ dnl LynxOS specific configuration parameters AH_TEMPLATE([__NO_INCLUDE_WARN__],[]) -dnl M88K specific configuration parameters -AH_TEMPLATE([m88k],[]) -AH_TEMPLATE([__m88k__],[]) - dnl MVS specific configuration parameters dnl Nothing yet @@ -130,11 +122,6 @@ dnl OSF/1 and Digital Unix specific configuration parameters AH_TEMPLATE([DEC_CXX],[]) AH_TEMPLATE([DIGITAL_UNIX],[Configure for use on Digital Unix]) -dnl pSOS specific configuration parameters -AH_TEMPLATE([ACE_PSOS],[Configure for use on pSoS]) -AH_TEMPLATE([ACE_PSOSIM],[]) -AH_TEMPLATE([ACE_PSOSTBD],[]) - dnl SCO specific configuration parameters AH_TEMPLATE([SCO],[]) @@ -273,9 +260,6 @@ AH_TEMPLATE([ACE_HAS_ALLOCA],[Compiler/platform supports alloca().]) AH_TEMPLATE([ACE_HAS_ALLOCA_H],[Compiler/platform has <alloca.h>]) -AH_TEMPLATE([ACE_HAS_ALPHA_TIMER], -[CPU is an Alpha, with the rpcc instruction to read the tick timer.]) - AH_TEMPLATE([ACE_HAS_AUTOMATIC_INIT_FINI], [Compiler/platform correctly calls init()/fini() for shared libraries.]) @@ -498,8 +482,6 @@ AH_TEMPLATE([ACE_HAS_OPTIMIZED_MESSAGE_QUEUE], AH_TEMPLATE([ACE_HAS_OSF_TIMOD_H], [Platform supports the OSF TLI timod STREAMS module]) -AH_TEMPLATE([ACE_HAS_PENTIUM],[Platform is an Intel Pentium microprocessor.]) - AH_TEMPLATE([ACE_HAS_POLL],[Platform contains <poll.h>]) AH_TEMPLATE([ACE_HAS_POSITION_INDEPENDENT_POINTERS], @@ -532,9 +514,6 @@ AH_TEMPLATE([ACE_HAS_PROC_FS], [Platform supports the /proc file system and defines tid_t in <sys/procfs.h>]) -AH_TEMPLATE([ACE_HAS_POWERPC_TIMER], -[Platform supports PowerPC time-base register.]) - AH_TEMPLATE([ACE_HAS_PRUSAGE_T],[Platform supports the prusage_t struct]) AH_TEMPLATE([ACE_HAS_PTHREADS_UNIX98_EXT], @@ -1029,19 +1008,9 @@ AH_TEMPLATE([ACE_TEMPLATES_REQUIRE_SOURCE], [Compiler's template mechanim must see source code (i.e., .cpp files). This is used for GNU G++.]) -AH_TEMPLATE([ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION], -[Compiler's template instantiation mechanism supports the use of - explicit C++ specializations for all used templates. This is also - used for GNU G++ if you don't use the "repo" patches.]) - AH_TEMPLATE([ACE_HAS_ICMP_SUPPORT], [Defined to 1 if platform supports ICMP over raw sockets]) -AH_TEMPLATE([ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA], -[Compiler's template instantiation mechanism supports the use of - "#pragma instantiate". Edison Design Group compilers, e.g., SGI - C++ and Green Hills 1.8.8 and later, support this.]) - AH_TEMPLATE([ACE_NEEDS_FUNC_DEFINITIONS], [Compiler requires a definition for a "hidden" function, e.g., a private, unimplemented copy constructor or assignment operator. diff --git a/ACE/m4/platform.m4 b/ACE/m4/platform.m4 index fd510767eae..cdab216495d 100644 --- a/ACE/m4/platform.m4 +++ b/ACE/m4/platform.m4 @@ -92,22 +92,6 @@ dnl */ *cray-unicos*) ACE_CPPFLAGS="$ACE_CPPFLAGS -D_UNICOS" ;; - *dgux4.11*) - AC_DEFINE([ACE_DGUX]) - AC_DEFINE([IP_ADD_MEMBERSHIP], [0x13]) - AC_DEFINE([IP_DROP_MEMBERSHIP], [0x14]) - ACE_CPPFLAGS="$ACE_CPPFLAGS -D_POSIX_SOURCE -D_DGUX_SOURCE" - ;; - *dgux4*) - AC_DEFINE([ACE_DGUX]) - AC_DEFINE([IP_ADD_MEMBERSHIP], [0x13]) - AC_DEFINE([IP_DROP_MEMBERSHIP], [0x14]) - ACE_CPPFLAGS="$ACE_CPPFLAGS -D_POSIX4A_DRAFT10_SOURCE -D_POSIX4_DRAFT_SOURCE" - ;; - *fsu*) -dnl FIXME: "FSU" isn't a platform! We need to move this somewhere. - AC_DEFINE([PTHREAD_STACK_MIN], [(1024*10)]) - ;; *hpux9*) AC_DEFINE([HPUX]) ;; @@ -169,8 +153,8 @@ dnl FIXME: "FSU" isn't a platform! We need to move this somewhere. AC_DEFINE([ACE_TIMER_SKEW], [(1000 * 10)]) dnl Does this box have NPTL? NPTL=`getconf GNU_LIBPTHREAD_VERSION | $AWK '{print [$][1]}' -` - if test "$NPTL" = NPTL; then - ACE_CPPFLAGS="$ACE_CPPFLAGS -DACE_HAS_LINUX_NPTL" + if test "$NPTL" != NPTL; then + ACE_CPPFLAGS="$ACE_CPPFLAGS -DACE_LACKS_LINUX_NPTL" fi ;; *lynxos*) @@ -182,12 +166,6 @@ dnl FIXME: "FSU" isn't a platform! We need to move this somewhere. AC_DEFINE([ACE_HAS_LYNXOS_SIGNALS]) AC_DEFINE([ACE_TIMER_SKEW], [(1000 * 10)]) ;; - *m88k*) - AC_DEFINE([m88k]) - AC_DEFINE([__m88k__]) - AC_DEFINE([IP_ADD_MEMBERSHIP], [0x13]) - AC_DEFINE([IP_DROP_MEMBERSHIP], [0x14]) - ;; *mvs*) ACE_CPPFLAGS="$ACE_CPPFLAGS -D_ALL_SOURCE" ;; @@ -232,21 +210,6 @@ dnl Check for _POSIX_C_SOURCE macro AC_DEFINE([ACE_NEEDS_HUGE_THREAD_STACKSIZE], [(1024 * 1024)]) AC_DEFINE([ACE_TIMER_SKEW], [(1000 * 10)]) ;; - *psos*) - AC_DEFINE([ACE_PSOS]) - AC_DEFINE([ACE_PSOSIM]) - AC_DEFINE([ACE_PSOSTBD]) - dnl need ACE_HAS_TSS_EMULATION for ACE_DEFAULT_THREAD_KEYS! - AC_EGREP_CPP([ACE_TSS_EMULATION], - [ -#if defined (ACE_HAS_TSS_EMULATION) - ACE_TSS_EMULATION -#endif - ], [AC_DEFINE([ACE_DEFAULT_THREAD_KEYS], [256])],[]) - AC_DEFINE([ACE_MAIN], [extern "C" void root]) - AC_DEFINE([ACE_MALLOC_ALIGN], [8]) - AC_DEFINE([ACE_USE_RCSID], [0]) - ;; *sco4.2*) AC_DEFINE([SCO]) AC_DEFINE([ACE_DEFAULT_CLOSE_ALL_HANDLES], [0]) @@ -350,7 +313,7 @@ dnl AC_DEFINE(ACE_USE_SELECT_REACTOR_FOR_REACTOR_IMPL) esac ACE_FUNC_IOCTL_ARGTYPES - +ACE_CHECK_HAS_NONCONST_FD_ISSET ACE_CHECK_FORMAT_SPECIFIERS ACE_CHECK_LACKS_PERFECT_MULTICAST_FILTERING @@ -375,9 +338,9 @@ AH_TEMPLATE([ACE_SIZE_T_FORMAT_SPECIFIER], AH_TEMPLATE([ACE_SSIZE_T_FORMAT_SPECIFIER], [Define to the *printf format specifier (e.g. "%d") for ssize_t])dnl AH_TEMPLATE([ACE_INT64_FORMAT_SPECIFIER], -[Define to the *printf format specifier (e.g. "%lld") for the 64 bit signed integer type])dnl +[Define to the *printf format specifier (e.g. "%lld") for ACE_INT64])dnl AH_TEMPLATE([ACE_UINT64_FORMAT_SPECIFIER], -[Define to the *printf format specifier (e.g. "%llu") for the 64 bit signed integer type])dnl +[Define to the *printf format specifier (e.g. "%llu") for ACE_UINT64])dnl case "$host_os" in darwin*) @@ -487,3 +450,24 @@ if test "$ace_cv_var_timezone" = yes; then [Define to 1 if platform has global timezone variable]) fi ]) + + +# ACE_HAS_NONCONST_FD_ISSET +# +# Checks if system has a nonconst FD_ISSET macro. +# +#--------------------------------------------------------------------------- +AC_DEFUN([ACE_CHECK_HAS_NONCONST_FD_ISSET], +[dnl + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([#include <sys/time.h>], + [ + //const fd_set* temp = new fd_set(); + //FD_ISSET(0, const_cast< fd_set* >( temp ) ); + const fd_set* temp = new fd_set(); + FD_ISSET(0, temp ); + ]) + ],[],[AC_DEFINE([ACE_HAS_NONCONST_FD_ISSET], 1, + [Define to 1 if system has nonconst FD_ISSET() macro.])] + ) +]) diff --git a/ACE/netsvcs/lib/Name_Handler.cpp b/ACE/netsvcs/lib/Name_Handler.cpp index 8be8ed89a79..087d63d7ac0 100644 --- a/ACE/netsvcs/lib/Name_Handler.cpp +++ b/ACE/netsvcs/lib/Name_Handler.cpp @@ -14,11 +14,6 @@ ACE_RCSID(lib, Name_Handler, "$Id$") -#if defined (ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION) -template ACE_Singleton<Naming_Context, ACE_SYNCH_NULL_MUTEX> * - ACE_Singleton<Naming_Context, ACE_SYNCH_NULL_MUTEX>::singleton_; -#endif /* ACE_HAS_EXPLICIT_STATIC_TEMPLATE_MEMBER_INSTANTIATION */ - // Simple macro that does bitwise AND -- useful in table lookup #define ACE_TABLE_MAP(INDEX, MASK) (INDEX & MASK) @@ -34,21 +29,17 @@ ACE_Name_Acceptor::parse_args (int argc, ACE_TCHAR *argv[]) ACE_LOG_MSG->open (ACE_TEXT ("Name Service")); - ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("p:"), 0); + this->naming_context()->name_options()->parse_args( argc, argv ); + service_port = this->naming_context()->name_options()->nameserver_port(); - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 'p': - service_port = ACE_OS::atoi (get_opt.opt_arg ()); - break; - default: + // dont allow to connect to another name serever + if(this->naming_context()->name_options()->context() == ACE_Naming_Context::NET_LOCAL) + this->naming_context()->name_options()->nameserver_host(ACE_TEXT ("localhost")); + + if (this->naming_context()->open( this->naming_context()->name_options()->context() ) == -1) ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("%n:\n[-p server-port]\n")), + ACE_TEXT ("%n:\n open naming context failed.\n")), -1); - } - } this->service_addr_.set (service_port); return 0; @@ -61,7 +52,11 @@ ACE_Name_Acceptor::init (int argc, ACE_TCHAR *argv[]) // Use the options hook to parse the command line arguments and set // options. - this->parse_args (argc, argv); + if( this->parse_args (argc, argv) == -1 ) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("ACE_Name_Acceptor::parse_args failed")), + -1); // Set the acceptor endpoint into listen mode (use the Singleton // global Reactor...). @@ -147,7 +142,7 @@ ACE_Name_Handler::ACE_Name_Handler (ACE_Thread_Manager *tm) // ACE_Name_Acceptor). /* VIRTUAL */ int -ACE_Name_Handler::open (void *) +ACE_Name_Handler::open (void * v) { ACE_TRACE (ACE_TEXT ("ACE_Name_Handler::open")); @@ -157,6 +152,10 @@ ACE_Name_Handler::open (void *) ACE_TEXT ("%p\n"), ACE_TEXT ("open")), -1); + + ACE_Name_Acceptor* acceptor_ = static_cast<ACE_Name_Acceptor*>(v); + naming_context_ = acceptor_->naming_context(); + return 0; } @@ -374,7 +373,7 @@ ACE_Name_Handler::shared_bind (int rebind) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("request for BIND \n"))); #endif /* 0 */ - result = NAMING_CONTEXT::instance ()->bind (a_name, + result = this->naming_context ()->bind (a_name, a_value, this->name_request_.type ()); } @@ -384,7 +383,7 @@ ACE_Name_Handler::shared_bind (int rebind) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("request for REBIND \n"))); #endif /* 0 */ - result = NAMING_CONTEXT::instance ()->rebind (a_name, + result = this->naming_context ()->rebind (a_name, a_value, this->name_request_.type ()); if (result == 1) @@ -411,7 +410,7 @@ ACE_Name_Handler::resolve (void) ACE_NS_WString avalue; char *atype; - if (NAMING_CONTEXT::instance ()->resolve (a_name, avalue, atype) == 0) + if (this->naming_context ()->resolve (a_name, avalue, atype) == 0) { ACE_Auto_Basic_Array_Ptr<ACE_WCHAR_T> avalue_urep (avalue.rep ()); ACE_Name_Request nrq (ACE_Name_Request::RESOLVE, @@ -439,7 +438,7 @@ ACE_Name_Handler::unbind (void) ACE_NS_WString a_name (this->name_request_.name (), this->name_request_.name_len () / sizeof (ACE_WCHAR_T)); - if (NAMING_CONTEXT::instance ()->unbind (a_name) == 0) + if (this->naming_context ()->unbind (a_name) == 0) return this->send_reply (0); else return this->send_reply (-1); @@ -497,7 +496,7 @@ ACE_Name_Handler::lists (void) ACE_DEBUG ((LM_DEBUG, list_table_[index].description_)); // Call the appropriate method - if ((NAMING_CONTEXT::instance ()->*list_table_[index].operation_) (set, pattern) != 0) + if ((this->naming_context ()->*list_table_[index].operation_) (set, pattern) != 0) { // None found so send blank request back ACE_Name_Request end_rq (ACE_Name_Request::MAX_ENUM, 0, 0, 0, 0, 0, 0); @@ -554,7 +553,7 @@ ACE_Name_Handler::lists_entries (void) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("request for LIST_NAME_ENTRIES \n"))); #endif /* 0 */ - result = NAMING_CONTEXT::instance ()-> + result = this->naming_context ()-> ACE_Naming_Context::list_name_entries (set, pattern); } else if (msg_type == ACE_Name_Request::LIST_VALUE_ENTRIES) @@ -563,7 +562,7 @@ ACE_Name_Handler::lists_entries (void) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("request for LIST_VALUE_ENTRIES \n"))); #endif /* 0 */ - result = NAMING_CONTEXT::instance ()-> + result = this->naming_context ()-> ACE_Naming_Context::list_value_entries (set, pattern); } else if (msg_type == ACE_Name_Request::LIST_TYPE_ENTRIES) @@ -572,7 +571,7 @@ ACE_Name_Handler::lists_entries (void) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("request for LIST_TYPE_ENTRIES \n"))); #endif /* 0 */ - result = NAMING_CONTEXT::instance ()-> + result = this->naming_context ()-> ACE_Naming_Context::list_type_entries (set, pattern); } else @@ -620,6 +619,18 @@ ACE_Name_Handler::lists_entries (void) return 0; } +ACE_Naming_Context * +ACE_Name_Handler::naming_context (void) +{ + return naming_context_; +} + +ACE_Naming_Context * +ACE_Name_Acceptor::naming_context (void) +{ + return &naming_context_; +} + ACE_Name_Handler::~ACE_Name_Handler (void) { ACE_TRACE (ACE_TEXT ("ACE_Name_Handler::~ACE_Name_Handler")); diff --git a/ACE/netsvcs/lib/Name_Handler.h b/ACE/netsvcs/lib/Name_Handler.h index 40c7e893499..d41751145fe 100644 --- a/ACE/netsvcs/lib/Name_Handler.h +++ b/ACE/netsvcs/lib/Name_Handler.h @@ -28,24 +28,8 @@ #include "ace/Naming_Context.h" #include "ace/Name_Request_Reply.h" #include "ace/Null_Mutex.h" -#include "ace/Singleton.h" #include "ace/svc_export.h" -/** - * @class Naming_Context - * - * @brief This helper class adds the correct default constructor to the - * <ACE_Naming_Context> class so that we can use it in - * <ACE_Singleton>. - */ -class Naming_Context : public ACE_Naming_Context -{ -public: - Naming_Context (void) - : ACE_Naming_Context (ACE_Naming_Context::NET_LOCAL) {} -}; - -typedef ACE_Singleton<Naming_Context, ACE_SYNCH_NULL_MUTEX> NAMING_CONTEXT; #if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT template class ACE_Svc_Export ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>; @@ -159,6 +143,11 @@ private: /// Address of client we are connected with. ACE_INET_Addr addr_; + /// Naming Context + ACE_Naming_Context *naming_context_; + + ACE_Naming_Context *naming_context (void); + /// Handle binds. int bind (void); @@ -206,11 +195,18 @@ public: /// Parse svc.conf arguments. int parse_args (int argc, ACE_TCHAR *argv[]); + /// Naming context for acceptor /for the listening port/ + ACE_Naming_Context *naming_context (void); + private: /// The scheduling strategy is designed for Reactive services. ACE_Schedule_All_Reactive_Strategy<ACE_Name_Handler> scheduling_strategy_; + + /// The Naming Context + ACE_Naming_Context naming_context_; }; ACE_SVC_FACTORY_DECLARE (ACE_Name_Acceptor) + #endif /* ACE_NAME_HANDLER_H */ diff --git a/ACE/tests/CDR_Test.cpp b/ACE/tests/CDR_Test.cpp index b4f2c206f72..49bfde79de3 100644 --- a/ACE/tests/CDR_Test.cpp +++ b/ACE/tests/CDR_Test.cpp @@ -44,9 +44,13 @@ struct CDR_Test_Types const ACE_CDR::Char *str; const ACE_CDR::WChar *wstr; ACE_CDR::Double d; + ACE_CDR::Short reps; + ACE_CDR::Long repl; int test_put (ACE_OutputCDR& cdr); int test_get (ACE_InputCDR& cdr) const; + int test_put_placeholder (ACE_OutputCDR& cdr); + int test_get_placeholder (ACE_InputCDR& cdr) const; enum { @@ -62,7 +66,9 @@ CDR_Test_Types::CDR_Test_Types (void) l (4), str ("abc"), wstr (0), - d (8) + d (8), + reps (-123), + repl (-65800L) { for (int i = 0; i < CDR_Test_Types::ARRAY_SIZE; @@ -440,6 +446,72 @@ CDR_Test_Types::test_get (ACE_InputCDR &cdr) const } int +CDR_Test_Types::test_put_placeholder (ACE_OutputCDR &cdr) +{ + // Write a placeholder then a bunch of other stuff, then replace. + char *pos = cdr.write_long_placeholder (); + if (test_put (cdr) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("test_put (long placeholder) failed\n")), + 1); + if (!cdr.replace (this->repl, pos)) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("replace(long) failed\n")), + 1); + + pos = cdr.write_short_placeholder (); + if (test_put (cdr) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("test_put (short placeholder) failed\n")), + 1); + if (!cdr.replace (this->reps, pos)) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("replace(short) failed\n")), + 1); + + return 0; +} + +int +CDR_Test_Types::test_get_placeholder (ACE_InputCDR &cdr) const +{ + ACE_CDR::Short xs; + ACE_CDR::Long xl; + + if (cdr.read_long (xl) == 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("read_long failed\n")), + 1); + if (xl != this->repl) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("replaced long differs\n")), + 1); + + // The bunch of stuff written after the placeholder by test_put_placeholder + // should still be valid; check that it is. + if (test_get (cdr) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("test_get (long) failed\n")), + 1); + + if (cdr.read_short (xs) == 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("read_short failed\n")), 1); + if (xs != this->reps) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("replaced short differs\n")), + 1); + + if (test_get (cdr) != 0) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("test_get (short) failed\n")), + 1); + + return 0; +} + + +int run_main (int argc, ACE_TCHAR *argv[]) { ACE_START_TEST (ACE_TEXT ("CDR_Test")); @@ -597,7 +669,33 @@ run_main (int argc, ACE_TCHAR *argv[]) return 1; ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("Consolidation - no errors\n\n"))); + ACE_TEXT ("Consolidation - no errors\n\n") + ACE_TEXT ("Testing placeholder/replace\n\n"))); + + output.reset(); + if (test_types.test_put_placeholder (output) != 0) + return 1; + + input = ACE_InputCDR(output); + if (debug > 0) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Output CDR: \n"))); + ACE_HEX_DUMP ((LM_DEBUG, + input.rd_ptr(), + 64)); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Input CDR: \n"))); + ACE_HEX_DUMP ((LM_DEBUG, + input.rd_ptr(), + 64)); + } + + if (test_types.test_get_placeholder (input) != 0) + return 1; + + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Placeholder/Replace - no errors\n\n"))); ACE_END_TEST; return 0; diff --git a/ACE/tests/Conn_Test.cpp b/ACE/tests/Conn_Test.cpp index fc6b213acde..6f174583ea9 100644 --- a/ACE/tests/Conn_Test.cpp +++ b/ACE/tests/Conn_Test.cpp @@ -617,7 +617,7 @@ spawn_threads (ACCEPTOR *acceptor, { int status = 0; -#if defined (ACE_HAS_VXTHREADS) +#if 0 // Assign thread (VxWorks task) names to test that feature. ACE_hthread_t *server_name = 0; ACE_NEW_RETURN (server_name, @@ -660,7 +660,7 @@ spawn_threads (ACCEPTOR *acceptor, , ACE_DEFAULT_THREAD_PRIORITY , -1 , 0 -#if defined (ACE_HAS_VXTHREADS) +#if 0 , server_name #if 0 /* Don't support setting of stack, because it doesn't seem to work. */ , (void **) stack @@ -680,7 +680,7 @@ spawn_threads (ACCEPTOR *acceptor, (void *) server_addr, THR_NEW_LWP, 0 -#if defined (ACE_HAS_VXTHREADS) +#if 0 , &client_name #endif /* ACE_HAS_VXTHREADS */ ) == -1) @@ -705,7 +705,7 @@ spawn_threads (ACCEPTOR *acceptor, status = -1; } -#if defined (ACE_HAS_VXTHREADS) +#if 0 for (i = 0; i < n_servers; ++i) { delete [] server_name[i]; diff --git a/ACE/tests/Max_Default_Port_Test.cpp b/ACE/tests/Max_Default_Port_Test.cpp index 772f6e8ae21..8834a8b6254 100644 --- a/ACE/tests/Max_Default_Port_Test.cpp +++ b/ACE/tests/Max_Default_Port_Test.cpp @@ -17,8 +17,8 @@ // to zero on that platform. // // In this test, the event handler is started at the port value -// USHRT_MAX and decremented for 300 port values and tested if the -// highest port number used agrees with ACE_MAX_DEFAULT_PORT value. +// USHRT_MAX and decremented for 'ports_to_test' port values and tested +// if the highest port number used agrees with ACE_MAX_DEFAULT_PORT value. // // // = AUTHOR @@ -179,8 +179,16 @@ run_main (int argc, ACE_TCHAR *argv[]) u_short max_listened_port = 0; +#if defined (__Lynx__) + // LynxOS can handle only 80 test iterations. + // This needs to be investigated further -- olli 12.11.2007 + const u_short ports_to_test = 80; +#else + const u_short ports_to_test = 300; +#endif + //Ports beyond 65279 were said to bad on NT sp 3. - for (u_short idx = USHRT_MAX; idx != USHRT_MAX - 300; --idx) + for (u_short idx = USHRT_MAX; idx != USHRT_MAX - ports_to_test; --idx) { #if defined (ACE_VXWORKS) if (retry_port_>0) diff --git a/ACE/tests/Process_Manager_Test.cpp b/ACE/tests/Process_Manager_Test.cpp index 22acac945de..e433098c906 100644 --- a/ACE/tests/Process_Manager_Test.cpp +++ b/ACE/tests/Process_Manager_Test.cpp @@ -26,9 +26,13 @@ // ============================================================================ #include "test_config.h" +#include "ace/SString.h" +#include "ace/Atomic_Op.h" +#include "ace/Task.h" #include "ace/OS_NS_unistd.h" #include "ace/OS_NS_string.h" #include "ace/Process_Manager.h" +#include "ace/Synch_Traits.h" #include "ace/Get_Opt.h" #include "ace/Thread.h" #include "ace/Reactor.h" @@ -103,8 +107,72 @@ const ACE_TCHAR *cmdline_format = ACE_TEXT (".") ACE_DIRECTORY_SEPARATOR_STR ACE return result; } +ACE_CString order; + +ACE_Atomic_Op<ACE_SYNCH_MUTEX, int> running_tasks = 0; + +class Process_Task : public ACE_Task<ACE_SYNCH> +{ +public: + Process_Task (const ACE_TCHAR *argv0, + ACE_Process_Manager &mgr, + int sleep_time) + : argv0_ (argv0), + mgr_ (mgr), + sleep_time_ (sleep_time) { } + + int open (void*) + { + char tmp[10]; + order += ACE_OS::itoa (sleep_time_, tmp, 10); + running_tasks++; + activate (); + return 0; + } + + int svc (void) + { + int result = 0; + ACE_exitcode exitcode; + pid_t my_child = spawn_child (argv0_, + mgr_, + sleep_time_); + result = mgr_.wait (my_child, + &exitcode); + if (result != my_child) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P) Error: expected to reap child (%d); got %d\n"), + my_child, + result)); + if (result == ACE_INVALID_PID) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%P) %p\n"), ACE_TEXT ("error"))); + //test_status = 1; + } + else + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P) reaped child, pid %d: %d\n"), + my_child, + exitcode)); + char tmp[10]; + order += ACE_OS::itoa (sleep_time_, tmp, 10); + return 0; + } + + int close (u_long) + { + running_tasks--; + return 0; + } + +private: + const ACE_TCHAR *argv0_; + ACE_Process_Manager &mgr_; + int sleep_time_; +}; + static int -command_line_test () +command_line_test (void) { ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Testing for last character of command line\n"))); @@ -351,6 +419,31 @@ run_main (int argc, ACE_TCHAR *argv[]) } } + Process_Task task1 (argv[0], mgr, 3); + Process_Task task2 (argv[0], mgr, 2); + Process_Task task3 (argv[0], mgr, 1); + task1.open (0); + task2.open (0); + task3.open (0); + + while (running_tasks!=0) + { + ACE_OS::sleep (1); + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P) still running tasks\n"))); + } + + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P) result: '%s'\n"), + order.c_str ())); + + if (order != "321123") + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P) wrong order of spawns ('%s', should be '321123')\n"), + order.c_str ())); + test_status = 1; + } + #if !defined (ACE_OPENVMS) // -------------------------------------------------- // Finally, try the reactor stuff... @@ -379,8 +472,7 @@ run_main (int argc, ACE_TCHAR *argv[]) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%P) %d processes left in manager\n"), nr_procs)); - -#endif +#endif /* !defined (ACE_OPENVMS) */ ACE_END_TEST; return test_status; } diff --git a/ACE/tests/Reactor_Notify_Test.cpp b/ACE/tests/Reactor_Notify_Test.cpp index 8c1af55294d..15adcd8eab6 100644 --- a/ACE/tests/Reactor_Notify_Test.cpp +++ b/ACE/tests/Reactor_Notify_Test.cpp @@ -38,6 +38,82 @@ ACE_RCSID(tests, Reactor_Notify_Test, "$Id$") static const time_t LONG_TIMEOUT = 10; static const time_t SHORT_TIMEOUT = 2; +// A class to run a quiet event loop in one thread, and a plain notify() +// from the main thread to make sure a simple notify will wake up a quiet +// reactor. +class Quiet_Notify_Tester : public ACE_Task<ACE_NULL_SYNCH> +{ +public: + Quiet_Notify_Tester (void) : result_ (0) {} + ~Quiet_Notify_Tester (void) { this->wait (); } + + //FUZZ: disable check_for_lack_ACE_OS + virtual int open (void * = 0); + // Start the reactor event thread. + + // Run the reactor event loop. + virtual int svc (void); + + // Return the test result, 0 ok, -1 fail + int result (void) const { return this->result_; } + +private: + ACE_Reactor r_; + int result_; +}; + +int +Quiet_Notify_Tester::open (void *) +{ + this->reactor (&this->r_); + return this->activate (); +} + +int +Quiet_Notify_Tester::svc (void) +{ + // Count on the main thread doing a notify in less than LONG_TIMEOUT + // seconds. If we don't get it, report a failure. + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) Starting quiet event loop\n"))); + this->r_.owner (ACE_Thread::self ()); + ACE_Time_Value tmo (LONG_TIMEOUT); + int status = this->r_.handle_events (&tmo); + time_t remain = tmo.sec (); + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%t) event loop status %d, %: secs remain\n"), + status, remain)); + if (remain == 0) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%t) Notify did not wake quiet event loop\n"))); + this->result_ = -1; + } + else + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) Notify woke quiet event loop\n"))); + } + return 0; +} + +static int +run_quiet_notify_test (void) +{ + ACE_DEBUG ((LM_DEBUG, "(%t) Starting quiet notify test\n")); + Quiet_Notify_Tester t; + if (t.open () == -1) + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("%p\n"), + ACE_TEXT ("Quiet notify activate")), + -1); + // Now sleep a bit, then do a simple, reactor wake-up + ACE_OS::sleep (SHORT_TIMEOUT); + t.reactor ()->notify (); + t.wait (); + ACE_DEBUG ((LM_DEBUG, "(%t) Quiet notify test done\n")); + return t.result (); +} + + class Supplier_Task : public ACE_Task<ACE_MT_SYNCH> { public: @@ -458,14 +534,22 @@ run_main (int, ACE_TCHAR *[]) int test_result = 0; // Innocent until proven guilty - test_result = run_notify_purge_test (); - if (test_result == 0) - ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("purge_pending_notifications test OK\n"))); + if (0 == run_notify_purge_test ()) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("purge_pending_notifications test OK\n"))); + } else - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("purge_pending_notifications test FAIL\n"))); + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("purge_pending_notifications test FAIL\n"))); + test_result = 1; + } #if defined (ACE_HAS_THREADS) + if (0 != run_quiet_notify_test ()) + test_result = 1; + ACE_Time_Value timeout (SHORT_TIMEOUT); ACE_DEBUG ((LM_DEBUG, @@ -495,4 +579,3 @@ run_main (int, ACE_TCHAR *[]) ACE_END_TEST; return test_result; } - diff --git a/ACE/tests/Refcounted_Auto_Ptr_Test.cpp b/ACE/tests/Refcounted_Auto_Ptr_Test.cpp index 8331908d150..f62a3b1cb24 100644 --- a/ACE/tests/Refcounted_Auto_Ptr_Test.cpp +++ b/ACE/tests/Refcounted_Auto_Ptr_Test.cpp @@ -346,7 +346,7 @@ static int test_reset_release (void) int errors = 0; ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Test copy constructor\n"))); - Printer_Ptr bar = new Printer ("1"); + Printer_Ptr bar(new Printer ("1")); Printer_Ptr fum = bar; if (!expect (ACE_TEXT ("bar"), bar, false, 1, 1)) ++errors; @@ -361,7 +361,7 @@ static int test_reset_release (void) ++errors; ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Test release\n"))); - Printer_Ptr fie = new Printer ("3"); + Printer_Ptr fie(new Printer ("3")); Printer_Ptr foe = fie; foe.release(); if (!expect (ACE_TEXT ("fie"), fie, false, 3, 0)) @@ -370,7 +370,7 @@ static int test_reset_release (void) ++errors; ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Test assignment to null\n"))); - Printer_Ptr fee = new Printer ("4"); + Printer_Ptr fee(new Printer ("4")); Printer_Ptr eraser; fee = eraser; if (!expect (ACE_TEXT ("fee"), fee, true, 0, 0)) @@ -379,8 +379,8 @@ static int test_reset_release (void) ++errors; ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Test assignment to value\n"))); - Printer_Ptr fix = new Printer ("5"); - Printer_Ptr fax = new Printer ("6"); + Printer_Ptr fix(new Printer ("5")); + Printer_Ptr fax(new Printer ("6")); fix = fax; if (!expect (ACE_TEXT ("fix"), fix, false, 6, 1)) ++errors; @@ -388,7 +388,7 @@ static int test_reset_release (void) ++errors; ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Test reset to null\n"))); - Printer_Ptr fey = new Printer ("7"); + Printer_Ptr fey(new Printer ("7")); Printer_Ptr flo = fey; flo.reset (); if (!expect (ACE_TEXT ("fey"), fey, false, 7, 0)) @@ -399,6 +399,55 @@ static int test_reset_release (void) return errors; } +static int test_operator(void) +{ + int errors = 0; + + // test null + Printer_Ptr printer_null; + if (!printer_null) + { + } + else + { + ++errors; + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("!printer_null should be false\n"))); + } + if (printer_null) + { + ++errors; + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("printer_null should be false\n"))); + } + else + { + } + + // test not null + Printer_Ptr printer_not_null(new Printer("check not null")); + if (!printer_not_null) + { + ++errors; + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("!printer_not_null should be false\n"))); + } + else + { + } + if (printer_not_null) + { + } + else + { + ++errors; + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("printer_not_null should be false\n"))); + } + + return errors; +} + int run_main (int, ACE_TCHAR *[]) { @@ -493,6 +542,9 @@ run_main (int, ACE_TCHAR *[]) } #endif /* ACE_HAS_THREADS */ + + test_errors += test_operator(); + ACE_END_TEST; return test_errors; diff --git a/ACE/tests/TSS_Test.cpp b/ACE/tests/TSS_Test.cpp index 58b942a5af7..8ee832ba9cd 100644 --- a/ACE/tests/TSS_Test.cpp +++ b/ACE/tests/TSS_Test.cpp @@ -72,15 +72,6 @@ static ACE_Thread_Mutex output_lock; extern "C" void cleanup (void *ptr) { -#if defined (ACE_HAS_PTHREADS_DRAFT4) - // The intended use of this function doesn't apply with - // Draft 4 threads. With Draft 4 threads, this function - // is called implicitly by pthread_setspecific whenever an - // old value is replaced. This function is intended to be - // used with Draft 6 and later threads, where it is called - // on thread termination with the thread-specific value. - ACE_UNUSED_ARG (ptr); -#else /* ! ACE_HAS_PTHREADS_DRAFT4 */ // Don't do this: ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) in cleanup, ptr = %x\n"), ptr)); // The Log_Msg buffer is a TSS object, too, and it may be gone! // if you must say something here try: @@ -89,7 +80,6 @@ cleanup (void *ptr) // operator delete (ptr); // is nonsense when applied to a void *! (even tho the compilers accept it???? delete static_cast <int *> (ptr); -#endif /* ! ACE_HAS_PTHREADS_DRAFT4 */ } // This worker function is the entry point for each thread. @@ -134,10 +124,10 @@ worker (void *c) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) in worker at location 1, ") ACE_TEXT ("key = %d, ip = %x\n"), key, ip)); - + // Needed to work around (possibly broken?) strict aliasing warning in GCC. void *v_ip (reinterpret_cast <void *> (ip)); - + if (ACE_Thread::setspecific (key, v_ip) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("ACE_Thread::setspecific"))); @@ -150,20 +140,14 @@ worker (void *c) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("ACE_Thread::setspecific"))); -#if ! defined (ACE_HAS_PTHREADS_DRAFT4) // See comment in cleanup () above. delete ip; -#endif /* ! ACE_HAS_PTHREADS_DRAFT4 */ - // We don't do keyfree for ACE_HAS_PTHREADS_DRAFT4 (or 6) since it - // is not supported there, and will generate an error anyway. Unless - // ACE_HAS_TSS_EMULATION is turned on, then it should work. -#if !(defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) \ - || defined (ACE_HAS_TSS_EMULATION) +#if defined (ACE_HAS_TSS_EMULATION) if (ACE_Thread::keyfree (key) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("ACE_Thread::keyfree"))); -#endif /* !(PTHREADS_DRAFT4 or 6) || defined (ACE_HAS_TSS_EMULATION) */ +#endif /* ACE_HAS_TSS_EMULATION */ // Cause an error. ACE_OS::read (ACE_INVALID_HANDLE, 0, 0); @@ -219,11 +203,14 @@ worker (void *c) ACE_TEXT ("key = %d, ip = %x\n"), key, ip)); - if (ACE_Thread::setspecific (key, (void *) ip) == -1) + // Needed to work around (possibly broken?) strict aliasing warning in GCC. + void *v_ip2 (reinterpret_cast <void *> (ip)); + + if (ACE_Thread::setspecific (key, v_ip2) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("ACE_Thread::setspecific"))); - if (ACE_Thread::getspecific (key, (void **) &ip) == -1) + if (ACE_Thread::getspecific (key, &v_ip2) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("ACE_Thread::getspecific"))); @@ -231,21 +218,15 @@ worker (void *c) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("ACE_Thread::setspecific"))); -# if !defined (ACE_HAS_PTHREADS_DRAFT4) // See comment in cleanup () above. delete ip; -# endif /* ! ACE_HAS_PTHREADS_DRAFT4 */ - // We don't do keyfree for ACE_HAS_PTHREADS_DRAFT4 (or 6) since it - // is not supported there, and will generate an error anyway. Unless // ACE_HAS_TSS_EMULATION is turned on, then it should work. -# if !(defined (ACE_HAS_PTHREADS_DRAFT4) || \ - defined (ACE_HAS_PTHREADS_DRAFT6) ) \ - || defined (ACE_HAS_TSS_EMULATION) +# if defined (ACE_HAS_TSS_EMULATION) if (ACE_Thread::keyfree (key) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%t) %p\n"), ACE_TEXT ("ACE_Thread::keyfree"))); -# endif /* !(PTHREADS_DRAFT4 or 6) || defined (ACE_HAS_TSS_EMULATION) */ +# endif /* defined (ACE_HAS_TSS_EMULATION) */ #endif /* ACE_HAS_TSS_EMULATION */ } return 0; diff --git a/ACE/tests/Thread_Manager_Test.cpp b/ACE/tests/Thread_Manager_Test.cpp index d775ce72194..b3dc548455b 100644 --- a/ACE/tests/Thread_Manager_Test.cpp +++ b/ACE/tests/Thread_Manager_Test.cpp @@ -89,7 +89,7 @@ handler (int /* signum */) static void * worker (int iterations) { -#if defined (ACE_HAS_VXTHREADS) +#if 0 ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) %s: stack size is %u\n"), ACE_OS::thr_self (), ACE_OS::thr_min_stack ())); @@ -283,7 +283,7 @@ run_main (int, ACE_TCHAR *[]) ACE_Thread_Manager *thr_mgr = ACE_Thread_Manager::instance (); -#if defined (ACE_HAS_VXTHREADS) +#if 0 // Assign thread (VxWorks task) names to test that feature. ACE_hthread_t *thread_name = 0; ACE_NEW_RETURN (thread_name, @@ -323,7 +323,7 @@ run_main (int, ACE_TCHAR *[]) THR_BOUND , ACE_DEFAULT_THREAD_PRIORITY , -1 -#if defined (ACE_HAS_VXTHREADS) +#if 0 , 0 , thread_name , 0 @@ -442,7 +442,7 @@ run_main (int, ACE_TCHAR *[]) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) main thread finished\n"))); -#if defined (ACE_HAS_VXTHREADS) +#if 0 for (i = 0; i < n_threads - 1; ++i) { delete [] thread_name[i]; diff --git a/ACE/tests/Vector_Test.cpp b/ACE/tests/Vector_Test.cpp index 1d0933d73eb..3866094c62b 100644 --- a/ACE/tests/Vector_Test.cpp +++ b/ACE/tests/Vector_Test.cpp @@ -12,7 +12,8 @@ // This is a simple test of the ACE_Vector class and its iterators. // // = AUTHOR -// Gonzalo A. Diethelm <gonzalo.diethelm@aditiva.com> +// Gonzalo A. Diethelm <gonzalo.diethelm@aditiva.com> and +// Karl-Heinz Wind <wind@itq.de> // // ============================================================================ @@ -37,6 +38,9 @@ const size_t TOP = 100; const size_t LEFT = 10; const size_t RESIZE = 20; +const size_t FILLER1 = 1; +const size_t FILLER2 = 2; + int run_main (int, ACE_TCHAR *[]) { ACE_START_TEST (ACE_TEXT ("Vector_Test")); @@ -107,8 +111,8 @@ int run_main (int, ACE_TCHAR *[]) ACE_ASSERT (vector[i] == 0); } ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("vector[%d]:%d\n"), - i, vector[i])); + ACE_TEXT ("vector[%d]:%d\n"), + i, vector[i])); } vector.clear (); @@ -117,6 +121,37 @@ int run_main (int, ACE_TCHAR *[]) ACE_TEXT ("Size: %d\n"), vector.size ())); + // test resize (shrink and enlarge with buffer realloc) + VECTOR vector2; + + // should be around 32 + size_t boundary = vector2.capacity (); + + // we fill everything up with 1 + // 1, 1, 1, 1, 1, 1, 1, 1, + // 1, 1, 1, 1, 1, 1, 1, 1, + // 1, 1, 1, 1, 1, 1, 1, 1, + // 1, 1, 1, 1, 1, 1, 1, 1, + for (i = 0; i < boundary; ++i) + vector2.push_back (FILLER1); + + // we throw almost everything away. + vector2.resize (1, 0); + + // we fill up with another pattern + // 1, 2, 2, 2, 2, 2, 2, 2, + // 2, 2, 2, 2, 2, 2, 2, 2, + // 2, 2, 2, 2, 2, 2, 2, 2, + // 2, 2, 2, 2, 2, 2, 2, 2, + // 2, + for (i = 0; i < boundary; ++i) + vector2.push_back (FILLER2); + + // now we check the result + ACE_ASSERT (vector2[0] == FILLER1); + for (i = 0; i < boundary; ++i) + ACE_ASSERT (vector2[i+1] == FILLER2); + VECTOR v1; VECTOR v2; v1.push_back (1); @@ -141,3 +176,4 @@ int run_main (int, ACE_TCHAR *[]) return 0; } + diff --git a/ACE/tests/run_test.lst b/ACE/tests/run_test.lst index eef37e991d8..7a5c86217ad 100644 --- a/ACE/tests/run_test.lst +++ b/ACE/tests/run_test.lst @@ -138,7 +138,7 @@ Refcounted_Auto_Ptr_Test: !ACE_FOR_TAO Reference_Counted_Event_Handler_Test Reverse_Lock_Test Sendfile_Test: !QNX !NO_NETWORK !VxWorks -Signal_Test: !VxWorks64 !VxWorks65 +Signal_Test: !VxWorks64 !VxWorks65 !LynxOS SOCK_Connector_Test: !NO_NETWORK SOCK_Netlink_Test: !ACE_FOR_TAO SOCK_Send_Recv_Test: !NO_NETWORK |