00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 #ifndef ACE_MALLOC_ALLOCATOR_H
00014 #define ACE_MALLOC_ALLOCATOR_H
00015 
00016 #include  "ace/pre.h"
00017 
00018 #include  "ace/ACE_export.h"
00019 
00020 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00021 # pragma once
00022 #endif 
00023 
00024 #include "ace/Malloc_Base.h"
00025 
00026 #if defined (ACE_HAS_MALLOC_STATS)
00027 #if defined (ACE_HAS_THREADS)
00028 #include "ace/Process_Mutex.h"
00029 #define ACE_PROCESS_MUTEX ACE_Process_Mutex
00030 #else
00031 #include "ace/SV_Semaphore_Simple.h"
00032 #define ACE_PROCESS_MUTEX ACE_SV_Semaphore_Simple
00033 #endif 
00034 
00035 #endif 
00036 
00037 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 class ACE_Export ACE_New_Allocator : public ACE_Allocator
00055 {
00056 public:
00057 
00058   virtual void *malloc (size_t nbytes);
00059   virtual void *calloc (size_t nbytes, char initial_value = '\0');
00060   virtual void *calloc (size_t n_elem, size_t elem_size, char initial_value = '\0');
00061   virtual void free (void *ptr);
00062 
00063 
00064   virtual int remove (void);
00065   virtual int bind (const char *name, void *pointer, int duplicates = 0);
00066   virtual int trybind (const char *name, void *&pointer);
00067   virtual int find (const char *name, void *&pointer);
00068   virtual int find (const char *name);
00069   virtual int unbind (const char *name);
00070   virtual int unbind (const char *name, void *&pointer);
00071   virtual int sync (ssize_t len = -1, int flags = MS_SYNC);
00072   virtual int sync (void *addr, size_t len, int flags = MS_SYNC);
00073   virtual int protect (ssize_t len = -1, int prot = PROT_RDWR);
00074   virtual int protect (void *addr, size_t len, int prot = PROT_RDWR);
00075 #if defined (ACE_HAS_MALLOC_STATS)
00076   virtual void print_stats (void) const;
00077 #endif 
00078   virtual void dump (void) const;
00079 
00080 private:
00081   
00082   
00083 };
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099 
00100 class ACE_Export ACE_Static_Allocator_Base : public ACE_Allocator
00101 {
00102 public:
00103   ACE_Static_Allocator_Base (char *buffer, size_t size);
00104   virtual void *malloc (size_t nbytes);
00105   virtual void *calloc (size_t nbytes, char initial_value = '\0');
00106   virtual void *calloc (size_t n_elem, size_t elem_size, char initial_value = '\0');
00107   virtual void free (void *ptr);
00108   virtual int remove (void);
00109   virtual int bind (const char *name, void *pointer, int duplicates = 0);
00110   virtual int trybind (const char *name, void *&pointer);
00111   virtual int find (const char *name, void *&pointer);
00112   virtual int find (const char *name);
00113   virtual int unbind (const char *name);
00114   virtual int unbind (const char *name, void *&pointer);
00115   virtual int sync (ssize_t len = -1, int flags = MS_SYNC);
00116   virtual int sync (void *addr, size_t len, int flags = MS_SYNC);
00117   virtual int protect (ssize_t len = -1, int prot = PROT_RDWR);
00118   virtual int protect (void *addr, size_t len, int prot = PROT_RDWR);
00119 #if defined (ACE_HAS_MALLOC_STATS)
00120   virtual void print_stats (void) const;
00121 #endif 
00122   virtual void dump (void) const;
00123 
00124 protected:
00125 
00126   ACE_Static_Allocator_Base (void);
00127 
00128 
00129   char *buffer_;
00130 
00131 
00132   size_t size_;
00133 
00134 
00135   size_t offset_;
00136 };
00137 
00138 ACE_END_VERSIONED_NAMESPACE_DECL
00139 
00140 #if defined (__ACE_INLINE__)
00141 #include "ace/Malloc_Allocator.inl"
00142 #endif 
00143 
00144 #include  "ace/post.h"
00145 
00146 #endif