Thu May 21 21:55:09 1998 David L. Levine * ACE version 4.5.7 released. Thu May 21 17:36:37 1998 David L. Levine * ace/config-sunos5.6.h: added support for POSIX 199506 extensions. Thanks to J. Russell Noseworthy for providing this support. * ace/Local_Tokens.{h,i}: inlined ACE_Null_Token ctor and dtor in class header because the clone () method needs the ctor inlined, and it's too difficult to get it right with macros. * tests/SString_Test.cpp (main): added ACE_ASSERT with s4 in it, because it was unused otherwise. * performance-tests/Synch-Benchmarks/Options.cpp (print_results): changed #else to #elif, because it has a condition after it. Thu May 21 15:28:07 1998 Nanbor Wang * tests/test_config.h: Modified to write output from tests into log file. Notice that log files on CE have extension name ".txt" instead of ".log". * ace/OS.i (strrchr): Added UNICODE version of this function. * ace/Log_Record.{h,cpp}: Generalized message formatting on CE by adding a new method format_msg(). * ace/Reactor_Impl.h: Removed an extra comma. * ace/XtReactor.cpp: Include "ace/Reactor.h" * tests/Recursive_Mutex_Test.cpp: * tests/Future.cpp: Removed iteration restriction on CE. Thu May 21 12:13:36 1998 Nanbor Wang * ace/ace_{dll,lib}.dsp: Added Stats.cpp into projects. Wed May 20 23:02:41 1998 Steve Huston * ace/SOCK_Dgram_Mcast.cpp (subscribe): On Win32, if ACE::get_ip_interfaces finds less than 2 interfaces, call subscribe with "0.0.0.0". This is sort of a hack and is meant only to help get things working again until ACE::get_ip_interfaces can be made to work correctly in all cases. Wed May 20 10:42:12 1998 David L. Levine * ace/config-mvs.h: enabled ACE_LACKS_CONDATTR_PSHARED and ACE_LACKS_MUTEXATTR_PSHARED. Thanks to Chuck Gehr for advising on this. * ace/config-linux-lxpthreads.h,config-lynxos.h: removed commented-out ACE_LACKS_{COND,MUTEX}ATTR_PSHARED #defines. * ace/config-sunos5.5-{sunc++-4.x,g++}.h: removed commented-out ACE_LACKS_{COND,MUTEX}ATTR_PSHARED. Enabled ACE_HAS_CLOCK_GETTIME, because we always link with -lposix4. Thanks to J. Russell Noseworthy for inspiring the ACE_HAS_CLOCK_GETTIME enable. * ace/config-osf1-4.0.h: removed uncommented ACE_LACKS_CONDATTR_PSHARED, so that we can test whether it's necessary. * ace/Stats.*,Makefile: added ACE_Stats class. * performance-tests/Misc/context_switch_time.cpp: use ACE_Stats to calculate standard deviations. Tue May 19 21:24:50 1998 Nanbor Wang * tests/Future_Test.cpp: Reduced the number of iterations on CE. * ace/Synch.i: Added #ifdef (ACE_HAS_THREADS) to make it compile on non-threaded platforms. Tue May 19 10:05:07 1998 Irfan Pyarali * ace/SString.cpp (strlen): Renamed ACE_WString::wstrlen to ACE_WString::strlen. * ace/SString.i: Reordered functions to make g++ happy. * ace/ACE.cpp (hash_pjw): Changed ACE_OS::strlen to ACE_WString::strlen. Tue May 19 09:52:08 1998 Carlos O'Ryan * ace/config-irix6.x-g++.h: * ace/config-irix6.x-sgic++-nothreads.h: * ace/config-irix6.x-sgic++.h: Added ACE_LACKS_MUTEXATTR_PSHARED Mon May 18 16:37:36 1998 Irfan Pyarali * ace/SString.h (ACE_CString): Added the ability to hold on to user supplied character strings without having to make a copy. * ace/OS.h (ACE_OS): Added implementations for strrchr, strnchr, strnstr, and strstr. * ace/ACE.cpp (hash_pjw): Added new versions of these that work with user specified string length. Mon May 18 12:24:40 1998 Douglas C. Schmidt * ace/config-*.h: Commented out most of the ACE_LACKS_CONDATTR_PSHARED so we can see what platforms really DON'T support this... * ace/OS.i (mutex_init): Added support for pthread_mutexattr_setpshared() so we can initialize POSIX pthreads process-wide mutexes. Thanks to Ki-hyun Yoon for suggesting this. * ace/config-sunos5.6.h: Added an #define for ACE_THREAD_POSIX_SEM. Thanks to Ki-hyun Yoon for reporting this. * ace/config-sunos5*.h: Removed the ACE_LACKS_RWLOCK_T stuff since it's unnecessary. Thanks to Chris Lahey for reminding me of this... Mon May 18 13:48:14 1998 Nanbor Wang * ace/Synch.i: Added #ifdef (ACE_HAS_THREADS) to make it compile on non-threaded platforms. Mon May 18 12:31:32 1998 Darrell Brunsch * ace/Service_Config.{h,i,cpp}: Added an accessor debug() for external access to the variable. More debug messages check this before displaying. * ace/Parse_Node.cpp: Checks Service_Config's debug flag before outputting debug messages. Sun May 17 23:14:32 1998 Nanbor Wang * tests/Wince/*.dsp: Disabled precompiled headers. They ate up all my disk space. * ace/Service_Config.cpp: takes a string of type ASYS_TCHAR. Use ACE_WIDE_STRING to do the conversion. * ace/Log_Msg.{h,cpp} (ACE_ASSERT): Use unicode in ACE_ASSERT. (log): Don't exit the program for now. Exiting program here destroys all debugging message in the window. * tests/Reader_Writer_Test.cpp: Reduced the number of iterations on WinCE. * ace/OS.i: Added ACE_OS::time () implementation for CE. Sun May 17 21:45:07 1998 David L. Levine * performance-tests/Misc/childbirth_time.cpp: changed type of MULTIPLY_FACTOR from int to size_t to avoid signed/unsigned comparison. * tests/Tokens_Test.cpp: synchronize start of thread svc () routines. Occasionally, the first thread would finish before any others had started. The TSS objects would get cleaned up. Then, the remaining threads would start up and make a big mess. Sat May 16 15:10:46 1998 Douglas C. Schmidt * ace/Service_Config.h (ACE_Service_Config): Moved the process_directive() into the public part of the class so this can be called by applications one the Service Configurator is open. Thanks to Tom Arbuckle for suggesting this. Sat May 16 14:12:09 1998 Nanbor Wang * ace/Thread_Manager.{h,i,cpp} (class ACE_Thread_Descriptor_Base): Extract thread handle and thread creation flags out from Thread_Descriptor into this new class. This is necessary because after my last round of changes to improve ACE_Thread_Manager, I changed the from holding Thread_Descriptor's to holding pointers to descriptor. This was a bad move because the address of these pointers had already been "freed." The now holds ACE_Thread_Descriptor_Base which contains only the information needed for manipulating . Thanks to Arturo for noticing this. Sat May 16 03:23:35 1998 Nanbor Wang * performance-tests/Misc/childbirth_time.cpp (main): Added a new function to test the performance of ACE_Thread_Mutex in single thread _without_ any contention. Fri May 15 22:55:51 1998 Nanbor Wang * tests/Recursive_Mutex_Test.cpp: Only iterate the test 50 times on CE as on Chorus. Otherwise, as I'm using a CEdit to hold the test output, CEdit would overflow. * ace/OS.i (thr_getspecific): Don't check for return value of TlsGetValue on CE because CE doesn't seem to set the LastError correspondingly. (strchr): Added implementation on CE. * Added Activation_Queue.i and Strategies.i. * Combed thru all these files and added difinitions for ctor/dtor for a bunch of classes explicitly. CE needs them. Activation_Queue.cpp Activation_Queue.h Dynamic.h Dynamic.i Event_Handler.h Event_Handler.i Get_Opt.h Get_Opt.i Handle_Set.h Handle_Set.i High_Res_Timer.h High_Res_Timer.i INET_Addr.h INET_Addr.i IO_SAP.h IO_SAP.i IPC_SAP.h IPC_SAP.i Local_Tokens.h Local_Tokens.i Log_Record.h Log_Record.i Malloc.h Malloc.i OS.h OS.i Obstack.cpp Obstack.h Obstack.i Parse_Node.h Parse_Node.i Pipe.h Pipe.i Process_Manager.h Process_Manager.i SOCK.h SOCK.i SOCK_Acceptor.cpp SOCK_Acceptor.h SOCK_Acceptor.i SOCK_CODgram.h SOCK_CODgram.i SOCK_Connector.h SOCK_Connector.i SOCK_Dgram.h SOCK_Dgram.i SOCK_Dgram_Bcast.h SOCK_Dgram_Bcast.i SOCK_Dgram_Mcast.h SOCK_Dgram_Mcast.i SOCK_IO.h SOCK_IO.i SOCK_Stream.h SOCK_Stream.i SString.h SString.i Sched_Params.h Sched_Params.i Select_Reactor.h Select_Reactor.i Service_Manager.h Service_Manager.i Service_Repository.h Service_Repository.i Service_Types.h Service_Types.i Shared_Object.h Shared_Object.i Signal.h Signal.i Strategies.cpp Strategies.h Strategies.i Strategies_T.cpp Strategies_T.h Synch.cpp Synch.h Synch.i Synch_Options.cpp Synch_Options.h Synch_Options.i Timer_Heap_T.cpp Timer_Heap_T.h Timer_List_T.cpp Timer_List_T.h Timer_Queue_T.cpp Timer_Queue_T.h Timer_Wheel_T.cpp Timer_Wheel_T.h. Fri May 15 16:55:34 1998 Douglas C. Schmidt * ace/config-sunos5*.h: Automatically enable ACE_LACKS_RWLOCK_T if we're NOT using Solaris threads (since pthreads doesn't support readers/writer locks). * ace/Service_Config.cpp: Removed a duplicate template instantiation of template class ACE_Unbounded_Queue_Iterator. Thanks to Ben Eng for reporting this. * ace/OS: Fixed a number of problems that occurred when trying to use the PTHREAD implementation on Solaris without using ACE_HAS_STHREADS. The problems related primarily to the ACE_OS::rw*() functions. To fix the problems, the following changes were made. Remove the #if defined (ACE_HAS_STHREADS) from the case where we have the native rw*() functions. We just use the ACE_LACKS_RWLOCK_T compile flag to determine whether we have the native functions. Without the ACE_HAS_STHREAD flag, ACE_rwlock_t comes up undefined. To fix this, moved the definition at approx. line 1868 above the #else at approx. line 1865 as the following: #if ! defined (ACE_LACKS_RWLOCK_T) #include typedef rwlock_t ACE_rwlock_t; #endif // ! ACE_LACKS_RWLOCK_T Finally, the ACE_idtype_t type was also undefined. To fix this, moved the typedef from within the #if defined (ACE_HAS_STHREADS) || defined (DIGITAL_UNIX) block and create a new ifdef block: #if defined (ACE_HAS_IDTYPE_T) typedef idtype_t ACE_idtype_t; #else typedef int ACE_idtype_t; #endif Thanks to Chris Lahey for his through help at recognizing and fixing these problems. Fri May 15 09:38:37 1998 David L. Levine * bin/make_release: redirect cvs tag output to /dev/null. * performance-tests/Misc/context_switch_time (main): fixed printout of yield test time for other than the default number of iterations. Fri May 15 09:29:57 1998 David L. Levine * ACE version 4.5.6 released. Fri May 15 08:25:19 1998 David L. Levine * ace/Service_Config.cpp: fixed and added template instantations. * ace/Svc_Conf_y.cpp,etc/Svc_Conf_y.cpp.diff: removed compile warnings. * include/makeinclude/platform_sunos5_g++.GNU: use PIC instead of pic, because the TAO orbsvcs lib needs it. * Makefile: added .PHONY for phony targets. Fri May 15 02:47:35 1998 Douglas C. Schmidt * ACE version 4.5.5 released. Fri May 15 02:42:06 1998 Douglas C. Schmidt * ACE version 4.5.4 released. Thu May 14 15:28:42 1998 Douglas C. Schmidt * ace/config-kcc-common.h: Added the ACE_HAS_USING_KEYWORD to the config file. Thanks to Ben Eng for reporting this. * examples/Service_Configurator/Misc: Updated the Timer_Service test to demonstrate the new service configurator feature. It's AWESOME! * ace/Svc_Conf.h, ace/Svc_Conf.l: Added a super-cool new feature that allows us to parse service configurator directives from a string rather than from a svc.conf file. * ace/Svc_Conf.l (yywrap): Free up ace_yy_current_buffer in yywrap to prevent a memory leak. Thanks to Paul Motuzenko for reporting this. * examples/IPC_SAP/SOCK_SAP/CPP-inserver-poll.cpp: Enhanced the implementation to make it easier to follow and to support the latest features of CPP-inclient.cpp. * ace/OS.h (ACE_OS): Added a wrapper for strcspn(3s). * examples/IPC_SAP/SOCK_SAP/CPP-inserver-fancy.cpp: Added more cool changes to the CPP-inserver.cpp example and renamed it. Thu May 14 14:46:02 1998 Irfan Pyarali * ace/OS.h: Moved the definition of ACE_Export before it is used. Thu May 14 13:22:46 1998 Carlos O'Ryan * ace/Message_Block.h: * ace/Message_Block.cpp: The static duplicate() method can take pointer to a const Message_Block. Wed May 13 18:46:28 1998 Douglas C. Schmidt * examples/IPC_SAP/SOCK_SAP/CPP-{inserver,inclient}.cpp: Added profile timing to the server so we can compute socket performance metrics. Also generalized the tests so we can experiment with both oneway and twoway calls. Wed May 13 19:20:27 1998 James C Hu * ace/OS.h: * ace/OS.i: * ace/OS.cpp: Added a substitute gets implementation for when ACE_LACKS_GETS. The substitute is actually safer than gets, so I may end up making gets call the new routine instead of Standard C's. * ace/config-g++-common.h: Changed the g++ common file so that 2.8.1 acts like EGCS does. This worked on Solaris 2.5.1. We'll see how other's fare. Wed May 13 18:13:12 1998 Douglas C. Schmidt * ACE version 4.5.3 released. Wed May 13 11:29:56 1998 Nanbor Wang * performance-tests/Synch-Benchmarks/Options.cpp (print_results): My previous change to add print_results functionality when ACE_HAS_GETRUSAGE broke this on Win32. * ace/config-g++-common.h (ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTIONS): Made this macro defined for all versions of g++. Wed May 13 09:26:48 1998 David L. Levine * many *.{h,i,cpp,idl} files: inserted RCS keyword string. Wed May 13 00:35:25 1998 Irfan Pyarali * ace: Added ACE_Export to a bunch of class in ACE. Thanks to Gonzalo A. Diethelm (gonzo@ing.puc.cl) for pointing this out. Tue May 12 15:16:04 1998 Nanbor Wang * ace/config-WinCE.h: * ace/OS.h: Stopped using non-static object manager for CE. This is causing some problem at process shutdown. * ace/Acceptor.cpp: Made CE friendly. * ace/Process.cpp ([~]ACE_Process_Options): Moved things around to avoid compilation errors on CE. Secret: CE doesn't have environment variables. Tue May 12 13:28:05 1998 Carlos O'Ryan * ace/OS.h: The ACE_INLINE_FOR_GNUC macro must be defined (as the null token) if ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTION is not defined. Tue May 12 12:30:55 1998 Nanbor Wang * ace/README: * ace/config-g++-common.h (ACE_HAS_GNUC_BROKEN_TEMPLATE_INLINE_FUNCTIONS): Added this new macro to get around a bug which only happens in GNUC 2.7.xx. It mistakenly refers to the template definition as the place where a function is used. * ace/OS.h (ACE_INLINE_FOR_GNUC): Added the macro to fix the GNUC bug. * ace/Thread_Manager.h: Added above macro to set_next and get_next. Tue May 12 12:11:36 1998 Bob Laferriere * ace/Process.{h,cpp}: modifications to make the environment buffer and number of environment variables tunable in the constructor. I also fixed a logic error which previously attempted to write beyond an array bounds of the array of pointers into the environment buffer. I made the environment_argv_ buffer tunable as well. The new constructor takes the old hardcoded static sizes as the default dynamic sizes for backwards compatiblity. The behavior is to return -1 if the maximum buffer size or maximum number of environment arguments has been reached in following with the prior behavior. I opted not to make the members grow as needed so the class would still follow it's prior behavior. This would be simple to add, however. Tue May 12 08:29:50 1998 David L. Levine * ace/Malloc.cpp (ACE_Allocator::instance): replaced dynamic allocation of the default ACE_Allocator with allocation from the data segment. Thanks to Ben Eng for providing the stack trace that revealed the problem. * ace/Malloc.h: added comments to not add data members to ACE_Allocator or ACE_New_Allocator. * bin/g++dep: changed PATH to pick up /project/doc/pkg/gnu/bin/g++, and removed GNUG_INCLUDE. Thanks to Ganesh Pai for reporting problems with the old version on Linux. Tue May 12 02:59:27 1998 Nanbor Wang * performance-tests/Misc/childbirth_time.cpp: Added ACE_OS::sleep (0) before all timing sections start. This ensures we own a fresh time slice when the timing begin and reduce the chances of getting preempted Tue May 12 00:42:05 1998 Nanbor Wang * bin/dsp2dsp.pl: This file clones a new MSVC 5.0 dsp file based on setting from another dsp file. It is most useful in adding new project files into tests/. * tests/WinCE/*: New project files. Updated the workspace. Please see CE-status for the current progress. * tests/Buffer_Stream_Test.cpp: * tests/Conn_Test.cpp: * tests/Enum_Interfaces_Test.cpp: * tests/Handle_Set_Test.cpp: * tests/Hash_Map_Manager_Test.cpp: * tests/Message_Block_Test.cpp: * tests/Reactors_Test.cpp: * tests/Thread_Manager_Test.cpp: * tests/Thread_Mutex_Test.cpp: Made CE friendly. * tests/test_config.h: Moved some common definitions shared among CE and other platforms out. * ace/Acceptor.cpp: * ace/Acceptor.h: * ace/Connector.cpp: * ace/Connector.h: * ace/Stream.cpp: * ace/Svc_Handler.cpp: * ace/Svc_Handler.h: * ace/Synch.h: * ace/Synch.i: CE stuff. * ace/config-WinCE.h: Defined ACE_DEFAULT_SERVER_HOST in UNICODE here to overwrite the default setting. * ace/Synch.i (ACE_Lock): CE needs a default ctor here. Mon May 11 15:43:01 1998 Nanbor Wang * tests/WinCE/ce_tests.dsw: * tests/WinCE/Atomic_Op_Test.dsp: * tests/WinCE/Barrier_Test.dsp: * tests/WinCE/Basic_Types_Test.dsp: * tests/WinCE/Map_Manager_Test.dsp: Added/Updated project files. * tests/Atomic_Op_Test.cpp: * tests/Barrier_Test.cpp: * tests/Basic_Types_Test.cpp: Made them CE friendly. * ace/config-WinCE.h: Only define ACE_LACKS_INLINE_FUNCTIONS when building debug version of ACE for SH series CPU. * WindozeCE/WindozeCEDlg.cpp: Updated the initial message after the display window but before ACE console progrm started. Mon May 11 15:43:01 1998 Nanbor Wang * ace/OS.{i,cpp}: Moved CE's impelmentation of ACE_OS::fprintf to cpp file. Mon May 11 15:15:24 1998 Carlos O'Ryan * ace/Thread_Manager.h: Removed bogus ACE_INLINE macros in class declaration, they were making the SGI compiler *very* unhappy. Mon May 11 15:11:11 1998 Nanbor Wang * ace/OS.cpp (ctime_r): Renamed the fmtstr to ACE_OS_CTIME_R_FMTSTR for we may need to use similar scheme to fix other bugs in the future. Mon May 11 14:50:47 CDT 1998 Everett Anderson * ace/Name_Proxy.cpp: Changed one last recv to recv_n. Mon May 11 13:14:22 1998 Chris Gill * ace/RB_Tree.{cpp,h,i}: (new) Red-Black Tree data structure implementation. A Red-Black Tree is an efficient self-balancing binary tree that uses recoloring to minimize rotations while rebalancing on insertion or deletion of a tree node. Items in the tree are stored according to a key provided at insertion. This implementation is an OO rendition of the ADT described in Cormen, Leiserson, Rivest, "Introduction to Algorithms" (c) 1990, MIT. Mon May 11 12:31:41 1998 Steve Huston * ace/OS.h: Made ACE_LD_SEARCH_PATH, ACE_LD_SEARCH_PATH_SEPARATOR_STR, ACE_DLL_PREFIX, ACE_DLL_SUFFIX settable via config.h. * ace/config-hpux-10.x.h: ace/config-hpux11.h: Set ACE_LD_SEARCH_PATH, ACE_DLL_SUFFIX. Thanks to Kirill Rybaltchenko and David Levine for identifying this problem. Mon May 11 12:27:05 1998 David L. Levine * ace/ACE.cpp (send_n): retry if ACE::send () fails due to EWOULDBLOCK. Thanks to Dave Brackman for reporting this. * tests/Env_Value_Test.cpp (main): check return values of options.setenv () calls. Thanks to Bob Laferriere for recommending this. * include/makeinclude/platform_vxworks5.x_ghs.GNU: instead of using GNU ranlib386 after using GHS ax for i386 targets, just use GNU ar386. * ace/gethrtime.cpp: added some comments about GHS asm support. * java/netsvcs/{Logger,Time}/Makefile, java/tests/netsvcs/Logger/Makefile: replaced WRAPPER_ROOT with ACE_ROOT. Mon May 11 05:14:18 1998 Nanbor Wang * ace/config-WinCE.h: Added ACE_HAS_NON_STATIC_OBJECT_MANAGER. CE console programs have to set this flag because the main functions is actually renamed and running in a threads. * tests/test_config.h: Excluded class and macros to redirect debugging messages to files under CE. This make debugging a bit easier but we should eventually put them back under CE. * tests/Map_Manager_Test.cpp: Made CE friendly. * ace/Hash_Map_Manager.cpp: Some ACE_ERROR were not CE friendly. * ace/Profile_Timer.{h,i}: * ace/Synch.{h,i}: Moved inline function definitions to Synch.i file. Windows CE can't grok any inline at all. Mon May 11 02:43:45 1998 Nanbor Wang * performance-tests/Misc/childbirth_time.cpp (main): Added a new method for benchmarking ACE_Thread_Manager::spawn_n. Added other cosmetic changes. Sun May 10 23:20:36 1998 Irfan Pyarali * ace/Token.cpp: Adding more debugging statements. * ace/Asynch_Acceptor.cpp (should_reissue_accept): Added template method that decides whether a new asynchronous accept should be issued. Sun May 10 23:28:57 1998 Nanbor Wang * ace/OS.cpp(inherit_log_msg): * ace/Log_Msg.cpp (thr_desc): Wait on Thread_Descriptor's lock instead of the "global" Thread_Manager lock. * ace/Thread_Manager.cpp: Moved acquire_release() from ACE_Thread_Manager to ACE_Thread_Descriptor. This method is called from ACE_Log_Msg::thr_desc to prevent a thread from using its thread descriptor before it is fully built. The change relieve spwaned threads from waiting for other threads created in the same spwan_n call to be created before it can start running. (insert): Added an extra argument to control whether we want to insert the newly created thread into ACE_Thread_Manager's thread table or not. Notice that it is default to 1 to remain the original behavior in case anyone is using this class/function directly in their code. However, in ACE_Thread_Manager, we always prevent it from inserting because we always register thread descriptors from spawn_i. Sun May 10 01:51:29 1998 Nanbor Wang * ace/OS.h: Renamed ACE_OS::Time_To_The_Beginning to ACE_OS::FILETIME_to_timval_skew. * ace/OS.cpp: Found the problem in ACE_OS::ctime_r. An internal compiler bug (?) caused the bug. The solution: move the format string out as a const string instead of putting it in sprintf directly. Weird. * ace/Log_Record.{h,cpp}: Made priority_name_ and its access function CE friendly. Sat May 9 20:09:13 1998 Nanbor Wang * ace/Thread_Manager.h: Changed the type of lock used by to ACE_SYNCH_MUTEX. Or else, it won't compile on platforms that doesn't support thread. Thanks to Woody Zenfell for reporting this. Fri May 08 22:29:01 1998 Nanbor Wang * ace/SOCK_Dgram_Mcast.cpp (subscribe): CE UNICODE related fix. Fri May 8 14:18:46 1998 Nanbor Wang * ace/Thread_Manager.h (ACE_Thread_Descriptor): Added ACE_INLINE to declarations of set_next and get_next to get around a bug in a version of g++. Fri May 8 11:57:23 1998 Douglas C. Schmidt * ace/Map_Manager.cpp: Fixed a bug where we weren't calling close_i() when resizing the buffer. * ace/Thread_Manager.cpp (set_grp): In ACE_Thread_Manager::{get,set}_grp we must check to see that we have a valid pointer after the ACE_FIND. Otherwise a seg fault occurs. Thanks to Chris Lahey for reporting this. Fri May 08 09:47:50 1998 David L. Levine * ace/config-linux-common.h: only use ACE_HAS_POLL with glibc2. Thanks to Saneyasu for reporting this. * ace/OS.i (sleep): On Linux without ::poll () (prior to glibc), copy the ACE_Time_Value argument because the system modifies it. * include/makeinclude/platform_osf1_4.0.GNU: moved -lm from LIBS to MATHLIB. * performance-tests/UDP/Makefile: added $(MATHLIB) to LDLIBS. * tests/Aio_Platform_Test.cpp (have_asynchio): use _SC_LISTIO_AIO_MAX instead of _SC_AIO_LISTIO_MAX if it's #defined. It is on DU 4.0. Fri May 08 08:43:42 1998 Steve Huston * include/makeinclude/platform_hpux_gcc.GNU: Added $(PIC) to definition of SOFLAGS. Thanks to Kirill Rybaltchenko for this fix. * ace/SOCK_Dgram_Mcast.cpp (subscribe): Added code for Win32 so that if a subscribe is done without specifying an interface, the mcast address is subscribed to on each non-loopback interface. This works around a bug in NT's winsock in the presence of multiple IP interfaces. Won't hurt 95 - will just run a bit slower than it otherwise would. * examples/Reactor/Multicast/Multicast.{mdp,mak}: Added MSVC 4.2 workspace for this example. Fri May 8 03:43:25 1998 Nanbor Wang * ace/Thread_Manager.{h,cpp}: Added yet one more member variable into Thread_Descriptor to keep track of registration of Thread_Descriptors. By adding this variable, we can avoid an extra locking in remove_thr for most cases (normal cases ;-). Thanks to the inspiration from Arturo Montes . Wed May 06 18:35:21 1998 Steve Huston * ace/ACE.cpp (get_ip_interfaces): Reset buf_len before each call to get_reg_key to get registry value for device's IP address. It gets overwritten on each call to get_reg_key. * include/makeinclude/platform_mvs.GNU: Added definition for PIC. Though not related to position-independent-code, it is a switch that makes shared lib builds work right. Removed the old SOBUILD def. Thanks to Chuck Gehr for helping with this strategy. Thu May 07 22:06:13 1998 Ben Eng * ace/config-kcc-common.h,config-linux-{common,kcc}.h: updated KCC/Linux support, and integrated into config-linux-common.h. Thu May 7 20:32:20 1998 Douglas C. Schmidt * examples/Service_Configurator/IPC-tests/client/local_dgram_client_test.cpp (main): Oops, we need to move the unlink() AFTER we create the file... Thanks to Sandro Doro for reporting this. Wed May 6 02:57:40 1998 Nanbor Wang * ace/Filecache.h (ACE_Filecache_Handle): Removed ACE_EXPORT_DECLARE and specified ACE_Export directly for ACE_Filecache_Handle and ACE_Filecache in calss declarations. * ace/Thread_Manager.{h,i,cpp}: A bug was found by Arturo Montes who noticed that when a thread was spawned and then exited immediately, its thread descriptor might get freed before even get registered into the thread table kept by the Thread_Manager. Although it doesn't make any sense to spawn a thread just to let it return immediately, a middleware shouldn't restrict the way how users want to use it. I got around this problem by adding a lock into Thread_Descriptor. Before spawning a thread, the Thread Manager will first grab the lock. It won't release the lock until calling append thread, at which point, the Thread_Descriptor of the thread has been stashed into the table. Removing the Thread_Descriptor also requires to hold this lock and release the lock before the Thread_Descriptor is "freed." Therefore, if a thread exit before its Thread_Manager ever gets a chance to register it, it will block and waiting. The type of the lock is defined by ACE_DEFAULT_THREAD_MANAGER_LOCK which, by default, is ACE_Thread_Mutex. User can change the definition by defining in their config.h file. For example, if you can be sure that all your threads will run for an extended long time (which, in most case, should be true,) you can disable this feature by defining this as a ACE_Null_Mutex to speed up spawning and termination of threads. (thread_desc_freelist_): Added a free list to Thread_Manager to recycle Thread_Descriptor. By default, this free list pre-allocate 0 Thread_Descriptor and has low-water-mark of 1, increment count 1 and a huge (25000) high water mark. That is, if you use a Thread_Manager for an extended period of time, you won't have to dynamically allocate memory for Thread_Descriptor for every thread after your system is stable (the thread count fluctuates between some certain values.) There are two ways to change the settings. First, by defining ACE_DEFAULT_THREAD_MANAGER_LWM, ACE_DEFAULT_THREAD_MANAGER_HWM, ACE_DEFAULT_THREAD_MANAGER_INC, and ACE_DEFAULT_THREAD_MANAGER_PREALLOC in your file. This changes the default setting of your ACE. (The global Thread_Manager use this setting.) Or, you can specify these values when creating a Thread_Manager. * ace/Free_List.cpp (alloc,dealloc): Don't grab the lock in these two functions. They only get called from add() and remove() which hold the lock before making the call. Actually, they also gets called from the constructor and destructor. But that shouldn't be a problem. * tests/Reactor_Notify_Test.cpp (run_test): Moved the #endif of ACE_HAS_THREADS down to avoid compilation error on non-threaded platforms. Thu May 07 19:08:22 1998 Douglas C. Schmidt * ACE version 4.5.2 released. Thu May 7 14:10:41 1998 Carlos O'Ryan * ace/Timer_Hash_T.h: * ace/Timer_Hash_T.cpp: * ace/Timer_Heap_T.cpp: * ace/Timer_Wheel_T.cpp: The classes had a INHERITED typedef for the base class, but Solaris defines a macro by the same name. This causes very weird problems with EGCS (and probably other g++ versions). Thu May 07 04:15:23 1998 Nanbor Wang * ace/Profile_Timer.cpp (elapsed_time): Treat Win32 differently so I can use this function with WinCE Emulation build. The problem is that Win32 can't convert __int64 to double. * ace/OS.{h,cpp} (ACE_Time_Value): (Win32 only) Added a new static const member (Time_To_The_Beginning) of type DWORDLONG (unsigned _int64) to adjust the time skew between FILETIME and POSIX time. Changed the type of _100ns to ULARGE_INTEGER to eliminate unnecessary computation. Wed May 6 23:58:40 1998 Carlos O'Ryan * ace/XtReactor.cpp: The signature for the open() method of the notify pipe has been modified. Wed May 6 23:28:47 1998 Douglas C. Schmidt * examples/Service_Configurator/IPC-tests/client/local_dgram_client_test.cpp: Fixed a couple of mistakes that were causing the UNIX domain sockets not to work. Thanks to Sandro Doro for recommending this. * performance-tests/Misc/context_switch_time.cpp (svc): An 'i' was being defined twice, gorp! It's fixed now! Wed May 06 22:00:14 1998 David L. Levine * ace/config-linux-common.h: only #define ACE_HAS_4_4BSD_SENDMSG_RECVMSG with __GLIBC__. Thanks to Chanaka Liyanaarachchi for reporting the lack of CMSG_DATA support on RedHat 4.2. Wed May 06 18:35:21 1998 Steve Huston * ace/ACE.cpp (get_ip_interfaces): Reset buf_len before each call to get_reg_key to get registry value for device's IP address. It gets overwritten on each call to get_reg_key. * include/makeinclude/platform_mvs.GNU: Added definition for PIC. Though not related to position-independent-code, it is a switch that makes shared lib builds work right. Removed the old SOBUILD def. Thanks to Chuck Gehr for helping with this strategy. Wed May 06 16:32:53 1998 Nanbor Wang * ace/Filecache.h (ACE_Filecache_Handle): Removed ACE_EXPORT_DECLARE and specified ACE_Export directly for ACE_Filecache_Handle and ACE_Filecache in calss declarations. * ace/Thread_Manager.{h,i,cpp}: A bug was found by Arturo Montes who noticed that when a thread was spawned and then exited immediately, its thread descriptor might get freed before even get registered into the thread table kept by the Thread_Manager. Although it doesn't make any sense to spawn a thread just to let it return immediately, a middleware shouldn't restrict the way how users want to use it. I got around this problem by adding a lock into Thread_Descriptor. Before spawning a thread, the Thread Manager will first grab the lock. It won't release the lock until calling append thread, at which point, the Thread_Descriptor of the thread has been stashed into the table. Removing the Thread_Descriptor also requires to hold this lock and release the lock before the Thread_Descriptor is "freed." Therefore, if a thread exit before its Thread_Manager ever gets a chance to register it, it will block and waiting. The type of the lock is defined by ACE_DEFAULT_THREAD_MANAGER_LOCK which, by default, is ACE_Thread_Mutex. User can change the definition by defining in their config.h file. For example, if you can be sure that all your threads will run for an extended long time (which, in most case, should be true,) you can disable this feature by defining this as a ACE_Null_Mutex to speed up spawning and termination of threads. (thread_desc_freelist_): Added a free list to Thread_Manager to recycle Thread_Descriptor. By default, this free list pre-allocate 0 Thread_Descriptor and has low-water-mark of 1, increment count 1 and a huge (25000) high water mark. That is, if you use a Thread_Manager for an extended period of time, you won't have to dynamically allocate memory for Thread_Descriptor for every thread after your system is stable (the thread count fluctuates between some certain values.) There are two ways to change the settings. First, by defining ACE_DEFAULT_THREAD_MANAGER_LWM, ACE_DEFAULT_THREAD_MANAGER_HWM, ACE_DEFAULT_THREAD_MANAGER_INC, and ACE_DEFAULT_THREAD_MANAGER_PREALLOC in your file. This changes the default setting of your ACE. (The global Thread_Manager use this setting.) Or, you can specify these values when creating a Thread_Manager. * ace/Free_List.cpp (alloc,dealloc): Don't grab the lock in these two functions. They only get called from add() and remove() which hold the lock before making the call. Actually, they also gets called from the constructor and destructor. But that shouldn't be a problem. * tests/Reactor_Notify_Test.cpp (run_test): Moved the #endif of ACE_HAS_THREADS down to avoid compilation error on non-threaded platforms. Tue May 5 14:12:08 1998 Douglas C. Schmidt * include/makeinclude/platform_sco5.0.0-fsu-pthread.GNU: Added a platform config file courtesy of Arturo Montes . Tue May 05 08:35:18 1998 David L. Levine * ace/config-irix6.x-sgic++-nothreads.h: updated the determination of ACE_SIZEOF_LONG_DOUBLE. Thanks to Bob Laferriere for providing the fix. * include/makeinclude/platform_sunos5_g++.GNU: use -gstabs+ instead of -g on Solaris86. * etc/Svc_Conf_l.cpp.diff: updated. It's magic, Nanbor :-) The problem seems to be due to an old version left in /tmp/Svc_Conf_l.cpp, which confuses flex. * ace/config-linux-common.h,config-g++-common.h: moved ACE_HAS_PENTIUM (with i386) from config-linux-common.h to config-g++-common.h. * ace/config-linux-common.h: added ACE_HAS_POLL, so we don't use ::select () in ACE_OS::sleep (). Linux's ::select () modifies its timeout argument! * ace/OS.i (gethrtime): added RDTSC support for all g++ _and_ ACE_HAS_PENTIUM platforms. * ace/config-vxworks5.x.h: added ACE_HAS_PENTIUM with GHS on Intel platforms. * ace/Makefile: for GHS on Intel 8086, build gethrtime.cpp. It's used to provide a high-resolution time using the Pentium RDTSC instruction. I don't know how to get GHS' asm to do it, so it uses g++. * ACE-INSTALL.html: added note about carefully installing egcs on Linux. Thanks to Kurt Sussman for tracking down the cause of mysterious link failures. Tue May 05 02:15:49 1998 Nanbor Wang * ace/Svc_Conf_l.cpp: I know, I know. I shouldn't mess with this file directly. But I couldn't manufacture this file even with the stock Svc_Conf.l using Doug's flex. So, I reckon I'll just check this in now and fix the Svc_Conf_l.diff later. * ace/Service_Config.{h,cpp} (process_directive): Standard CE stuff. * WindozeCE/WinAdapter*.*: * WindozeCE/WindozeCE*.*: Replaced the old adapter for CE with a new one. The new version allows uses to scroll thru the "console" output. Mon May 04 17:09:39 1998 David L. Levine * performance-tests/Misc/context_switch_time.cpp: lots of cleanup. The main changes were the use of ACE_THR_PRI_FIFO_DEF for the default therad priority, and removal of some unnecessary thr_yield () calls. * tests/Aio_Platform_Test.cpp: added arguments to main (), removed #includes that are already in ace/OS.h, and added ACE_START_TEST/ACE_END_TEST calls. Mon May 4 13:08:18 1998 Douglas C. Schmidt * ace/config-sunos5.6.h: Removed a mysterious "30" at the end of an #undef. Thanks to J. Russell Noseworthy for reporting this problem. Mon May 04 08:49:09 1998 David L. Levine * ace/OS.cpp (ACE_Thread_Adapter::invoke): with ACE_NEEDS_LWP_PRIO_SET, added the call to ACE_OS::thr_setprio () so that the LWP priority will be set if running in the RT class. Applications no longer have to be concerned with this. * performance-tests/Misc/preempt.cpp (svc): removed ACE_OS::thr_setprio () calls to set LWP priority, now that ACE handles that internally. * include/makeinclude/platform_*linux.GNU: added "s" to ARFLAGS, so that ranlib is no longer necessary. Sun May 03 22:37:38 1998 Nanbor Wang * ace/Parse_Node.cpp (open_handle): WinCE doesn't support ExpandEnvironmentStringA. * ace/config-win32-common.h: Only define ACE_HAS_GETRUSAGE when ACE_HAS_WINNT4 != 0. Thanks to Paul Motuzenko for reporting this. Sun May 03 01:58:47 1998 Douglas C. Schmidt * ACE version 4.5.1 released. Sat May 2 14:35:04 1998 Douglas C. Schmidt * tests/Reactor_Notify_Test.cpp: Factored out some common code to make the test more concise. * tests/Reactor_Notify_Test.cpp: Modified the test to check whether our new mechanism for disabling the notify pipe works correctly. * ace/{WFMO,Select}_Reactor[_Impl]: Added the "disable_notify_pipe" flag in the constructor in order to disable this feature and save on descriptors if they aren't required. Thanks to Tom Venturella for motivating this. Sat May 02 Alexander Babu Arulanthu * tests/Aio_Platform_Test.cpp: Included this test program for testing a platform for Asynchronous I/O options. * tests/Makefile (BIN): Added Aio_Platform_Test. Fri May 01 17:52:32 1998 Nanbor Wang * ace/Arg_Shifter.{h,cpp}: Added macros ACE_Export and ACE_BUILD_DLL respectively. * ace/ACE_Library.mak: * ace/ace_{dll,lib}.dsp: Added Arg_Shifter.cpp into project. Fri May 1 13:52:32 1998 Douglas C. Schmidt * ace/Addr: Made the destructor for ACE_Addr virtual so that subclasses can be deleted correctly. Thanks to Wei Chiang for reporting this. * ace: Added Arg_Shifter from TAO and renamed it to ACE_Arg_Shifter. * ace/IOStream_T.i (recv_n): ACE_IOStream::eof (void) had a subtle bug if it is called when a get operation (>>) has not failed. Thanks to James CE Johnson for reporting this bug. * examples/Connection/misc/Connection_Handler.cpp: Make sure to activate() each active object using THR_DETACHED so we don't run out of threading resources. Thanks to Brad Walton for reporting this. * ace/Timer_Queue_Adapters.cpp: Rather than returning the result of schedule_ualarm(), the ACE_Async_Timer_Queue_Adapter::schedule() method should return the timer id. Thanks to James Garrison for reporting this. * examples/System_V_IPC/SV_Message_Queues: Renamed the so-called "ACE_Message_Block" to "Message_Block" so it wouldn't be as confusing. Thanks to Ganapathi for this suggestion. Fri May 01 17:52:32 1998 Nanbor Wang * ace/ACE_Library.mak: * ace/ace_{dll,lib}.dsp: Added Arg_Shifter.cpp into project. Fri May 01 14:09:21 1998 Steve Huston * ace/OS.h: Changed ACE_hrtime_t from signed to unsigned on Win32 to insure correct results from ACE_High_Res_Timer::elapsed_time calculations. Fixes bug P87. Fri May 01 11:52:47 1998 Nanbor Wang * ace/OS.h: Forgot to redefine ASYS_INLINE after #undef it. * ace/OS.i (last_error): On Win32, this should also update errno after calling SetLastError (). Thanks to Steve for pointing this out. Fixes bug P88. Fri May 01 10:01:09 1998 David L. Levine * ace/config-sunos5.6.h: replaced config-sunos5.6-sunc++-4.x.h with this config file, which supports both Sun C++ and g++. * ace/OS.i (gethrtime): for the default (::gettimeofday) case, use 64-bit instead of 32-bit arithmetic by casting to ACE_hrtime_t. * ace/Basic_Types.{h,i}: added ACE_U_LongLong::operator *. * ace/Env_Value_T.cpp: added #include of Env_Value_T.h. Fri May 1 00:35:40 1998 Nanbor Wang * include/makeinclude/wrapper_macros.GNU (ACE_LDSO_Version_Number): Fixed the problem of not able to parse a formal release number from ace/VERSION. Thu Apr 30 15:53:58 1998 Nanbor Wang * ACE.{h,i,cpp}: * DEV.{h,i,cpp}: * DEV_Connector.{h,i,cpp}: * DEV_IO.{h,i,cpp}: * Date_Time.{h,i,cpp}: * FIFO_Recv.{h,i,cpp}: * FIFO_Recv_Msg.{h,i,cpp}: * FIFO_Send.{h,i,cpp}: * FIFO_Send_Msg.{h,i,cpp}: * FILE.{h,i,cpp}: * FILE_Connector.{h,i,cpp}: * FILE_IO.{h,i,cpp}: * IO_SAP.{h,i,cpp}: * IPC_SAP.{h,i,cpp}: * LSOCK.{h,i,cpp}: * LSOCK_CODgram.{h,i,cpp}: * LSOCK_Connector.{h,i,cpp}: * LSOCK_Dgram.{h,i,cpp}: * LSOCK_Stream.{h,i,cpp}: * Log_Record.{h,i,cpp}: * Pipe.{h,i,cpp}: * SOCK.{h,i,cpp}: * SOCK_CODgram.{h,i,cpp}: * SOCK_Connector.{h,i,cpp}: * SOCK_Dgram.{h,i,cpp}: * SOCK_Dgram_Bcast.{h,i,cpp}: * SOCK_Dgram_Mcast.{h,i,cpp}: * SOCK_IO.{h,i,cpp}: * SOCK_Stream.{h,i,cpp}: * SPIPE.{h,i,cpp}: * SPIPE_Connector.{h,i,cpp}: * SPIPE_Stream.{h,i,cpp}: * SV_Message_Queue.{h,i,cpp}: * SV_Semaphore_Complex.{h,i,cpp}: * SV_Semaphore_Simple.{h,i,cpp}: * UPIPE_Acceptor.{h,i,cpp}: * UPIPE_Connector.{h,i,cpp}: Added inline control for these supposedly default inline functions. * ace/config-WinCE.h: Added ACE_LACKS_INLINE_FUNCTIONS. * ace/OS.h: Added a new macro ASYS_INLINE for platforms that don't support inline properly. This is controlled by the macro ACE_LACKS_INLINE_FUNCTIONS. Walked thru all macros and indented them properly. * ace/README: Added documentation for ACE_LACKS_INLINE_FUNCTIONS.