Sbrk_Memory_Pool.cpp

Go to the documentation of this file.
00001 // Sbrk_Memory_Pool.cpp,v 4.3 2005/10/28 16:14:55 ossama Exp
00002 
00003 #include "ace/OS_NS_unistd.h"
00004 #include "ace/Sbrk_Memory_Pool.h"
00005 #include "ace/Log_Msg.h"
00006 
00007 ACE_RCSID(ace, Sbrk_Memory_Pool, "Sbrk_Memory_Pool.cpp,v 4.3 2005/10/28 16:14:55 ossama Exp")
00008 
00009 #if !defined (ACE_LACKS_SBRK)
00010 
00011 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00012 
00013 ACE_ALLOC_HOOK_DEFINE(ACE_Sbrk_Memory_Pool)
00014 
00015 // Ask system for more local memory via sbrk(2).
00016 
00017 void *
00018 ACE_Sbrk_Memory_Pool::acquire (size_t nbytes,
00019                                size_t &rounded_bytes)
00020 {
00021   ACE_TRACE ("ACE_Sbrk_Memory_Pool::acquire");
00022   rounded_bytes = this->round_up (nbytes);
00023   // ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("(%P|%t) acquiring more chunks, nbytes = %d, rounded_bytes = %d\n"), nbytes, rounded_bytes));
00024   void *cp = ACE_OS::sbrk (rounded_bytes);
00025 
00026   if (cp == MAP_FAILED)
00027     ACE_ERROR_RETURN ((LM_ERROR,
00028                        "(%P|%t) cp = %u\n",
00029                        cp),
00030                       0);
00031   else
00032     // ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("(%P|%t) acquired more chunks, nbytes = %d, rounded_bytes = %d, new break = %u\n"), nbytes, rounded_bytes, cp));
00033   return cp;
00034 }
00035 
00036 /* No-op for now... */
00037 
00038 int
00039 ACE_Sbrk_Memory_Pool::release (int)
00040 {
00041   ACE_TRACE ("ACE_Sbrk_Memory_Pool::release");
00042   return 0;
00043 }
00044 
00045 int
00046 ACE_Sbrk_Memory_Pool::sync (ssize_t, int)
00047 {
00048   ACE_TRACE ("ACE_Sbrk_Memory_Pool::sync");
00049   return 0;
00050 }
00051 
00052 int
00053 ACE_Sbrk_Memory_Pool::sync (void *, size_t, int)
00054 {
00055   ACE_TRACE ("ACE_Sbrk_Memory_Pool::sync");
00056   return 0;
00057 }
00058 
00059 int
00060 ACE_Sbrk_Memory_Pool::protect (ssize_t, int)
00061 {
00062   ACE_TRACE ("ACE_Sbrk_Memory_Pool::protect");
00063   return 0;
00064 }
00065 
00066 int
00067 ACE_Sbrk_Memory_Pool::protect (void *, size_t, int)
00068 {
00069   ACE_TRACE ("ACE_Sbrk_Memory_Pool::protect");
00070   return 0;
00071 }
00072 
00073 // Ask system for initial chunk of local memory.
00074 
00075 void *
00076 ACE_Sbrk_Memory_Pool::init_acquire (size_t nbytes,
00077                                     size_t &rounded_bytes,
00078                                     int &first_time)
00079 {
00080   ACE_TRACE ("ACE_Sbrk_Memory_Pool::init_acquire");
00081   // Note that we assume that when ACE_Sbrk_Memory_Pool is used,
00082   // ACE_Malloc's constructor will only get called once.  If this
00083   // assumption doesn't hold, we are in deep trouble!
00084 
00085   first_time = 1;
00086   return this->acquire (nbytes, rounded_bytes);
00087 }
00088 
00089 void
00090 ACE_Sbrk_Memory_Pool::dump (void) const
00091 {
00092 #if defined (ACE_HAS_DUMP)
00093   ACE_TRACE ("ACE_Sbrk_Memory_Pool::dump");
00094 #endif /* ACE_HAS_DUMP */
00095 }
00096 
00097 ACE_Sbrk_Memory_Pool::ACE_Sbrk_Memory_Pool (const ACE_TCHAR *,
00098                                             const OPTIONS *)
00099 {
00100   ACE_TRACE ("ACE_Sbrk_Memory_Pool::ACE_Sbrk_Memory_Pool");
00101 }
00102 
00103 ACE_Sbrk_Memory_Pool::~ACE_Sbrk_Memory_Pool (void)
00104 {
00105 }
00106 
00107 void *
00108 ACE_Sbrk_Memory_Pool::base_addr (void) const
00109 {
00110   return 0;
00111 }
00112 
00113 // Round up the request to a multiple of the page size.
00114 
00115 size_t
00116 ACE_Sbrk_Memory_Pool::round_up (size_t nbytes)
00117 {
00118   ACE_TRACE ("ACE_Sbrk_Memory_Pool::round_up");
00119   return ACE::round_to_pagesize (nbytes);
00120 }
00121 
00122 ACE_END_VERSIONED_NAMESPACE_DECL
00123 
00124 #endif /* !ACE_LACKS_SBRK */

Generated on Thu Nov 9 09:42:02 2006 for ACE by doxygen 1.3.6