diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2008-03-04 14:51:23 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2008-03-04 14:51:23 +0000 |
commit | 99aa8c60282c7b8072eb35eb9ac815702f5bf586 (patch) | |
tree | bda96bf8c3a4c2875a083d7b16720533c8ffeaf4 /ACE/examples/Shared_Memory | |
parent | c4078c377d74290ebe4e66da0b4975da91732376 (diff) | |
download | ATCD-99aa8c60282c7b8072eb35eb9ac815702f5bf586.tar.gz |
undoing accidental deletion
Diffstat (limited to 'ACE/examples/Shared_Memory')
-rw-r--r-- | ACE/examples/Shared_Memory/Makefile.am | 58 | ||||
-rw-r--r-- | ACE/examples/Shared_Memory/Shared_Memory.mpc | 17 | ||||
-rw-r--r-- | ACE/examples/Shared_Memory/test_MM.cpp | 74 | ||||
-rw-r--r-- | ACE/examples/Shared_Memory/test_SV.cpp | 64 |
4 files changed, 213 insertions, 0 deletions
diff --git a/ACE/examples/Shared_Memory/Makefile.am b/ACE/examples/Shared_Memory/Makefile.am new file mode 100644 index 00000000000..f7e9517e1dc --- /dev/null +++ b/ACE/examples/Shared_Memory/Makefile.am @@ -0,0 +1,58 @@ +## Process this file with automake to create Makefile.in +## +## $Id$ +## +## This file was generated by MPC. Any changes made directly to +## this file will be lost the next time it is generated. +## +## MPC Command: +## ./bin/mwc.pl -type automake -noreldefs ACE.mwc + +ACE_BUILDDIR = $(top_builddir) +ACE_ROOT = $(top_srcdir) + +noinst_PROGRAMS = + +## Makefile.Shared_Memory_MM.am + +if !BUILD_ACE_FOR_TAO + +noinst_PROGRAMS += testmm + +testmm_CPPFLAGS = \ + -I$(ACE_ROOT) \ + -I$(ACE_BUILDDIR) + +testmm_SOURCES = \ + test_MM.cpp + +testmm_LDADD = \ + $(ACE_BUILDDIR)/ace/libACE.la + +endif !BUILD_ACE_FOR_TAO + +## Makefile.Shared_Memory_SV.am + +if !BUILD_ACE_FOR_TAO + +noinst_PROGRAMS += testsv + +testsv_CPPFLAGS = \ + -I$(ACE_ROOT) \ + -I$(ACE_BUILDDIR) + +testsv_SOURCES = \ + test_SV.cpp + +testsv_LDADD = \ + $(ACE_BUILDDIR)/ace/libACE.la + +endif !BUILD_ACE_FOR_TAO + +## Clean up template repositories, etc. +clean-local: + -rm -f *~ *.bak *.rpo *.sym lib*.*_pure_* core core.* + -rm -f gcctemp.c gcctemp so_locations *.ics + -rm -rf cxx_repository ptrepository ti_files + -rm -rf templateregistry ir.out + -rm -rf ptrepository SunWS_cache Templates.DB diff --git a/ACE/examples/Shared_Memory/Shared_Memory.mpc b/ACE/examples/Shared_Memory/Shared_Memory.mpc new file mode 100644 index 00000000000..f0ee256597b --- /dev/null +++ b/ACE/examples/Shared_Memory/Shared_Memory.mpc @@ -0,0 +1,17 @@ +// -*- MPC -*- +// $Id$ + +project(*MM) : aceexe { + avoids += ace_for_tao + exename = testmm + Source_Files { + test_MM.cpp + } +} +project(*SV) : aceexe { + avoids += ace_for_tao + exename = testsv + Source_Files { + test_SV.cpp + } +} diff --git a/ACE/examples/Shared_Memory/test_MM.cpp b/ACE/examples/Shared_Memory/test_MM.cpp new file mode 100644 index 00000000000..2d98224f910 --- /dev/null +++ b/ACE/examples/Shared_Memory/test_MM.cpp @@ -0,0 +1,74 @@ +// $Id$ + +#include "ace/Shared_Memory_MM.h" +#include "ace/Log_Msg.h" +#include "ace/OS_NS_errno.h" +#include "ace/OS_NS_unistd.h" +#include "ace/OS_NS_stdlib.h" + +ACE_RCSID(Shared_Memory, test_MM, "$Id$") + +#define SHMSZ 27 +ACE_TCHAR shm_key[] = ACE_TEXT ("/tmp/fooXXXXXX"); + +static void +client (void) +{ + ACE_Shared_Memory *shm_client = new ACE_Shared_Memory_MM (shm_key); + char *shm = (char *) shm_client->malloc (); + + for (char *s = shm; *s != '\0'; s++) + putchar (*s); + + putchar ('\n'); + *shm = '*'; +} + +static void +server (void) +{ + ACE_Shared_Memory *shm_server = new ACE_Shared_Memory_MM (shm_key, SHMSZ); + char *shm = (char *) shm_server->malloc (); + char *s = shm; + + for (char c = 'a'; c <= 'z'; c++) + *s++ = c; + + *s = '\0'; + + // Perform a busy wait (ugh) + while (*shm != '*') + ACE_OS::sleep (1); + + if (shm_server->remove () < 0) + ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("remove"))); + ACE_OS::unlink (shm_key); +} + +int +ACE_TMAIN (int, ACE_TCHAR *[]) +{ + if ( +#if defined (ACE_LACKS_MKSTEMP) + ACE_OS::mktemp (shm_key) == 0 +#else + ACE_OS::mkstemp (shm_key) == 0 +#endif + || (ACE_OS::unlink (shm_key) == -1 && errno == EPERM)) + ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), shm_key), 1); + + switch (ACE_OS::fork ()) + { + case -1: + ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("fork")), 1); + case 0: + // Make sure the server starts up first. + ACE_OS::sleep (1); + client (); + break; + default: + server (); + break; + } + return 0; +} diff --git a/ACE/examples/Shared_Memory/test_SV.cpp b/ACE/examples/Shared_Memory/test_SV.cpp new file mode 100644 index 00000000000..26ab56a7115 --- /dev/null +++ b/ACE/examples/Shared_Memory/test_SV.cpp @@ -0,0 +1,64 @@ +// $Id$ + +#include "ace/Shared_Memory_SV.h" +#include "ace/Log_Msg.h" +#include "ace/OS_NS_unistd.h" + +ACE_RCSID(Shared_Memory, test_SV, "$Id$") + +#define SHMSZ 27 +#define SHM_KEY (key_t) 5678 + +static void +client (void) +{ + ACE_Shared_Memory_SV shm_client (SHM_KEY, SHMSZ); + char *shm = (char *) shm_client.malloc (); + + for (char *s = shm; *s != '\0'; s++) + putchar (*s); + + putchar ('\n'); + *shm = '*'; +} + +static void +server (void) +{ + ACE_Shared_Memory_SV shm_server (SHM_KEY, SHMSZ, + ACE_Shared_Memory_SV::ACE_CREATE); + char *shm = (char *) shm_server.malloc (); + char *s = shm; + + for (char c = 'a'; c <= 'z'; c++) + *s++ = c; + + *s = '\0'; + + while (*shm != '*') + ACE_OS::sleep (1); + + if (shm_server.remove () < 0) + ACE_ERROR ((LM_ERROR, "%p\n", "remove")); +} + +int +ACE_TMAIN (int, ACE_TCHAR *[]) +{ + switch (ACE_OS::fork ()) + { + case -1: + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "fork"), 1); + case 0: + // Make sure the server starts up first. + ACE_OS::sleep (1); + client (); + break; + default: + server (); + break; + } + + return 0; +} + |