diff options
Diffstat (limited to 'netsvcs/clients/Tokens')
33 files changed, 0 insertions, 3588 deletions
diff --git a/netsvcs/clients/Tokens/Makefile b/netsvcs/clients/Tokens/Makefile deleted file mode 100644 index 326abc62943..00000000000 --- a/netsvcs/clients/Tokens/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id: Makefile 1.1 10/18/96 -# -# Makefile for the Token tests -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -DIRS = collection \ - deadlock \ - invariant \ - manual \ - mutex \ - rw_lock - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU diff --git a/netsvcs/clients/Tokens/README b/netsvcs/clients/Tokens/README deleted file mode 100644 index 3b6313a1df7..00000000000 --- a/netsvcs/clients/Tokens/README +++ /dev/null @@ -1,34 +0,0 @@ -This directory contains a set of tests for the ACE Tokens library. - - . mutex - - Runs a few tests on ACE_Local_Mutex and - ACE_Remote_Mutex. Tests recursive acquisition and - global vs local proxies. - - . rw_locks - - App for testing ACE_Local_RLock, ACE_Local_WLock, - ACE_Remote_RLock, and ACE_Remote_WLock. - - . deadlock - - Tests the deadlock detection algorithm of the token - manager using ACE_Local_Mutex and ACE_Remote_Mutex. - - . collection - - Tests the ACE_Token_Collection utility. Uses local - and remote tokens and readers/writer locks. - - . invariant - - Tests the token Invariant testing utilities. Yes, - this tests a testing utility. - - . manual - - Gives users a text-based interactive interface to - local or remote tokens. This is extremely useful for - manually testing the token server and setting up - deadlock scenarios. diff --git a/netsvcs/clients/Tokens/collection/Makefile b/netsvcs/clients/Tokens/collection/Makefile deleted file mode 100644 index f9c5875d545..00000000000 --- a/netsvcs/clients/Tokens/collection/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for repeating token client application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = collection - -FILES = collection - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(LSRC:%.cpp=$(VDIR)%.o) -SHOBJ = $(addsuffix .so,$(FILES)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/collection.o .obj/collection.so .shobj/collection.o .shobj/collection.so: collection.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/Local_Tokens.h \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Synch_Options.i \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Local_Tokens.i \ - $(ACE_ROOT)/ace/Token_Collection.h \ - $(ACE_ROOT)/ace/Token_Collection.i \ - $(ACE_ROOT)/ace/Remote_Tokens.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - $(ACE_ROOT)/ace/Token_Request_Reply.h \ - $(ACE_ROOT)/ace/Token_Request_Reply.i \ - $(ACE_ROOT)/ace/Remote_Tokens.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/netsvcs/clients/Tokens/collection/README b/netsvcs/clients/Tokens/collection/README deleted file mode 100644 index 4c25a1f729e..00000000000 --- a/netsvcs/clients/Tokens/collection/README +++ /dev/null @@ -1,25 +0,0 @@ - -Shows how applications can use the ACE_Token_Collection utility. This -example creates three collections and spawns a thread to operate on -each. The threads use the collective acquire, renew, and release -features of ACE_Token_Collection. - -Here are the command-line parameters for collection: - -./collection: -[-h <remote host>] -[-p <remote port>] -[-n <iterations>] -[-d debug] - -To run the collection locally with debugging info, type - -% ./collection -d - -To run the collection remotely with debugging info, first start a -token server and the type: - -% ./collection -d -h <token-server-host> -p <token-server-port> - -The -n <iterations> option is to control how often each thread -iterates on the acquire, renew, release cycle. diff --git a/netsvcs/clients/Tokens/collection/collection.cpp b/netsvcs/clients/Tokens/collection/collection.cpp deleted file mode 100644 index 3dcd8fdf455..00000000000 --- a/netsvcs/clients/Tokens/collection/collection.cpp +++ /dev/null @@ -1,211 +0,0 @@ -// ============================================================================ -// $Id$ - -// -// = LIBRARY -// examples -// -// = FILENAME -// collection.cpp -// -// = DESCRIPTION -// Shows how applications can use the ACE_Token_Collection -// utility. This example creates three collections and spawns a -// thread to operate on each. The threads use the collective -// acquire, renew, and release features of ACE_Token_Collection. -// -// = AUTHOR -// Tim Harrison -// -// ============================================================================ - -#include "ace/OS.h" -#include "ace/Get_Opt.h" -#include "ace/Local_Tokens.h" -#include "ace/Token_Collection.h" -#include "ace/Remote_Tokens.h" -#include "ace/Thread_Manager.h" -#include "ace/Service_Config.h" - -ACE_RCSID(collection, collection, "$Id$") - -#if defined (ACE_HAS_THREADS) - -static char *server_host = ACE_DEFAULT_SERVER_HOST; -static int server_port = ACE_DEFAULT_SERVER_PORT; -// unused: static int threads = 2; -static int iterations = 50; -static int debug = 0; -static int remote = 0; -// unused: static int tokens = 5; - -static void * -run_thread (void *vp) -{ - ACE_Token_Proxy *collection = (ACE_Token_Proxy *) vp; - - int count = iterations; - while (count--) - { - if (collection->acquire () == -1) - { - if (ACE_OS::last_error () == EDEADLK) - { - ACE_DEBUG ((LM_DEBUG, "deadlock detected in acquire")); - continue; - } - ACE_ERROR ((LM_ERROR, "(%t) %p acquire failed\n","run_thread")); - return (void *) -1; - } - - ACE_DEBUG ((LM_DEBUG, "(%t) %s acquired.\n", collection->name ())); - - if (collection->renew () == -1) - { - if (ACE_OS::last_error () == EDEADLK) - { - ACE_DEBUG ((LM_DEBUG, "deadlock detected")); - goto deadlock; - } - ACE_ERROR ((LM_ERROR, "(%t) %p renew failed\n","run_thread")); - return (void *) -1; - } - - ACE_DEBUG ((LM_DEBUG, "(%t) %s renewed.\n", collection->name ())); - - deadlock: - if (collection->release () == -1) - { - ACE_ERROR ((LM_ERROR, "(%t) %p release failed\n","run_thread")); - return (void *) -1; - } - - ACE_DEBUG ((LM_DEBUG, "(%t) %s released.\n", collection->name ())); - } - - - ACE_DEBUG ((LM_DEBUG, "(%t) thread exiting.\n")); - return 0; -} - -static int -parse_args (int argc, char *argv[]) -{ - ACE_LOG_MSG->open (argv[0], ACE_Log_Msg::STDERR); // | ACE_Log_Msg::VERBOSE); - - ACE_Get_Opt get_opt (argc, argv, "un:dp:h:", 1); - - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 'h': // specify the host machine on which the server is running - server_host = get_opt.optarg; - remote = 1; - break; - case 'p': // specify the port on which the server is running - server_port = ACE_OS::atoi (get_opt.optarg); - remote = 1; - break; - case 'd': - debug = 1; - break; - case 'n': - iterations = ACE_OS::atoi (get_opt.optarg); - break; - case 'u': - // usage: fallthrough - default: - ACE_ERROR_RETURN ((LM_ERROR, - "%n:\n" - "[-h <remote host>]\n" - "[-p <remote port>]\n" - "[-n <iterations>]\n" - "[-d debug]\n", 1), -1); - /* NOTREACHED */ - } - } - - return 0; -} - -int -main (int argc, char* argv[]) -{ - if (parse_args (argc, argv) == -1) - return -1; - - ACE_Token_Proxy *A; // Mutex *A*. - ACE_Token_Proxy *B; // Mutex *B*. - ACE_Token_Proxy *R; // *R*eader Lock. - ACE_Token_Proxy *W; // *W*riter Lock. - - // Depending on the command line arguments, we will create local or - // remote tokens. The names of the tokens are not important as long - // as they are unique. - if (remote) - { - ACE_Remote_Mutex::set_server_address (ACE_INET_Addr (server_port, server_host)); - A = new ACE_Remote_Mutex ("R Mutex A", 0, debug); - B = new ACE_Remote_Mutex ("R Mutex B", 0, debug); - R = new ACE_Remote_RLock ("R Reader Lock", 0, debug); - W = new ACE_Remote_WLock ("R Writer Lock", 0, debug); - } - else - { - A = new ACE_Local_Mutex ("L Mutex A", 0, debug); - B = new ACE_Local_Mutex ("L Mutex B", 0, debug); - R = new ACE_Local_RLock ("L Reader Lock", 0, debug); - W = new ACE_Local_WLock ("L Writer Lock", 0, debug); - } - - // These collections will be treated as Tokens by the threads. - ACE_Token_Collection collectionAR (debug, "A and Reader"); - ACE_Token_Collection collectionAW (debug, "A and Writer"); - ACE_Token_Collection collectionBR (debug, "B and Reader"); - - // AR and BR can run concurrently. Neither AR or BR can run when AW - // is running. - collectionAR.insert (*A); - collectionAR.insert (*R); - - collectionAW.insert (*A); - collectionAW.insert (*W); - - collectionBR.insert (*B); - collectionBR.insert (*R); - - // Spawn off three threads. - ACE_Thread_Manager *mgr = ACE_Thread_Manager::instance (); - - if (mgr->spawn (ACE_THR_FUNC (run_thread), - (void *) &collectionAR, THR_BOUND | THR_SUSPENDED) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn 1 failed"), -1); - - if (mgr->spawn (ACE_THR_FUNC (run_thread), - (void *) &collectionAW, THR_BOUND | THR_SUSPENDED) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn 2 failed"), -1); - - if (mgr->spawn (ACE_THR_FUNC (run_thread), - (void *) &collectionBR, THR_BOUND | THR_SUSPENDED) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn 3 failed"), -1); - -#if ! defined (ACE_HAS_PTHREADS) - if (mgr->resume_all () == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "resume failed"), -1); -#endif - - // Wait for all threads to exit. - mgr->wait (); - - return 0; -} - -#else -int -main (int, char *[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, - "threads not supported on this platform\n"), -1); -} -#endif /* ACE_HAS_THREADS */ diff --git a/netsvcs/clients/Tokens/collection/collection.dsp b/netsvcs/clients/Tokens/collection/collection.dsp deleted file mode 100644 index f705352f712..00000000000 --- a/netsvcs/clients/Tokens/collection/collection.dsp +++ /dev/null @@ -1,109 +0,0 @@ -# Microsoft Developer Studio Project File - Name="NETSVCS Token Collection Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=NETSVCS Token Collection Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "collection.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "collection.mak"\
- CFG="NETSVCS Token Collection Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NETSVCS Token Collection Client - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "NETSVCS Token Collection Client - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NETSVCS Token Collection Client - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\ace"
-
-!ELSEIF "$(CFG)" == "NETSVCS Token Collection Client - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /Fr /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "NETSVCS Token Collection Client - Win32 Release"
-# Name "NETSVCS Token Collection Client - Win32 Debug"
-# Begin Group "Source"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\collection.cpp
-
-!IF "$(CFG)" == "NETSVCS Token Collection Client - Win32 Release"
-
-# ADD CPP /MD
-
-!ELSEIF "$(CFG)" == "NETSVCS Token Collection Client - Win32 Debug"
-
-# ADD CPP /MDd
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/netsvcs/clients/Tokens/collection/collection.dsw b/netsvcs/clients/Tokens/collection/collection.dsw deleted file mode 100644 index 0906f2cfd33..00000000000 --- a/netsvcs/clients/Tokens/collection/collection.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "collection"=.\collection.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/netsvcs/clients/Tokens/collection/rw_locks.cpp b/netsvcs/clients/Tokens/collection/rw_locks.cpp deleted file mode 100644 index dd35de3d9c2..00000000000 --- a/netsvcs/clients/Tokens/collection/rw_locks.cpp +++ /dev/null @@ -1,174 +0,0 @@ -// $Id$ - -#include "ace/OS.h" -#include "ace/Get_Opt.h" -#include "ace/Local_Tokens.h" -#include "ace/Remote_Tokens.h" -#include "ace/Thread_Manager.h" - -ACE_RCSID(collection, rw_locks, "$Id$") - -#if defined (ACE_HAS_THREADS) - -static ACE_Token_Proxy *global_rlock; -static ACE_Token_Proxy *global_wlock; - -static char *server_host = ACE_DEFAULT_SERVER_HOST; -static int server_port = ACE_DEFAULT_SERVER_PORT; -static int ignore_deadlock = 0; -static int threads = 2; -static int iterations = 50; -static int debug = 0; -static int remote = 0; -static int reads = 4; -static int write_sleep = 0; - -static void * -run_thread (void *vp) -{ - for (int x = 0; x < iterations; x++) - { - int y = 0; - for (; y < reads; y++) - { - if (global_rlock->acquire () == -1) - { - if (ACE_Log_Msg::instance ()->errnum () == EDEADLK) - { - ACE_DEBUG ((LM_DEBUG, "rlock deadlock detected\n")); - goto READ_DEADLOCK; - } - else return 0; - } - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock acquired.\n")); - } - - READ_DEADLOCK: - - for (; y > 0; y--) - { - if (global_rlock->release () == 0) - ACE_DEBUG ((LM_DEBUG, "(%t) r-released.\n")); - } - - if (global_wlock->acquire () == -1) - { - ACE_DEBUG ((LM_DEBUG, "wlock deadlock detected\n")); - } - else - { - if (write_sleep) - ACE_OS::sleep (1); - ACE_DEBUG ((LM_DEBUG, "\t\t(%t) wlock acquired.\n")); - if (global_wlock->release () == 0) - ACE_DEBUG ((LM_DEBUG, "\t\t(%t) w-released.\n")); - } - } - - ACE_DEBUG ((LM_DEBUG, "(%t) thread exiting.\n")); - return 0; -} - -static int -parse_args (int argc, char *argv[]) -{ - ACE_LOG_MSG->open (argv[0], ACE_Log_Msg::STDERR); // | ACE_Log_Msg::VERBOSE); - - ACE_Get_Opt get_opt (argc, argv, "t:iun:drR:sp:h:", 1); - - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 'h': // specify the host machine on which the server is running - server_host = get_opt.optarg; - break; - case 'p': // specify the port on which the server is running - server_port = ACE_OS::atoi (get_opt.optarg); - break; - case 't': - threads = ACE_OS::atoi (get_opt.optarg); - break; - case 'R': - reads = ACE_OS::atoi (get_opt.optarg); - break; - case 'd': - debug = 1; - break; - case 'r': - remote = 1; - break; - case 's': - write_sleep = 1; - break; - case 'n': - iterations = ACE_OS::atoi (get_opt.optarg); - break; - case 'i': - ignore_deadlock = 1; - break; - case 'u': - // usage: fallthrough - default: - ACE_ERROR_RETURN ((LM_ERROR, - "%n:\n" - "[-i ignore deadlock]\n" - "[-n <iterations>]\n" - "[-R <reads>]\n" - "[-r use remote locks]\n" - "[-d debug]\n" - "[-s sleep during writes]\n" - "[-t <threads>\n", 1), -1); - break; - } - } - - return 0; -} - -int -main (int argc, char* argv[]) -{ - if (parse_args (argc, argv) == -1) - return -1; - - if (remote) - { - ACE_Remote_Mutex::set_server_address (ACE_INET_Addr (server_port, server_host)); - global_rlock = (ACE_Token_Proxy *) new - ACE_Remote_RLock ("THE_TOKEN", ignore_deadlock, debug); - global_wlock = (ACE_Token_Proxy *) new - ACE_Remote_WLock ("THE_TOKEN", ignore_deadlock, debug); - } - else - { - global_rlock = (ACE_Token_Proxy *) new - ACE_Local_RLock ("THE_TOKEN", ignore_deadlock, debug); - global_wlock = (ACE_Token_Proxy *) new - ACE_Local_WLock ("THE_TOKEN", ignore_deadlock, debug); - } - - ACE_Thread_Manager mgr; - - if (mgr.spawn_n (threads, ACE_THR_FUNC (run_thread), - (void *) 0, - THR_BOUND | THR_SUSPENDED) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn failed"), -1); - - if (mgr.resume_all () == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "resume failed"), -1); - - mgr.wait (); - - return 0; -} - -#else -int -main (int, char *[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, - "threads not supported on this platform\n"), -1); -} -#endif /* ACE_HAS_THREADS */ diff --git a/netsvcs/clients/Tokens/deadlock/Makefile b/netsvcs/clients/Tokens/deadlock/Makefile deleted file mode 100644 index 0b42de8089b..00000000000 --- a/netsvcs/clients/Tokens/deadlock/Makefile +++ /dev/null @@ -1,152 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for repeating token client application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = deadlock_detection_test - -FILES = deadlock_detection_test - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(LSRC:%.cpp=$(VDIR)%.o) -SHOBJ = $(addsuffix .so,$(FILES)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/deadlock_detection_test.o .obj/deadlock_detection_test.so .shobj/deadlock_detection_test.o .shobj/deadlock_detection_test.so: deadlock_detection_test.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Token_Manager.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Map_Manager.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Local_Tokens.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Synch_Options.i \ - $(ACE_ROOT)/ace/Local_Tokens.i \ - $(ACE_ROOT)/ace/Token_Manager.i \ - $(ACE_ROOT)/ace/Remote_Tokens.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - $(ACE_ROOT)/ace/Token_Request_Reply.h \ - $(ACE_ROOT)/ace/Token_Request_Reply.i \ - $(ACE_ROOT)/ace/Remote_Tokens.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/Token_Invariants.h \ - $(ACE_ROOT)/ace/Token_Invariants.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/netsvcs/clients/Tokens/deadlock/README b/netsvcs/clients/Tokens/deadlock/README deleted file mode 100644 index 74fffde05cd..00000000000 --- a/netsvcs/clients/Tokens/deadlock/README +++ /dev/null @@ -1,98 +0,0 @@ - -deadlock_detection_test - -This example contains two deadlock tests, mutex and rwlock tests. -% ./deadlock_detection_test -u -./deadlock_detection_test: -[-r test readers/writer locks] -[-n <iterations>] -[-h <remote host>] -[-p <remote port>] -[-i ignore deadlock] - -For both mutex and rwlock tests, -h and -p specify to use remote -mutexes. -i specifies to ignore deadlock. -n is repetitions through -the respective algorithms (default 100). Both tests also use Token -Invariants to ensure correctness of the mutexes and readers/writer -locks. - ------------------------------------------------------------- - -If you run ./deadlock_detection_test without -r, then the following -mutex test is run. - -The mutex test spawns two threads which attempt to deadlock. -Logically, there are two tokens A and B. Here is what both threads -try to do: - -Thread 1 Thread 2 --------- -------- -Repeat 100 times Repeat 100 times - acquire A acquire B - acquire B acquire A - release A and B release A and B -repeat repeat - -Notice that A and B are reversed in 1 and 2. If the token manager -(which is not in the public interface, but hidden behind -ACE_Local_Mutex) works properly, they should detect the deadlock. If -a thread detects deadlock, the resources held are released, and it -starts the whole process over again. - -What can be confusing about the test program is all the other tricks -I'm pulling to test other aspects of the library. For instance, I'm -using both "global" and "local" ACE_Local_Mutexes. This is to test -the ability to have multiple threads using one token proxy as well as -multiple threads each using their own proxies. All the while, the -same logical token is being used. If this doesn't make sense, don't -worry about it. Just use the ACE_Local_Mutex any way you want. - -Another confusing trick is that I'm testing recursive acquisition. -(Two acquires in a row.) I have to make sure that the token manager -doesn't detect a recursive acquire as deadlock. - -To run a test, simply type: -% ./deadlock_detection_test - -This should run 100 times through the above pseudo code. If the -application halts, then we have trouble. It should never ever halt. -I've included a little flag with the ACE_Local_Mutex class to allow -deadlock detection to be ignored. So, if you run the test as follows, -deadlock detection will be ignored. - -% ./deadlock_detection_test -i - -In this case, the application should only run about a second before -deadlock occurs and the application halts. This is good. - ------------------------------------------------------------- - -If you run ./deadlock_detection_test *with* -r, then the following -rwlock test is run: - -There are four tokens and four threads in the rwlock test. The -readers/writer tokens are: - -reader first -writer first 1 -writer first 2 -writer first 3 - -There are three reader threads that only acquire reader locks on the -above tokens. Each of the reader threads first acquire "reader first" -and then one "writer first <tid>" (where <tid> is the corresponding -thread's id). So reader thread 1 acquires "reader first" and then -"writer first 1". - -There is a single writer thread that uses the following algorithm: - -repeat 100 - acquire "writer first 1" - acquire "reader first" - acquire "writer first 2" - acquire "reader first" - acquire "writer first 3" - acquire "reader first" - -This strange mix of readers and writer create an interesting graph of -tokens that the deadlock detection algorithm must traverse. diff --git a/netsvcs/clients/Tokens/deadlock/deadlock.dsp b/netsvcs/clients/Tokens/deadlock/deadlock.dsp deleted file mode 100644 index 29b18c0ffc9..00000000000 --- a/netsvcs/clients/Tokens/deadlock/deadlock.dsp +++ /dev/null @@ -1,112 +0,0 @@ -# Microsoft Developer Studio Project File - Name="NETSVCS Token Deadlock Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=NETSVCS Token Deadlock Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "deadlock.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "deadlock.mak"\
- CFG="NETSVCS Token Deadlock Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NETSVCS Token Deadlock Client - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "NETSVCS Token Deadlock Client - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NETSVCS Token Deadlock Client - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\ace"
-# SUBTRACT LINK32 /incremental:yes
-
-!ELSEIF "$(CFG)" == "NETSVCS Token Deadlock Client - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "NETSVCS Token Deadlock Client - Win32 Release"
-# Name "NETSVCS Token Deadlock Client - Win32 Debug"
-# Begin Group "Source"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\deadlock_detection_test.cpp
-
-!IF "$(CFG)" == "NETSVCS Token Deadlock Client - Win32 Release"
-
-# ADD CPP /MD
-# SUBTRACT CPP /YX
-
-!ELSEIF "$(CFG)" == "NETSVCS Token Deadlock Client - Win32 Debug"
-
-# ADD CPP /MDd
-# SUBTRACT CPP /YX
-
-!ENDIF
-
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/netsvcs/clients/Tokens/deadlock/deadlock.dsw b/netsvcs/clients/Tokens/deadlock/deadlock.dsw deleted file mode 100644 index 3ed309c0974..00000000000 --- a/netsvcs/clients/Tokens/deadlock/deadlock.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "deadlock"=.\deadlock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp b/netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp deleted file mode 100644 index 5fa6a0dde11..00000000000 --- a/netsvcs/clients/Tokens/deadlock/deadlock_detection_test.cpp +++ /dev/null @@ -1,341 +0,0 @@ -// ============================================================================ -// $Id$ - -// -// = LIBRARY -// examples -// -// = FILENAME -// deadlock_detection_test.cpp -// -// = DESCRIPTION -// -// = AUTHOR -// Tim Harrison -// -// ============================================================================ - -#include "ace/OS.h" -#include "ace/Token_Manager.h" -#include "ace/Remote_Tokens.h" -#include "ace/Thread.h" -#include "ace/Thread_Manager.h" -#include "ace/Get_Opt.h" -#include "ace/Token_Invariants.h" - -ACE_RCSID(deadlock, deadlock_detection_test, "$Id$") - -#if defined (ACE_HAS_THREADS) - -typedef ACE_Token_Invariant_Manager ACE_TOKEN_INVARIANTS; - -static ACE_Token_Proxy *global_mutex; - -struct Two_Tokens -{ -public: - Two_Tokens (ACE_Thread_Manager *tm): thr_mgr_ (tm) {} - ACE_Token_Proxy *first_; - ACE_Token_Proxy *second_; - ACE_Thread_Manager *thr_mgr_; -}; - -struct Four_Tokens -{ -public: - Four_Tokens (ACE_Thread_Manager *tm): thr_mgr_ (tm) {} - ACE_Token_Proxy *first1_; - ACE_Token_Proxy *first2_; - ACE_Token_Proxy *first3_; - ACE_Token_Proxy *second_; - ACE_Thread_Manager *thr_mgr_; -}; - -static int ignore_deadlock = 0; -static int remote_mutexes = 0; -static char *server_host = ACE_DEFAULT_SERVER_HOST; -static int server_port = ACE_DEFAULT_SERVER_PORT; -static int iterations = 100; -static int rwlocks = 0; - -static void * -two_token_thread (void *vp) -{ - Two_Tokens* tm = (Two_Tokens *) vp; - - for (int x = 0; x < iterations; x++) - { - if (tm->first_->acquire () == -1) - { - ACE_DEBUG ((LM_DEBUG, "Deadlock detected\n")); - continue; - } - - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (tm->first_) == 0) - { - tm->first_->dump (); - ACE_ERROR_RETURN ((LM_ERROR, "violated invariant.\n"), 0); - } - - if (tm->second_->acquire () == -1) - { - ACE_DEBUG ((LM_DEBUG, "Deadlock Detected\n")); - goto G1; - } - - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (tm->second_) == 0) - { - tm->second_->dump (); - ACE_ERROR_RETURN ((LM_ERROR, "violated invariant.\n"), 0); - } - - ACE_TOKEN_INVARIANTS::instance ()->releasing (tm->second_); - - tm->second_->release (); - G1: - ACE_TOKEN_INVARIANTS::instance ()->releasing (tm->first_); - - tm->first_->release (); - } - - ACE_DEBUG ((LM_DEBUG, "thread %t exiting\n")); - return 0; -} - -static void * -run_writer (void *vp) -{ - Four_Tokens *ft = (Four_Tokens *) vp; - int acquire_number = 0; - - for (int x = 0; x < iterations; x++) - { - // Cycle through each of the first three tokens. - ACE_Token_Proxy *t = 0; - switch (acquire_number) - { - case 0: - t = ft->first1_; - break; - case 1: - t = ft->first2_; - break; - case 2: - t = ft->first3_; - break; - } - - acquire_number = (acquire_number + 1) % 3; - - if (t->acquire () == -1) - { - ACE_ASSERT (errno == EDEADLK); - ACE_DEBUG ((LM_DEBUG, "Deadlock detected.\n")); - continue; - } - - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (t) == 0) - { - t->dump (); - ACE_ERROR_RETURN ((LM_ERROR, "violated invariant.\n"), 0); - } - - if (ft->second_->acquire () == -1) - { - ACE_ASSERT (errno == EDEADLK); - ACE_DEBUG ((LM_DEBUG, "Deadlock Detected..\n")); - goto G1; - } - - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (ft->second_) == 0) - { - ft->second_->dump (); - ACE_ERROR_RETURN ((LM_ERROR, "violated invariant.\n"), 0); - } - - ACE_TOKEN_INVARIANTS::instance ()->releasing (ft->second_); - - ft->second_->release (); - G1: - ACE_TOKEN_INVARIANTS::instance ()->releasing (t); - - t->release (); - } - - ACE_DEBUG ((LM_DEBUG, "thread %t exiting\n")); - return 0; -} - -static int -parse_args (int argc, char *argv[]) -{ - ACE_LOG_MSG->open (argv[0]); - - ACE_Get_Opt get_opt (argc, argv, "iuh:rp:n:", 1); - - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 'r': - rwlocks = 1; - break; - case 'i': - ignore_deadlock = 1; - break; - case 'h': - server_host = get_opt.optarg; - remote_mutexes = 1; - break; - case 'p': - server_port = ACE_OS::atoi (get_opt.optarg); - remote_mutexes = 1; - break; - case 'n': - iterations = ACE_OS::atoi (get_opt.optarg); - break; - case 'u': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "%n:\n" - "[-r test readers/writer locks]\n" - "[-n <iterations>]\n" - "[-h <remote host>]\n" - "[-p <remote port>]\n" - "[-i ignore deadlock]\n%a", 1), -1); - } - } - - return 0; -} - -int -mutex_test (void) -{ - ACE_Thread_Manager thr_mgr; - - Two_Tokens one (&thr_mgr); - Two_Tokens two (&thr_mgr); - - if (remote_mutexes == 0) - { - global_mutex = new ACE_Local_Mutex ("global proxy", ignore_deadlock, 1); - one.first_ = new ACE_Local_Mutex ("local proxy", ignore_deadlock, 1); - two.second_ = new ACE_Local_Mutex ("local proxy", ignore_deadlock, 1); - } - else - { - ACE_Remote_Mutex::set_server_address (ACE_INET_Addr (server_port, server_host)); - global_mutex = new ACE_Remote_Mutex ("global proxy", ignore_deadlock, 1); - one.first_ = new ACE_Remote_Mutex ("local proxy", ignore_deadlock, 1); - two.second_ = new ACE_Remote_Mutex ("local proxy", ignore_deadlock, 1); - } - - one.second_ = global_mutex; - two.first_ = global_mutex; - - // Tell the token manager to be verbose when reporting deadlock. - ACE_Token_Manager::instance ()->debug (1); - - if (thr_mgr.spawn (ACE_THR_FUNC (two_token_thread), - (void *) &one, THR_BOUND) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "first spawn"), -1); - - if (thr_mgr.spawn (ACE_THR_FUNC (two_token_thread), - (void *) &two, THR_BOUND) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "second spawn"), -1); - - // Wait for all threads to exit. - thr_mgr.wait (); - - return 0; -} - -static int -rwlock_test (void) -{ - ACE_Thread_Manager thr_mgr; - - Two_Tokens reader1 (&thr_mgr); - Two_Tokens reader2 (&thr_mgr); - Two_Tokens reader3 (&thr_mgr); - Four_Tokens writer (&thr_mgr); - - if (remote_mutexes == 0) - { - reader1.first_ = new ACE_Local_RLock ("reader first", ignore_deadlock, 1); - reader1.second_ = new ACE_Local_RLock ("writer first 1", ignore_deadlock, 1); - reader2.first_ = new ACE_Local_RLock ("reader first", ignore_deadlock, 1); - reader2.second_ = new ACE_Local_RLock ("writer first 2", ignore_deadlock, 1); - reader3.first_ = new ACE_Local_RLock ("reader first", ignore_deadlock, 1); - reader3.second_ = new ACE_Local_RLock ("writer first 3", ignore_deadlock, 1); - - writer.first1_ = new ACE_Local_WLock ("writer first 1", ignore_deadlock, 1); - writer.first2_ = new ACE_Local_WLock ("writer first 2", ignore_deadlock, 1); - writer.first3_ = new ACE_Local_WLock ("writer first 3", ignore_deadlock, 1); - writer.second_ = new ACE_Local_WLock ("reader first", ignore_deadlock, 1); - } - else - { - ACE_Remote_Mutex::set_server_address (ACE_INET_Addr (server_port, server_host)); - - reader1.first_ = new ACE_Remote_RLock ("writer first 1", ignore_deadlock, 1); - reader1.second_ = new ACE_Remote_RLock ("reader first", ignore_deadlock, 1); - reader2.first_ = new ACE_Remote_RLock ("writer first 2", ignore_deadlock, 1); - reader2.second_ = new ACE_Remote_RLock ("reader first", ignore_deadlock, 1); - reader3.first_ = new ACE_Remote_RLock ("writer first 3", ignore_deadlock, 1); - reader3.second_ = new ACE_Remote_RLock ("reader first", ignore_deadlock, 1); - - writer.first1_ = new ACE_Remote_WLock ("writer first 1", ignore_deadlock, 1); - writer.first2_ = new ACE_Remote_WLock ("writer first 2", ignore_deadlock, 1); - writer.first3_ = new ACE_Remote_WLock ("writer first 3", ignore_deadlock, 1); - writer.second_ = new ACE_Remote_WLock ("reader first", ignore_deadlock, 1); - } - - // Tell the token manager to be verbose when reporting deadlock. - ACE_Token_Manager::instance ()->debug (1); - - if (thr_mgr.spawn (ACE_THR_FUNC (two_token_thread), - (void *) &reader1, THR_BOUND) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "first spawn"), -1); - - if (thr_mgr.spawn (ACE_THR_FUNC (two_token_thread), - (void *) &reader2, THR_BOUND) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "first spawn"), -1); - - if (thr_mgr.spawn (ACE_THR_FUNC (two_token_thread), - (void *) &reader3, THR_BOUND) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "first spawn"), -1); - - if (thr_mgr.spawn (ACE_THR_FUNC (run_writer), - (void *) &writer, THR_BOUND) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "second spawn"), -1); - - // Wait for all threads to exit. - thr_mgr.wait (); - - return 0; -} - -int -main (int argc, char* argv[]) -{ - if (parse_args (argc, argv) == -1) - return -1; - - if (rwlocks) - rwlock_test (); - else - mutex_test (); - - ACE_DEBUG ((LM_DEBUG, "test exiting.\n")); - return 0; -} -#else -int -main (int, char *[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, - "threads not supported on this platform\n"), -1); -} -#endif /* ACE_HAS_THREADS */ diff --git a/netsvcs/clients/Tokens/invariant/Makefile b/netsvcs/clients/Tokens/invariant/Makefile deleted file mode 100644 index e6735de71ee..00000000000 --- a/netsvcs/clients/Tokens/invariant/Makefile +++ /dev/null @@ -1,134 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for repeating token client application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = invariant - -FILES = invariant - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(LSRC:%.cpp=$(VDIR)%.o) -SHOBJ = $(addsuffix .so,$(FILES)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/invariant.o .obj/invariant.so .shobj/invariant.o .shobj/invariant.so: invariant.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Singleton.cpp \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Token_Invariants.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Local_Tokens.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Synch_Options.i \ - $(ACE_ROOT)/ace/Local_Tokens.i \ - $(ACE_ROOT)/ace/Token_Invariants.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/netsvcs/clients/Tokens/invariant/README b/netsvcs/clients/Tokens/invariant/README deleted file mode 100644 index f078c2d6be4..00000000000 --- a/netsvcs/clients/Tokens/invariant/README +++ /dev/null @@ -1,27 +0,0 @@ - -invariants.cpp tests the ACE Token Invariant utilities. The ACE Token -Invariant utilities allow an application to test the correctness of -mutex and readers/writer locks. - -invariants.cpp takes no command-line arguments. invariants.cpp first -tests readers/writer locks. This is done by spawning two threads -which simulate reader and writer acquire/renew/release loops. -However, the loops are performed without actual locks, so the -competing threads quickly reach and invalid state. The test should -report this violation of readers/writer lock invariants and both -threads should exit. - -The second test is for mutexes. Similar to the readers/writer lock -test, this test spawns two threads which perform acquire/renew/release -loops. When to two threads reach an invalid mutex state, the error -should be reported and the threads should exit. - -For these two previous tests, it is theoretically possible that the -threads never reach an invalid token state. However, it is highly -unlikely since the threads would have to execute the same code -simultaneously for the duration of the test. Nevertheless, it is -possible. - -The last test hardwires invalid token states. It runs two mutex and -two readers/writer lock tests. It should report "succeeded" for the -four tests. diff --git a/netsvcs/clients/Tokens/invariant/invariant.cpp b/netsvcs/clients/Tokens/invariant/invariant.cpp deleted file mode 100644 index f7d417a1094..00000000000 --- a/netsvcs/clients/Tokens/invariant/invariant.cpp +++ /dev/null @@ -1,197 +0,0 @@ -// ============================================================================ -// $Id$ - -// -// = LIBRARY -// examples -// -// = FILENAME -// invariant.cpp -// -// = DESCRIPTION -// -// = AUTHOR -// Tim Harrison -// -// ============================================================================ - -#include "ace/OS.h" -#include "ace/Get_Opt.h" -#include "ace/Singleton.h" -#include "ace/Thread_Manager.h" -#include "ace/Token_Invariants.h" - -ACE_RCSID(invariant, invariant, "$Id$") - -#if defined (ACE_HAS_THREADS) - -typedef ACE_Token_Invariant_Manager ACE_TOKEN_INVARIANTS; - -static char * rwname = "reader/writer"; -static char * mutexname = "mutex"; - -static void * -run_reader_writer (void *) -{ - for (int x = 0; x < 50; x++) - { - int y = 0; - for (; y < 5; y++) - { - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired (rwname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "reader acquire violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock acquired.\n")); - } - - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing (rwname); - - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired (rwname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "reader renew violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock renewed.\n")); - - for (; y > 0; y--) - { - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing (rwname); - ACE_DEBUG ((LM_DEBUG, "(%t) r-released.\n")); - } - - if (ACE_TOKEN_INVARIANTS::instance ()->writer_acquired (rwname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "writer acquire violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "\t\t(%t) wlock acquired.\n")); - - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing (rwname); - - if (ACE_TOKEN_INVARIANTS::instance ()->writer_acquired (rwname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "writer renew violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock renewed.\n")); - - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing (rwname); - } - - ACE_DEBUG ((LM_DEBUG, "(%t) thread exiting.\n")); - return 0; -} - -static void * -run_mutex (void *) -{ - for (int x = 0; x < 50; x++) - { - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired (mutexname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "mutex acquire violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) mutex acquired.\n")); - - ACE_TOKEN_INVARIANTS::instance ()->mutex_releasing (mutexname); - - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired (mutexname) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "mutex renew violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) mutex renewed.\n")); - - ACE_TOKEN_INVARIANTS::instance ()->mutex_releasing (mutexname); - ACE_DEBUG ((LM_DEBUG, "(%t) mutex released.\n")); - } - - ACE_DEBUG ((LM_DEBUG, "(%t) thread exiting.\n")); - return 0; -} - -static int -run_final_test (void) -{ - ACE_DEBUG ((LM_DEBUG, "starting mutex tests 1 & 2\n")); - - // Mutex tests. - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired ("testing mutex") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "mutex test 1 failed.\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired ("testing mutex2") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "mutex test 2 failed.\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired ("testing mutex") == 0) - ACE_DEBUG ((LM_DEBUG, "mutex test 1 succeeded.\n")); - else - ACE_ERROR_RETURN ((LM_ERROR, "mutex test 1 failed..\n"), 0); - - if (ACE_TOKEN_INVARIANTS::instance ()->mutex_acquired ("testing mutex2") == 0) - ACE_DEBUG ((LM_DEBUG, "mutex test 2 succeeded.\n")); - else - ACE_ERROR_RETURN ((LM_ERROR, "mutex test 2 failed..\n"), 0); - - // RW tests. - ACE_DEBUG ((LM_DEBUG, "starting rwlock tests 1 & 2\n")); - - // Multiple readers. - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 1 failed.\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock 2") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 2 failed.\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 1 failed..\n"), 0); - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock 2") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 2 failed..\n"), 0); - - // Writer. - if (ACE_TOKEN_INVARIANTS::instance ()->writer_acquired ("testing rwlock") == 0) - ACE_DEBUG ((LM_ERROR, "rwlock test 1 succeded.\n")); - else - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 1 failed...\n"), 0); - - // Releasing reader. - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing ("testing rwlock 2"); - ACE_TOKEN_INVARIANTS::instance ()->rwlock_releasing ("testing rwlock 2"); - - // Writer. - if (ACE_TOKEN_INVARIANTS::instance ()->writer_acquired ("testing rwlock 2") == 0) - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 2 failed....\n"), 0); - - // Reader. - if (ACE_TOKEN_INVARIANTS::instance ()->reader_acquired ("testing rwlock 2") == 0) - ACE_DEBUG ((LM_DEBUG, "rwlock test 2 succeeded.\n")); - else - ACE_ERROR_RETURN ((LM_ERROR, "rwlock test 2 failed.....\n"), 0); - - return 0; -} - -int -main (int /* argc */, char* /* argv */ []) -{ - ACE_Thread_Manager mgr; - - // Run reader/writer test - if (mgr.spawn_n (2, ACE_THR_FUNC (run_reader_writer), - (void *) 0, - THR_NEW_LWP | THR_DETACHED) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn failed"), -1); - - mgr.wait (); - - ACE_OS::sleep (2); - - // Run mutex test. - if (mgr.spawn_n (2, ACE_THR_FUNC (run_mutex), - (void *) 0, - THR_NEW_LWP | THR_DETACHED) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn failed"), -1); - - mgr.wait (); - - ACE_OS::sleep (2); - - run_final_test (); - - return 0; -} - -#else -int -main (int, char *[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, - "threads not supported on this platform\n"), -1); -} -#endif /* ACE_HAS_THREADS */ diff --git a/netsvcs/clients/Tokens/invariant/invariant.dsp b/netsvcs/clients/Tokens/invariant/invariant.dsp deleted file mode 100644 index 1c0a730abe3..00000000000 --- a/netsvcs/clients/Tokens/invariant/invariant.dsp +++ /dev/null @@ -1,99 +0,0 @@ -# Microsoft Developer Studio Project File - Name="NETSVCS Token Invariant Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=NETSVCS Token Invariant Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "invariant.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "invariant.mak"\
- CFG="NETSVCS Token Invariant Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NETSVCS Token Invariant Client - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "NETSVCS Token Invariant Client - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NETSVCS Token Invariant Client - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\ace"
-# SUBTRACT LINK32 /incremental:yes
-
-!ELSEIF "$(CFG)" == "NETSVCS Token Invariant Client - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "NETSVCS Token Invariant Client - Win32 Release"
-# Name "NETSVCS Token Invariant Client - Win32 Debug"
-# Begin Group "Source"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=.\invariant.cpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/netsvcs/clients/Tokens/invariant/invariant.dsw b/netsvcs/clients/Tokens/invariant/invariant.dsw deleted file mode 100644 index c3431c8faea..00000000000 --- a/netsvcs/clients/Tokens/invariant/invariant.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "invariant"=.\invariant.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/netsvcs/clients/Tokens/manual/Makefile b/netsvcs/clients/Tokens/manual/Makefile deleted file mode 100644 index 480195f332d..00000000000 --- a/netsvcs/clients/Tokens/manual/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id: Makefile 1.1 10/18/96 -# -# Makefile for repeating token client application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = manual - -FILES = manual - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - - - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/netsvcs/clients/Tokens/manual/README b/netsvcs/clients/Tokens/manual/README deleted file mode 100644 index 09b9b9a365a..00000000000 --- a/netsvcs/clients/Tokens/manual/README +++ /dev/null @@ -1,67 +0,0 @@ - -./manual gives users a text-based interactive interface to local or -remote tokens. This is extremely useful for manually testing the -token server and setting up deadlock scenarios. - -Run it as follows - -% ./manual -u -./manual: -[-h <remote host>] -[-p <remote port>] -[-i ignore deadlock] -[-d debug] - -./manual gives you the following prompt. -<tid> <token> <type> <operation> - -<tid> This is the client id of the current operation. This is set - manually by ./manual for every operation. Be careful when - using multiple <tid>'s during a remote session (see BUGS - below). - -<token> This is the name of the token for the operation. - -<type> This is the type of the token. This can be: - M - Corresponds to a Mutex lock. - R - Corresponds to Readers/Writer lock. - W - Corresponds to Readers/Writer lock. - Obviously, a single <token> can be M or it can R and/or W. If - you perform and operation like this "tid1 tokenA M A" then - don't do this "tid1 tokenA R A". This doesn't make sense. - -<operation> This is the operation to perform on the - <tid>-<token>-<type> proxy. These include: - A - acquire. - N - renew. - R - release. - T - tryacquire. - -BUGS!!!! - -When performing remote tests, be careful when using a single running -./manual to impersonate two <tid>'s. The Token Server client -connection policy is currently, one per thread. The Token Server -assumes that the same <tid> is always on the other end of a -connection. If you do something like the following, you will break -it: - -lambada:Tokens/manual> ./manual -h tango -p 20202 -<tid> <token> <type> <operation> -tid1 tokenA M A -ACE_TSS_Connection new connection -(1) acquired tokenA remotely. -Succeeded. -<tid> <token> <type> <operation> -tid2 tokenA M A -(1) acquired tokenA remotely. <------ This is remote BADness!!! -Succeeded. -Violated invariant. <------ Locally detected badness. -<tid> <token> <type> <operation> - - -Notice that the local side discovered that this was incorrect. -However, the Token Server thinks it was a recursive acquisition for -tid1. Keep in mind that this is not a problem with the Token library. -It is just a problem with how this primitive ./manual application maps -STDIN to the ACE Token API. diff --git a/netsvcs/clients/Tokens/manual/manual.cpp b/netsvcs/clients/Tokens/manual/manual.cpp deleted file mode 100644 index 79b200e578f..00000000000 --- a/netsvcs/clients/Tokens/manual/manual.cpp +++ /dev/null @@ -1,367 +0,0 @@ -// $Id$ -// ============================================================================ -// -// = LIBRARY -// examples -// -// = FILENAME -// manual.cpp -// -// = DESCRIPTION -// Allows manual operations on local and remote tokens. -// -// = AUTHOR -// Tim Harrison -// -// ============================================================================ - -#include "ace/OS.h" -#include "ace/Get_Opt.h" -#include "ace/Local_Tokens.h" -#include "ace/Remote_Tokens.h" -#include "ace/Singleton.h" -#include "ace/Thread_Manager.h" -#include "ace/Token_Invariants.h" -#include "ace/Token_Collection.h" -#include "ace/Map_Manager.h" -#include "ace/Service_Config.h" - -ACE_RCSID(manual, manual, "$Id$") - -typedef ACE_Token_Invariant_Manager ACE_TOKEN_INVARIANTS; - -class STDIN_Token : public ACE_Event_Handler - // = TITLE - // STDIN Token - // - // = DESCRIPTION - // Translates STDIN commands to ACE Token commands. -{ -public: - STDIN_Token (void); - // Construction. - - int parse_args (int argc, char *argv[]); - // Parse command-line arguments. - - int open (int argc, char *argv[]); - // Register with whatever event dispatcher is needed and run. - - // = Event_Handler methods. - int handle_input (ACE_HANDLE); - int handle_exception (ACE_HANDLE); - - typedef ACE_CString TID; - -private: - - void display_menu (void); - // Display options. - - ACE_Token_Proxy *get_proxy (const char *tid, const char *token, char type); - // Get or make a proxy to <token> with a <tid> client id. - - ACE_Token_Proxy *create_proxy (const char *token, char type); - // Create a proxy to <token> with a <tid> client id. - - // = Mapping from tid to Token_Collection. - typedef ACE_Map_Manager<TID, ACE_Token_Collection *, ACE_Null_Mutex> - COLLECTIONS; - // COLLECTION maintains a mapping from tid to a collection. - - typedef ACE_Map_Iterator<TID, ACE_Token_Collection *, ACE_Null_Mutex> - COLLECTIONS_ITERATOR; - // Allows iterations through collections_. - - typedef ACE_Map_Entry<TID, ACE_Token_Collection *> - COLLECTIONS_ENTRY; - // Allows iterations through collections_. - - COLLECTIONS collections_; - // A collection for each <tid>. - - char *server_host_; - int server_port_; - int ignore_deadlock_; - int debug_; - int remote_; -}; - -STDIN_Token::STDIN_Token (void) -: server_host_ (ACE_DEFAULT_SERVER_HOST), - server_port_ (ACE_DEFAULT_SERVER_PORT), - ignore_deadlock_ (0), - debug_ (0), - remote_ (0) -{ -} - -int -STDIN_Token::parse_args (int argc, char *argv[]) -{ - ACE_LOG_MSG->open (argv[0], ACE_Log_Msg::STDERR); - - ACE_Get_Opt get_opt (argc, argv, "h:p:diu", 1); - - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 'h': // specify the host machine on which the server is running - server_host_ = get_opt.optarg; - remote_ = 1; - break; - case 'p': // specify the port on which the server is running - server_port_ = ACE_OS::atoi (get_opt.optarg); - remote_ = 1; - break; - case 'd': - debug_ = 1; - break; - case 'i': - ignore_deadlock_ = 1; - break; - case 'u': - // usage: fallthrough - default: - ACE_ERROR_RETURN ((LM_ERROR, - "%n:\n" - "[-h <remote host>]\n" - "[-p <remote port>]\n" - "[-i ignore deadlock]\n" - "[-d debug]\n", 1), -1); - } - } - - if (remote_) - ACE_Remote_Mutex::set_server_address (ACE_INET_Addr (server_port_, server_host_)); - - return 0; -} - -int -STDIN_Token::open (int argc, char *argv[]) -{ - if (this->parse_args (argc, argv) == -1) - return -1; - - // Register for signals. - if (ACE_Reactor::instance ()->register_handler - (SIGINT, this) == -1) - ACE_DEBUG ((LM_DEBUG, "Can't register signal handler\n")); - -#if defined (ACE_WIN32) - -#else - // Register for STDIN events with Reactor. - if (ACE_Reactor::instance ()->register_handler - (ACE_STDIN, this, ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "Can't register signal handler\n"), 0); - - -#endif /* ACE_WIN32 */ - - - this->display_menu (); - -#if defined (ACE_WIN32) - -#else - ACE_Reactor::run_event_loop (); -#endif /* ACE_WIN32 */ - - ACE_OS::printf ("Exiting...\n"); - return 0; -} - -int -STDIN_Token::handle_input (ACE_HANDLE fd) -{ - ACE_UNUSED_ARG (fd); - - char tid[BUFSIZ]; - char token[BUFSIZ]; - char type[16]; - char operation[16]; - - if (::scanf ("%s %s %s %s", tid, token, type, operation) <= 0) - { - ACE_OS::printf ("Try again.\n"); - return 0; - } - - ACE_Token_Proxy *proxy = - this->get_proxy (tid, token, type[0]); - - if (proxy == 0) - return -1; - - switch (operation[0]) - { - case 'a': - case 'A': - if (proxy->acquire () == 0) - { - ACE_OS::printf ("Succeeded.\n"); - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (proxy) == 0) - ACE_OS::printf ("Violated invariant.\n"); - } - else - ACE_ERROR ((LM_ERROR, "%p.\n", "Acquire failed")); - break; - - case 'n': - case 'N': - ACE_TOKEN_INVARIANTS::instance ()->releasing (proxy); - if (proxy->renew () == 0) - { - ACE_OS::printf ("Succeeded.\n"); - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (proxy) == 0) - ACE_OS::printf ("Violated invariant.\n"); - } - else - ACE_ERROR ((LM_ERROR, "%p.\n", "Renew failed")); - break; - - case 'r': - case 'R': - ACE_TOKEN_INVARIANTS::instance ()->releasing (proxy); - if (proxy->release () == 0) - ACE_OS::printf ("Succeeded.\n"); - else - ACE_ERROR ((LM_ERROR, "%p.\n", "Release failed")); - break; - - case 't': - case 'T': - if (proxy->tryacquire () == 0) - { - ACE_OS::printf ("Succeeded.\n"); - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (proxy) == 0) - ACE_OS::printf ("Violated invariant.\n"); - } - else - ACE_ERROR ((LM_ERROR, "%p.\n", "Tryacquire failed")); - break; - } - - this->display_menu (); - return 0; -} - -void -STDIN_Token::display_menu (void) -{ - ACE_OS::printf ("<tid> <token> <type> <operation>\n"); -} - -int -STDIN_Token::handle_exception (ACE_HANDLE fd) -{ - ACE_UNUSED_ARG (fd); - - ACE_Reactor::run_event_loop (); - return -1; -} - -ACE_Token_Proxy * -STDIN_Token::get_proxy (const char *_tid, const char *token, char type) -{ - ACE_Token_Collection *proxy_collection; - - TID tid (_tid); - - if (collections_.find (tid, proxy_collection) == -1) - // We did not find a proxy_collection. - { - // Make one. - proxy_collection = new ACE_Token_Collection (debug_, "no name collection"); - - // Put it in the collections. - if (collections_.bind (tid, proxy_collection) == -1) - { - delete proxy_collection; - return 0; - } - } - - // Either way, we have a proxy_collection now. - - // See if the proxy already exists in the collection. - ACE_Token_Proxy *proxy = proxy_collection->is_member (token); - - // If not, create one. - if (proxy == 0) - { - proxy = this->create_proxy (token, type); - - // Put the new_proxy in this tid's collection. - if (proxy_collection->insert (*proxy) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "insert failed\n"), 0); - - // Delete our copy (one was created in the collection). - delete proxy; - proxy = proxy_collection->is_member (token); - - if (proxy == 0) - ACE_ERROR_RETURN ((LM_ERROR, "is_member failed\n"), 0); - - // Set the client_id (it was set to 1 since we're - // single-threaded. - proxy->client_id (_tid); - } - - return proxy; -} - -ACE_Token_Proxy * -STDIN_Token::create_proxy (const char *token, char type) -{ - switch (type) - { - case 'm': - case 'M': - if (remote_) - return new ACE_Remote_Mutex (token, ignore_deadlock_, debug_); - else - return new ACE_Local_Mutex (token, ignore_deadlock_, debug_); - - case 'r': - case 'R': - if (remote_) - return new ACE_Remote_RLock (token, ignore_deadlock_, debug_); - else - return new ACE_Local_RLock (token, ignore_deadlock_, debug_); - - case 'w': - case 'W': - if (remote_) - return new ACE_Remote_WLock (token, ignore_deadlock_, debug_); - else - return new ACE_Local_WLock (token, ignore_deadlock_, debug_); - } - - // should never get here, but this avoids a compiler warning . . . - return 0; -} - -int -main (int argc, char* argv[]) -{ - STDIN_Token st; - return st.open (argc, argv); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Map_Entry<STDIN_Token::TID, ACE_Token_Collection *>; -template class ACE_Map_Manager<STDIN_Token::TID, ACE_Token_Collection *, ACE_Null_Mutex>; -template class ACE_Map_Iterator_Base<STDIN_Token::TID, ACE_Token_Collection *, ACE_Null_Mutex>; -template class ACE_Map_Iterator<STDIN_Token::TID, ACE_Token_Collection *, ACE_Null_Mutex>; -template class ACE_Map_Reverse_Iterator<STDIN_Token::TID, ACE_Token_Collection *, ACE_Null_Mutex>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Map_Entry<STDIN_Token::TID, ACE_Token_Collection *> -#pragma instantiate ACE_Map_Manager<STDIN_Token::TID, ACE_Token_Collection *, ACE_Null_Mutex> -#pragma instantiate ACE_Map_Iterator_Base<STDIN_Token::TID, ACE_Token_Collection *, ACE_Null_Mutex> -#pragma instantiate ACE_Map_Iterator<STDIN_Token::TID, ACE_Token_Collection *, ACE_Null_Mutex> -#pragma instantiate ACE_Map_Reverse_Iterator<STDIN_Token::TID, ACE_Token_Collection *, ACE_Null_Mutex> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/netsvcs/clients/Tokens/manual/manual.dsp b/netsvcs/clients/Tokens/manual/manual.dsp deleted file mode 100644 index 5de93220382..00000000000 --- a/netsvcs/clients/Tokens/manual/manual.dsp +++ /dev/null @@ -1,97 +0,0 @@ -# Microsoft Developer Studio Project File - Name="NETSVCS Token Manual Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=NETSVCS Token Manual Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "manual.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "manual.mak" CFG="NETSVCS Token Manual Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NETSVCS Token Manual Client - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "NETSVCS Token Manual Client - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NETSVCS Token Manual Client - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\ace"
-
-!ELSEIF "$(CFG)" == "NETSVCS Token Manual Client - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "NETSVCS Token Manual Client - Win32 Release"
-# Name "NETSVCS Token Manual Client - Win32 Debug"
-# Begin Group "Source"
-
-# PROP Default_Filter "cpp"
-# Begin Source File
-
-SOURCE=.\manual.cpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/netsvcs/clients/Tokens/manual/manual.dsw b/netsvcs/clients/Tokens/manual/manual.dsw deleted file mode 100644 index a98d5bcc9b5..00000000000 --- a/netsvcs/clients/Tokens/manual/manual.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "manual"=.\manual.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/netsvcs/clients/Tokens/mutex/Makefile b/netsvcs/clients/Tokens/mutex/Makefile deleted file mode 100644 index 6a300901b0a..00000000000 --- a/netsvcs/clients/Tokens/mutex/Makefile +++ /dev/null @@ -1,148 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for repeating token client application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = test_mutex - -FILES = test_mutex - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(LSRC:%.cpp=$(VDIR)%.o) -SHOBJ = $(addsuffix .so,$(FILES)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/test_mutex.o .obj/test_mutex.so .shobj/test_mutex.o .shobj/test_mutex.so: test_mutex.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/Local_Tokens.h \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Synch_Options.i \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Local_Tokens.i \ - $(ACE_ROOT)/ace/Remote_Tokens.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - $(ACE_ROOT)/ace/Token_Request_Reply.h \ - $(ACE_ROOT)/ace/Token_Request_Reply.i \ - $(ACE_ROOT)/ace/Remote_Tokens.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/netsvcs/clients/Tokens/mutex/README b/netsvcs/clients/Tokens/mutex/README deleted file mode 100644 index cbd1e9c7d6c..00000000000 --- a/netsvcs/clients/Tokens/mutex/README +++ /dev/null @@ -1,23 +0,0 @@ - -test_mutex - -test_mutex tests ACE_Local_Mutex and ACE_Remote_Mutex with both local -and global proxies. "Local proxies" mean that each thread uses its -own proxy (but same logical token.) "Global proxy" means that all -threads access the same proxy (and, of course, the same logical -token.) - -test_mutex can take the number of threads to run from the -command-line. Thus, to run the test with one thread and local -mutexes, type: - -% ./test_mutex - -To run the test with 10 threads and local mutexes, type: - -% ./test_mutex -t 10 - -To run the test with 10 threads and remote mutexes, type: - -% ./test_mutex -t 10 -r - diff --git a/netsvcs/clients/Tokens/mutex/mutex.dsp b/netsvcs/clients/Tokens/mutex/mutex.dsp deleted file mode 100644 index facd2d27e2b..00000000000 --- a/netsvcs/clients/Tokens/mutex/mutex.dsp +++ /dev/null @@ -1,97 +0,0 @@ -# Microsoft Developer Studio Project File - Name="NETSVCS Token Mutex Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=NETSVCS Token Mutex Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "mutex.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "mutex.mak" CFG="NETSVCS Token Mutex Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NETSVCS Token Mutex Client - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "NETSVCS Token Mutex Client - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NETSVCS Token Mutex Client - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\ace"
-
-!ELSEIF "$(CFG)" == "NETSVCS Token Mutex Client - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "NETSVCS Token Mutex Client - Win32 Release"
-# Name "NETSVCS Token Mutex Client - Win32 Debug"
-# Begin Group "Source"
-
-# PROP Default_Filter "cpp"
-# Begin Source File
-
-SOURCE=.\test_mutex.cpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/netsvcs/clients/Tokens/mutex/mutex.dsw b/netsvcs/clients/Tokens/mutex/mutex.dsw deleted file mode 100644 index f22f4bce411..00000000000 --- a/netsvcs/clients/Tokens/mutex/mutex.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "mutex"=.\mutex.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/netsvcs/clients/Tokens/mutex/test_mutex.cpp b/netsvcs/clients/Tokens/mutex/test_mutex.cpp deleted file mode 100644 index d51b8c6dbf1..00000000000 --- a/netsvcs/clients/Tokens/mutex/test_mutex.cpp +++ /dev/null @@ -1,143 +0,0 @@ -// ============================================================================ -// $Id$ - -// -// = LIBRARY -// examples -// -// = FILENAME -// test_mutex.cpp -// -// = DESCRIPTION -// -// = AUTHOR -// Tim Harrison -// -// ============================================================================ - -#include "ace/OS.h" -#include "ace/Get_Opt.h" -#include "ace/Local_Tokens.h" -#include "ace/Remote_Tokens.h" -#include "ace/Thread.h" -#include "ace/Thread_Manager.h" - -ACE_RCSID(mutex, test_mutex, "$Id$") - -#if defined (ACE_HAS_THREADS) - -static ACE_Token_Proxy *mutex; -static int remote_mutexes = 0; -static char *server_host = ACE_DEFAULT_SERVER_HOST; -static int server_port = ACE_DEFAULT_SERVER_PORT; -static int iterations = 100; -static int spawn_count = 2; - -static void * -run_test (void *) -{ - int count = iterations; - // test recursive acquisition of a global proxy - while (count--) - { - if (mutex->acquire () == -1) - { - ACE_ERROR ((LM_ERROR, "(%t) %p acquire failed\n","test_mutex")); - return (void *) -1; - } - -// mutex->acquire (); - if (mutex->renew () == -1) - { - ACE_ERROR ((LM_ERROR, "(%t) %p renew failed\n","test_mutex")); - return (void *) -1; - } - - if (mutex->release () == -1) - { - ACE_ERROR ((LM_ERROR, "(%t) %p release failed\n","test_mutex")); - return (void *) -1; - } - -// mutex->release (); - } - - return 0; -} - -static int -parse_args (int argc, char *argv[]) -{ - ACE_LOG_MSG->open (argv[0]); - - ACE_Get_Opt get_opt (argc, argv, "t:uh:p:n:", 1); - - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 't': - spawn_count = ACE_OS::atoi (get_opt.optarg); - break; - case 'h': // specify the host machine on which the server is running - server_host = get_opt.optarg; - remote_mutexes = 1; - break; - case 'p': // specify the port on which the server is running - server_port = ACE_OS::atoi (get_opt.optarg); - remote_mutexes = 1; - break; - case 'n': // specify the port on which the server is running - iterations = ACE_OS::atoi (get_opt.optarg); - break; - case 'u': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "%n:\n" - "[-h <remote host>]\n" - "[-p <remote port>]\n" - "[-n <iterations>]\n" - "[-t <threads>]\n" - "[-h <remote host>]\n" - "[-p <remote port>]\n", 1), -1); - /* NOTREACHED */ - } - } - - return 0; -} - -int -main (int argc, char *argv[]) -{ - ACE_Thread_Manager thread_mgr; - - if (parse_args (argc, argv) == -1) - return -1; - - if (remote_mutexes) - { - ACE_Remote_Mutex::set_server_address (ACE_INET_Addr (server_port, server_host)); - mutex = new ACE_Remote_Mutex ("Remote TOKEN", 0, 1); - } - else - { - mutex = new ACE_Local_Mutex ("Local TOKEN", 0, 1); - } - - if (thread_mgr.spawn_n (spawn_count, - ACE_THR_FUNC (run_test), - 0, - THR_BOUND) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn"), -1); - - thread_mgr.wait (); - - return 0; -} -#else -int main (int, char *[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, "you must have threads to run this test program\n"), -1); -} -#endif /* ACE_HAS_THREADS */ diff --git a/netsvcs/clients/Tokens/rw_lock/Makefile b/netsvcs/clients/Tokens/rw_lock/Makefile deleted file mode 100644 index c4b1e9b61dc..00000000000 --- a/netsvcs/clients/Tokens/rw_lock/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for repeating token client application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = rw_locks - -FILES = rw_locks - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(LSRC:%.cpp=$(VDIR)%.o) -SHOBJ = $(addsuffix .so,$(FILES)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/rw_locks.o .obj/rw_locks.so .shobj/rw_locks.o .shobj/rw_locks.so: rw_locks.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/config-g++-common.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/Local_Tokens.h \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Synch_Options.i \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Local_Tokens.i \ - $(ACE_ROOT)/ace/Remote_Tokens.h \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - $(ACE_ROOT)/ace/Token_Request_Reply.h \ - $(ACE_ROOT)/ace/Token_Request_Reply.i \ - $(ACE_ROOT)/ace/Remote_Tokens.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Token_Invariants.h \ - $(ACE_ROOT)/ace/Token_Invariants.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/netsvcs/clients/Tokens/rw_lock/README b/netsvcs/clients/Tokens/rw_lock/README deleted file mode 100644 index dabc0a3741d..00000000000 --- a/netsvcs/clients/Tokens/rw_lock/README +++ /dev/null @@ -1,40 +0,0 @@ - -test_rw_locks shows how to use ACE_Local_RLock, ACE_Local_WLock, -ACE_Remote_RLock, and ACE_Remote_WLock. - -Here are the options to test_rw_locks: -% ./test_rw_lock -u - -i ignore deadlock - -n <iterations> - -r <reads> - -d debug - -s sleep during writes - -t <threads> - -test_rw_locks spawns <threads> number of threads which perform the -following algorithm: - -for <iterations> - { - for <reads> - acquire read lock - for <reads> - release read lock - - acquire write lock - if (sleep during writes) - sleep for 1 second - release write lock - } - - -The output should show that multiple readers can acquire the lock for -reading simultaneously (note that this also tests recursive -acquisition.) When a writer lock is acquired, the output should show -that no thread holds a reader lock. - -To run a test, simply type: -% ./test_rw_lock - -This should show output as described above. - diff --git a/netsvcs/clients/Tokens/rw_lock/rw_lock.dsp b/netsvcs/clients/Tokens/rw_lock/rw_lock.dsp deleted file mode 100644 index dc47bd968ed..00000000000 --- a/netsvcs/clients/Tokens/rw_lock/rw_lock.dsp +++ /dev/null @@ -1,98 +0,0 @@ -# Microsoft Developer Studio Project File - Name="NETSVCS Token RW_Lock Client" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=NETSVCS Token RW_Lock Client - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "rw_lock.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "rw_lock.mak"\
- CFG="NETSVCS Token RW_Lock Client - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NETSVCS Token RW_Lock Client - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "NETSVCS Token RW_Lock Client - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NETSVCS Token RW_Lock Client - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\ace"
-
-!ELSEIF "$(CFG)" == "NETSVCS Token RW_Lock Client - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "NETSVCS Token RW_Lock Client - Win32 Release"
-# Name "NETSVCS Token RW_Lock Client - Win32 Debug"
-# Begin Group "Source"
-
-# PROP Default_Filter "cpp"
-# Begin Source File
-
-SOURCE=.\rw_locks.cpp
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/netsvcs/clients/Tokens/rw_lock/rw_lock.dsw b/netsvcs/clients/Tokens/rw_lock/rw_lock.dsw deleted file mode 100644 index 97465ec76bb..00000000000 --- a/netsvcs/clients/Tokens/rw_lock/rw_lock.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "rw_lock"=.\rw_lock.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/netsvcs/clients/Tokens/rw_lock/rw_locks.cpp b/netsvcs/clients/Tokens/rw_lock/rw_locks.cpp deleted file mode 100644 index 6354f2fc6c9..00000000000 --- a/netsvcs/clients/Tokens/rw_lock/rw_locks.cpp +++ /dev/null @@ -1,253 +0,0 @@ -// ============================================================================ -// $Id$ - -// -// = LIBRARY -// examples -// -// = FILENAME -// rw_locks.cpp -// -// = DESCRIPTION -// test_rw_locks shows how to use ACE_Local_RLock, ACE_Local_WLock, -// ACE_Remote_RLock, and ACE_Remote_WLock. -// -// = AUTHOR -// Tim Harrison -// -// ============================================================================ - -#include "ace/OS.h" -#include "ace/Get_Opt.h" -#include "ace/Local_Tokens.h" -#include "ace/Remote_Tokens.h" -#include "ace/Thread_Manager.h" -#include "ace/Token_Invariants.h" - -ACE_RCSID(rw_lock, rw_locks, "$Id$") - -#if defined (ACE_HAS_THREADS) - -typedef ACE_Token_Invariant_Manager ACE_TOKEN_INVARIANTS; - -static ACE_Token_Proxy *global_rlock; -static ACE_Token_Proxy *global_wlock; - -static char *server_host = ACE_DEFAULT_SERVER_HOST; -static int server_port = ACE_DEFAULT_SERVER_PORT; -static int ignore_deadlock = 0; -static int threads = 2; -static int iterations = 50; -static int debug = 0; -static int remote = 0; -static int reads = 4; -static int write_sleep = 0; -static int renew = 0; - -static void * -run_thread (void *) -{ - for (int x = 0; x < iterations; x++) - { - int y = 0; - for (; y < reads; y++) - { - if (global_rlock->acquire () == -1) - { - if (ACE_Log_Msg::instance ()->errnum () == EDEADLK) - { - ACE_DEBUG ((LM_DEBUG, "rlock deadlock detected\n")); - goto READ_DEADLOCK; - } - else return 0; - } - - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (global_rlock) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "reader acquire violated invariant.\n"), 0); - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock acquired.\n")); - } - - if (renew) - { - ACE_TOKEN_INVARIANTS::instance ()->releasing (global_rlock); - - if (global_rlock->renew () == -1) - { - if (ACE_Log_Msg::instance ()->errnum () == EDEADLK) - { - ACE_DEBUG ((LM_DEBUG, "rlock deadlock detected during renew\n")); - goto READ_DEADLOCK; - } - else return 0; - } - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock renewed.\n")); - - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (global_rlock) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "reader renew violated invariant.\n"), 0); - } - - READ_DEADLOCK: - - for (; y > 0; y--) - { - ACE_TOKEN_INVARIANTS::instance ()->releasing (global_rlock); - if (global_rlock->release () == 0) - ACE_DEBUG ((LM_DEBUG, "(%t) r-released.\n")); - } - - if (global_wlock->acquire () == -1) - ACE_DEBUG ((LM_DEBUG, "wlock deadlock detected\n")); - else - { - if (write_sleep) - ACE_OS::sleep (1); - ACE_DEBUG ((LM_DEBUG, "\t\t(%t) wlock acquired.\n")); - - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (global_wlock) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "writer acquire violated invariant.\n"), 0); - - if (renew) - { - ACE_TOKEN_INVARIANTS::instance ()->releasing (global_wlock); - - if (global_wlock->renew () == -1) - { - if (ACE_Log_Msg::instance ()->errnum () == EDEADLK) - { - ACE_DEBUG ((LM_DEBUG, "wlock deadlock detected during renew\n")); - } - else return 0; - } - - ACE_DEBUG ((LM_DEBUG, "(%t) rlock renewed.\n")); - - if (ACE_TOKEN_INVARIANTS::instance ()->acquired (global_wlock) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "writer renew violated invariant.\n"), 0); - } - - ACE_TOKEN_INVARIANTS::instance ()->releasing (global_wlock); - - if (global_wlock->release () == 0) - ACE_DEBUG ((LM_DEBUG, "\t\t(%t) w-released.\n")); - } - } - - ACE_DEBUG ((LM_DEBUG, "(%t) thread exiting.\n")); - return 0; -} - -static int -parse_args (int argc, char *argv[]) -{ - ACE_LOG_MSG->open (argv[0], ACE_Log_Msg::STDERR); // | ACE_Log_Msg::VERBOSE); - - ACE_Get_Opt get_opt (argc, argv, "t:iun:dr:sp:h:R", 1); - - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 'h': // specify the host machine on which the server is running - server_host = get_opt.optarg; - remote = 1; - break; - case 'p': // specify the port on which the server is running - server_port = ACE_OS::atoi (get_opt.optarg); - remote = 1; - break; - case 't': - threads = ACE_OS::atoi (get_opt.optarg); - break; - case 'R': - renew = 1; - break; - case 'r': - reads = ACE_OS::atoi (get_opt.optarg); - break; - case 'd': - debug = 1; - break; - case 's': - write_sleep = 1; - break; - case 'n': - iterations = ACE_OS::atoi (get_opt.optarg); - break; - case 'i': - ignore_deadlock = 1; - break; - case 'u': - // usage: fallthrough - default: - ACE_ERROR_RETURN ((LM_ERROR, - "%n:\n" - "[-h <remote host>]\n" - "[-p <remote port>]\n" - "[-i ignore deadlock]\n" - "[-n <iterations>]\n" - "[-R perform renews]\n" - "[-r <reads>]\n" - "[-d debug]\n" - "[-s sleep during writes]\n" - "[-t <threads>\n", 1), -1); - } - } - - return 0; -} - -#if defined (ACE_HAS_PTHREADS) -#define SUSPEND 0 -#else -#define SUSPEND THR_SUSPENDED -#endif - -int -main (int argc, char* argv[]) -{ - if (parse_args (argc, argv) == -1) - return -1; - - if (remote) - { - ACE_Remote_Mutex::set_server_address (ACE_INET_Addr (server_port, server_host)); - global_rlock = (ACE_Token_Proxy *) new - ACE_Remote_RLock ("THE_TOKEN", ignore_deadlock, debug); - global_wlock = (ACE_Token_Proxy *) new - ACE_Remote_WLock ("THE_TOKEN", ignore_deadlock, debug); - } - else - { - global_rlock = (ACE_Token_Proxy *) new - ACE_Local_RLock ("THE_TOKEN", ignore_deadlock, debug); - global_wlock = (ACE_Token_Proxy *) new - ACE_Local_WLock ("THE_TOKEN", ignore_deadlock, debug); - } - - ACE_Thread_Manager mgr; - - if (mgr.spawn_n (threads, ACE_THR_FUNC (run_thread), - (void *) 0, - THR_BOUND | SUSPEND) == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "spawn failed"), -1); - -#if ! defined (ACE_HAS_PTHREADS) - if (mgr.resume_all () == -1) - ACE_ERROR_RETURN ((LM_DEBUG, "%p\n", "resume failed"), -1); -#endif - - mgr.wait (); - - return 0; -} - -#else -int -main (int, char *[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, - "threads not supported on this platform\n"), -1); -} -#endif /* ACE_HAS_THREADS */ |