blob: b8abc8bb7bf72198dd5d7f0fad4e82f70dcda4fe [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>oscl_mem.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>oscl_mem.h</h1><a href="oscl__mem_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">// -*- c++ -*-</span>
00002 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span>
00003
00004 <span class="comment">// O S C L _ M E M</span>
00005
00006 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span>
00007
00022 <span class="preprocessor">#ifndef OSCL_MEM_H_INCLUDED</span>
00023 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_MEM_H_INCLUDED</span>
00024 <span class="preprocessor"></span>
00025 <span class="preprocessor">#ifndef OSCLCONFIG_MEMORY_H_INCLUDED</span>
00026 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="osclconfig__memory_8h.html">osclconfig_memory.h</a>"</span>
00027 <span class="preprocessor">#endif</span>
00028 <span class="preprocessor"></span>
00029 <span class="preprocessor">#ifndef OSCL_BASE_H_INCLUDED</span>
00030 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__base_8h.html">oscl_base.h</a>"</span>
00031 <span class="preprocessor">#endif</span>
00032 <span class="preprocessor"></span>
00033 <span class="preprocessor">#ifndef OSCL_TYPES_H_INCLUDE</span>
00034 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__types_8h.html">oscl_types.h</a>"</span>
00035 <span class="preprocessor">#endif</span>
00036 <span class="preprocessor"></span>
00037 <span class="preprocessor">#ifndef OSCL_ASSERT_H_INCLUDED</span>
00038 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__assert_8h.html">oscl_assert.h</a>"</span>
00039 <span class="preprocessor">#endif</span>
00040 <span class="preprocessor"></span>
00041 <span class="preprocessor">#ifndef OSCL_MEM_BASIC_FUNCTIONS_H</span>
00042 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__mem__basic__functions_8h.html">oscl_mem_basic_functions.h</a>"</span>
00043 <span class="preprocessor">#endif</span>
00044 <span class="preprocessor"></span>
00045 <span class="preprocessor">#ifndef OSCL_LOCK_BASE_H_INCLUDED</span>
00046 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__lock__base_8h.html">oscl_lock_base.h</a>"</span>
00047 <span class="preprocessor">#endif</span>
00048 <span class="preprocessor"></span>
00049 <span class="preprocessor">#define OSCL_DISABLE_WARNING_TRUNCATE_DEBUG_MESSAGE</span>
00050 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="osclconfig__compiler__warnings_8h.html">osclconfig_compiler_warnings.h</a>"</span>
00051
00052 <span class="preprocessor">#ifndef OSCL_MEM_INST_H_INCLUDED</span>
00053 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__mem__inst_8h.html">oscl_mem_inst.h</a>"</span>
00054 <span class="preprocessor">#endif</span>
00055 <span class="preprocessor"></span>
00056 <span class="preprocessor">#ifndef OSCL_HEAPBASE_H_INCLUDED</span>
00057 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__heapbase_8h.html">oscl_heapbase.h</a>"</span>
00058 <span class="preprocessor">#endif</span>
00059 <span class="preprocessor"></span>
00060 <span class="comment">//Default for OSCL_HAS_GLOBAL_NEW_DELETE in case it is *not* defined</span>
00061 <span class="comment">//in the osclconfig_memory.h</span>
00062 <span class="preprocessor">#ifndef OSCL_HAS_GLOBAL_NEW_DELETE</span>
00063 <span class="preprocessor"></span><span class="preprocessor">#ifdef NDEBUG</span>
00064 <span class="preprocessor"></span><span class="comment">//Release Mode - No definition for global new and delete.</span>
00065 <span class="preprocessor">#define OSCL_HAS_GLOBAL_NEW_DELETE 0</span>
00066 <span class="preprocessor"></span><span class="preprocessor">#else</span>
00067 <span class="preprocessor"></span><span class="comment">//Debug Mode - Define global new and delete.</span>
<a name="l00068"></a><a class="code" href="group__osclmemory.html#a34">00068</a> <span class="preprocessor">#define OSCL_HAS_GLOBAL_NEW_DELETE 1</span>
00069 <span class="preprocessor"></span><span class="preprocessor">#endif //NDEBUG</span>
00070 <span class="preprocessor"></span><span class="preprocessor">#endif //OSCL_HAS_GLOBAL_NEW_DELETE</span>
00071 <span class="preprocessor"></span>
<a name="l00072"></a><a class="code" href="classOsclMem.html">00072</a> <span class="keyword">class </span><a class="code" href="classOsclMem.html">OsclMem</a>
00073 {
00074 <span class="keyword">public</span>:
00084 OSCL_IMPORT_REF <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classOsclMem.html#d0">Init</a>();
00085
00089 OSCL_IMPORT_REF <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classOsclMem.html#d1">Cleanup</a>();
00090
00091 };
00092
00093 <span class="comment">/*</span>
00094 <span class="comment">** Choose whether to use per-thread or singleton registry for auditing</span>
00095 <span class="comment">*/</span>
00096 <span class="preprocessor">#include "<a class="code" href="oscl__base_8h.html">oscl_base.h</a>"</span>
00097
00098 <span class="comment">/*</span>
00099 <span class="comment">** Audit control block</span>
00100 <span class="comment">*/</span>
00101 <span class="preprocessor">#if (OSCL_BYPASS_MEMMGT)</span>
00102 <span class="preprocessor"></span><span class="comment">//empty class for compilation only</span>
00103 <span class="keyword">class </span><a class="code" href="classOsclAuditCB.html">OsclAuditCB</a>
00104 {
00105 <span class="keyword">public</span>:
00106 };
00107 <span class="preprocessor">#else</span>
00108 <span class="preprocessor"></span><span class="keyword">class </span><a class="code" href="classOsclMemStatsNode.html">OsclMemStatsNode</a>;
00109 <span class="keyword">class </span><a class="code" href="classOsclMemAudit.html">OsclMemAudit</a>;
<a name="l00110"></a><a class="code" href="classOsclAuditCB.html">00110</a> <span class="keyword">class </span><a class="code" href="classOsclAuditCB.html">OsclAuditCB</a>
00111 {
00112 <span class="keyword">public</span>:
<a name="l00113"></a><a class="code" href="classOsclAuditCB.html#m0">00113</a> <span class="keyword">const</span> <a class="code" href="classOsclMemStatsNode.html">OsclMemStatsNode</a>* <a class="code" href="classOsclAuditCB.html#m0">pStatsNode</a>;
<a name="l00114"></a><a class="code" href="classOsclAuditCB.html#m1">00114</a> <a class="code" href="classOsclMemAudit.html">OsclMemAudit</a> *<a class="code" href="classOsclAuditCB.html#m1">pAudit</a>;
00115
<a name="l00116"></a><a class="code" href="classOsclAuditCB.html#a0">00116</a> <a class="code" href="classOsclAuditCB.html#a0">OsclAuditCB</a>() :
00117 pStatsNode(<a class="code" href="group__osclbase.html#a81">NULL</a>),
00118 pAudit(<a class="code" href="group__osclbase.html#a81">NULL</a>)
00119 {}
00120
<a name="l00121"></a><a class="code" href="classOsclAuditCB.html#a1">00121</a> <a class="code" href="classOsclAuditCB.html#a0">OsclAuditCB</a>(<span class="keyword">const</span> <a class="code" href="classOsclMemStatsNode.html">OsclMemStatsNode</a>* myStatsNode,
00122 <a class="code" href="classOsclMemAudit.html">OsclMemAudit</a> *ptr)
00123 :
00124 pStatsNode(myStatsNode),
00125 pAudit(ptr)
00126 {
00127 }
00128 };
00129 <span class="preprocessor">#endif//OSCL_BYPASS_MEMMGT</span>
00130 <span class="preprocessor"></span>
00138 <a class="code" href="group__osclbase.html#a84">OSCL_COND_IMPORT_REF</a> <a class="code" href="group__osclbase.html#a27">uint</a> <a class="code" href="group__osclmemory.html#a16">oscl_mem_aligned_size</a>(<a class="code" href="group__osclbase.html#a27">uint</a> size);
00139
00147 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="group__osclmemory.html#a17">OsclMemInit</a>(<a class="code" href="classOsclAuditCB.html">OsclAuditCB</a> &amp; auditCB);
00148
<a name="l00156"></a><a class="code" href="group__osclmemory.html#a35">00156</a> <span class="preprocessor">#define OSCL_CLEANUP_BASE_CLASS(T) _OSCL_CLEANUP_BASE_CLASS(T)</span>
00157 <span class="preprocessor"></span>
00175 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00176 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ALLOC_NEW(T_allocator, T, params) new(T_allocator.allocate(1)) T params</span>
00177 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00178 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ALLOC_NEW(T_allocator, T, params) new(T_allocator.allocate_fl(1,__FILE__,__LINE__)) T params</span>
00179 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00180"></a><a class="code" href="group__osclmemory.html#a36">00180</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ALLOC_NEW(T_allocator, T, params) new(T_allocator.allocate(1)) T params</span>
00181 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00182 <span class="preprocessor"></span>
00204 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00205 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_ALLOC_NEW(T_ptr,T_allocator,T,params) _OSCL_TRAP_NEW(T_allocator.allocate(1),T_allocator.deallocate,T_ptr,T,params)</span>
00206 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00207 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_ALLOC_NEW(T_ptr,T_allocator,T,params) _OSCL_TRAP_NEW(T_allocator.allocate_fl(1,__FILE__,__LINE__),T_allocator.deallocate,T_ptr,T,params)</span>
00208 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00209"></a><a class="code" href="group__osclmemory.html#a37">00209</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_ALLOC_NEW(T_ptr,T_allocator,T,params) _OSCL_TRAP_NEW(T_allocator.allocate(1),T_allocator.deallocate,T_ptr,T,params)</span>
00210 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00211 <span class="preprocessor"></span>
<a name="l00221"></a><a class="code" href="group__osclmemory.html#a38">00221</a> <span class="preprocessor">#define OSCL_ALLOC_DELETE(ptr, T_allocator, T) \</span>
00222 <span class="preprocessor"> {\</span>
00223 <span class="preprocessor"> ptr-&gt;~T();\</span>
00224 <span class="preprocessor"> T_allocator.deallocate(ptr);\</span>
00225 <span class="preprocessor"> }</span>
00226 <span class="preprocessor"></span>
00227
00232 <span class="comment">//These are for internal use but need to be visible since they're used</span>
00233 <span class="comment">//in macros.</span>
00234 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00235 <span class="preprocessor"></span>OSCL_IMPORT_REF <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a18">_oscl_audit_malloc</a>(size_t , <a class="code" href="classOsclAuditCB.html">OsclAuditCB</a> &amp; , <span class="keyword">const</span> <span class="keywordtype">char</span> * f = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> l = 0);
00236 OSCL_IMPORT_REF <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a19">_oscl_audit_calloc</a>(size_t , size_t, <a class="code" href="classOsclAuditCB.html">OsclAuditCB</a> &amp; , <span class="keyword">const</span> <span class="keywordtype">char</span> * f = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> l = 0);
00237 OSCL_IMPORT_REF <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a20">_oscl_audit_realloc</a>(<span class="keywordtype">void</span>*, size_t , <a class="code" href="classOsclAuditCB.html">OsclAuditCB</a> &amp; , <span class="keyword">const</span> <span class="keywordtype">char</span> * f = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> l = 0);
00238 OSCL_IMPORT_REF <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a21">_oscl_audit_new</a>(size_t , <a class="code" href="classOsclAuditCB.html">OsclAuditCB</a> &amp; , <span class="keyword">const</span> <span class="keywordtype">char</span> * f = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> l = 0) ;
00239 OSCL_IMPORT_REF <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a22">_oscl_default_audit_malloc</a>(size_t , <span class="keyword">const</span> <span class="keywordtype">char</span> * f = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> l = 0);
00240 OSCL_IMPORT_REF <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a23">_oscl_default_audit_calloc</a>(size_t , size_t, <span class="keyword">const</span> <span class="keywordtype">char</span> * f = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> l = 0);
00241 OSCL_IMPORT_REF <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a24">_oscl_default_audit_realloc</a>(<span class="keywordtype">void</span>*, size_t , <span class="keyword">const</span> <span class="keywordtype">char</span> * f = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> l = 0);
00242 OSCL_IMPORT_REF <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(size_t , <span class="keyword">const</span> <span class="keywordtype">char</span> * f = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> l = 0) ;
00243 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(<span class="keywordtype">void</span> *);
00244 <span class="preprocessor">#else</span>
00245 <span class="preprocessor"></span>OSCL_IMPORT_REF <span class="keywordtype">void</span>* _oscl_default_new(size_t nBytes);
00246 <span class="preprocessor">#endif//OSCL_BYPASS_MEMMGT</span>
00247 <span class="preprocessor"></span>
00248 <span class="preprocessor">#if (OSCL_HAS_GLOBAL_NEW_DELETE)</span>
00249 <span class="preprocessor"></span><span class="comment">//Global New operator overloaded to check native new operators called</span>
00250
00251 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
<a name="l00252"></a><a class="code" href="group__osclmemory.html#a27">00252</a> <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> * <a class="code" href="oscl__mem_8h.html#a43">operator new</a>(size_t aSize, <span class="keyword">const</span> <span class="keywordtype">char</span> *aFile, <span class="keywordtype">int</span> aLine)
00253 {
00254 <span class="preprocessor">#if(PVMEM_INST_LEVEL&gt;0)</span>
00255 <span class="preprocessor"></span> <span class="comment">//in case NULL is passed in, record this file &amp; line #</span>
00256 <span class="keywordflow">if</span> (!aFile)
00257 <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__);
00258 <span class="preprocessor">#endif</span>
00259 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, aFile, aLine);
00260 };
00261 <span class="preprocessor">#endif</span>
00262 <span class="preprocessor"></span>
<a name="l00263"></a><a class="code" href="oscl__mem_8h.html#a43">00263</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> * <a class="code" href="oscl__mem_8h.html#a43">operator new</a>(size_t aSize)
00264 {
00265 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00266 <span class="preprocessor"></span><span class="preprocessor">#if(PVMEM_INST_LEVEL&gt;0)</span>
00267 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__);
00268 <span class="preprocessor">#else</span>
00269 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize);
00270 <span class="preprocessor">#endif</span>
00271 <span class="preprocessor"></span><span class="preprocessor">#else</span>
00272 <span class="preprocessor"></span> <span class="keywordflow">return</span> _oscl_default_new(aSize);
00273 <span class="preprocessor">#endif</span>
00274 <span class="preprocessor"></span>};
00275
<a name="l00276"></a><a class="code" href="oscl__mem_8h.html#a44">00276</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="oscl__mem_8h.html#a44">operator delete</a>(<span class="keywordtype">void</span> *aPtr)
00277 {
00278 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00279 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(aPtr);
00280 <span class="preprocessor">#else</span>
00281 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(aPtr);
00282 <span class="preprocessor">#endif</span>
00283 <span class="preprocessor"></span>};
00284
00285 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
<a name="l00286"></a><a class="code" href="group__osclmemory.html#a30">00286</a> <span class="preprocessor"></span><span class="keyword">inline</span> <span class="keywordtype">void</span> * <a class="code" href="group__osclmemory.html#a31">operator new[]</a>(size_t aSize, <span class="keyword">const</span> <span class="keywordtype">char</span> *aFile, <span class="keywordtype">int</span> aLine)
00287 {
00288 <span class="preprocessor">#if(PVMEM_INST_LEVEL&gt;0)</span>
00289 <span class="preprocessor"></span> <span class="comment">//in case NULL is passed in, record this file &amp; line #</span>
00290 <span class="keywordflow">if</span> (!aFile)
00291 <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__);
00292 <span class="preprocessor">#endif</span>
00293 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, aFile, aLine);
00294 };
00295 <span class="preprocessor">#endif</span>
00296 <span class="preprocessor"></span>
<a name="l00297"></a><a class="code" href="group__osclmemory.html#a31">00297</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> * <a class="code" href="group__osclmemory.html#a31">operator new[]</a>(size_t aSize)
00298 {
00299 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00300 <span class="preprocessor"></span><span class="preprocessor">#if(PVMEM_INST_LEVEL&gt;0)</span>
00301 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__);
00302 <span class="preprocessor">#else</span>
00303 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize);
00304 <span class="preprocessor">#endif</span>
00305 <span class="preprocessor"></span><span class="preprocessor">#else</span>
00306 <span class="preprocessor"></span> <span class="keywordflow">return</span> _oscl_default_new(aSize);
00307 <span class="preprocessor">#endif</span>
00308 <span class="preprocessor"></span>};
00309
<a name="l00310"></a><a class="code" href="group__osclmemory.html#a32">00310</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__osclmemory.html#a32">operator delete[]</a>(<span class="keywordtype">void</span> *aPtr)
00311 {
00312 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00313 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(aPtr);
00314 <span class="preprocessor">#else</span>
00315 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(aPtr);
00316 <span class="preprocessor">#endif</span>
00317 <span class="preprocessor"></span>};
00318 <span class="preprocessor">#endif //OSCL_HAS_GLOBAL_NEW_DELETE</span>
00319 <span class="preprocessor"></span>
00331 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00332 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_MALLOC(count) _oscl_malloc(count)</span>
00333 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00334 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_MALLOC(count) _oscl_default_audit_malloc(count,__FILE__,__LINE__)</span>
00335 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00336"></a><a class="code" href="group__osclmemory.html#a39">00336</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_MALLOC(count) _oscl_default_audit_malloc(count)</span>
00337 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00338 <span class="preprocessor"></span>
00339 <span class="comment">/*</span>
00340 <span class="comment">** The public oscl_malloc call has been deprecated.</span>
00341 <span class="comment">** PV code should call OSCL_MALLOC.</span>
00342 <span class="comment">** This macro is defined for back-compatibility.</span>
00343 <span class="comment">*/</span>
<a name="l00344"></a><a class="code" href="group__osclmemory.html#a40">00344</a> <span class="preprocessor">#define oscl_malloc(a) OSCL_MALLOC(a)</span>
00345 <span class="preprocessor"></span>
<a name="l00349"></a><a class="code" href="group__osclmemory.html#a41">00349</a> <span class="preprocessor">#define OSCL_DEFAULT_MALLOC(x) OSCL_MALLOC(x)</span>
00350 <span class="preprocessor"></span>
00362 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00363 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_MALLOC(auditCB, count) _oscl_malloc(count)</span>
00364 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00365 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_MALLOC(auditCB, count) _oscl_audit_malloc(count, auditCB, __FILE__, __LINE__)</span>
00366 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00367"></a><a class="code" href="group__osclmemory.html#a42">00367</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_MALLOC(auditCB, count) _oscl_audit_malloc(count, auditCB)</span>
00368 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00369 <span class="preprocessor"></span>
00382 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00383 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_CALLOC(num,size) _oscl_calloc(num,size)</span>
00384 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00385 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_CALLOC(num,size) _oscl_default_audit_calloc(num,size,__FILE__,__LINE__)</span>
00386 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00387"></a><a class="code" href="group__osclmemory.html#a43">00387</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_CALLOC(num,size) _oscl_default_audit_calloc(num,size)</span>
00388 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00389 <span class="preprocessor"></span>
00390 <span class="comment">/*</span>
00391 <span class="comment">** The public oscl_calloc call has been deprecated.</span>
00392 <span class="comment">** PV code should call OSCL_CALLOC.</span>
00393 <span class="comment">** This macro is defined for back-compatibility.</span>
00394 <span class="comment">*/</span>
<a name="l00395"></a><a class="code" href="group__osclmemory.html#a44">00395</a> <span class="preprocessor">#define oscl_calloc(a,b) OSCL_CALLOC(a,b)</span>
00396 <span class="preprocessor"></span>
00410 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00411 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_CALLOC(auditCB, num,size) _oscl_calloc(num,size)</span>
00412 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00413 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_CALLOC(auditCB, num,size) _oscl_audit_calloc(num,size, auditCB, __FILE__, __LINE__)</span>
00414 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00415"></a><a class="code" href="group__osclmemory.html#a45">00415</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_CALLOC(auditCB, num,size) _oscl_audit_calloc(num,size, auditCB)</span>
00416 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00417 <span class="preprocessor"></span>
00430 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00431 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_REALLOC(ptr,new_size) _oscl_realloc(ptr,new_size)</span>
00432 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00433 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_REALLOC(ptr,new_size) _oscl_default_audit_realloc(ptr,new_size,__FILE__,__LINE__)</span>
00434 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00435"></a><a class="code" href="group__osclmemory.html#a46">00435</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_REALLOC(ptr,new_size) _oscl_default_audit_realloc(ptr,new_size)</span>
00436 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00437 <span class="preprocessor"></span>
00438 <span class="comment">/*</span>
00439 <span class="comment">** The public oscl_realloc call has been deprecated.</span>
00440 <span class="comment">** PV code should call OSCL_REALLOC. This macro is</span>
00441 <span class="comment">** defined for back-compatibility.</span>
00442 <span class="comment">*/</span>
<a name="l00443"></a><a class="code" href="group__osclmemory.html#a47">00443</a> <span class="preprocessor">#define oscl_realloc(a,b) OSCL_REALLOC(a,b)</span>
00444 <span class="preprocessor"></span>
00458 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00459 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_REALLOC(auditCB, ptr,new_size) _oscl_realloc(ptr,new_size)</span>
00460 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00461 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_REALLOC(auditCB, ptr,new_size) _oscl_audit_realloc(ptr,new_size, auditCB, __FILE__, __LINE__)</span>
00462 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00463"></a><a class="code" href="group__osclmemory.html#a48">00463</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_REALLOC(auditCB, ptr,new_size) _oscl_audit_realloc(ptr,new_size, auditCB)</span>
00464 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00465 <span class="preprocessor"></span>
00471 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00472 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_FREE(ptr) _oscl_free(ptr)</span>
00473 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00474"></a><a class="code" href="group__osclmemory.html#a49">00474</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_FREE(ptr) _oscl_audit_free(ptr)</span>
00475 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00476 <span class="preprocessor"></span>
00477 <span class="comment">/*</span>
00478 <span class="comment">** The public oscl_free call has been deprecated.</span>
00479 <span class="comment">** PV code should call OSCL_FREE.</span>
00480 <span class="comment">** This macro is defined for back-compatibility.</span>
00481 <span class="comment">*/</span>
<a name="l00482"></a><a class="code" href="group__osclmemory.html#a50">00482</a> <span class="preprocessor">#define oscl_free(x) OSCL_FREE(x)</span>
00483 <span class="preprocessor"></span>
<a name="l00487"></a><a class="code" href="group__osclmemory.html#a51">00487</a> <span class="preprocessor">#define OSCL_DEFAULT_FREE(x) OSCL_FREE(x)</span>
00488 <span class="preprocessor"></span>
00506 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00507 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_NEW( T, params) new T params</span>
00508 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span>
00509 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_NEW( T, params) new T params</span>
00510 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00511 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_NEW( T, params) new(__FILE__,__LINE__) T params</span>
00512 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00513"></a><a class="code" href="group__osclmemory.html#a52">00513</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_NEW( T, params) new T params</span>
00514 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00515 <span class="preprocessor"></span>
00516 <span class="comment">/********************************************************</span>
00517 <span class="comment"> * Macro for placement new</span>
00518 <span class="comment"> *</span>
00519 <span class="comment"> * @param ptr pointer to an object</span>
00520 <span class="comment"> *</span>
00521 <span class="comment"> * @param constructor constructor of the class for the object</span>
00522 <span class="comment"> *</span>
00523 <span class="comment">********************************************************/</span>
<a name="l00524"></a><a class="code" href="group__osclmemory.html#a53">00524</a> <span class="preprocessor">#define OSCL_PLACEMENT_NEW(ptr, constructor) new(ptr) constructor</span>
00525 <span class="preprocessor"></span>
00545 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00546 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_NEW(T_ptr,T,params) _OSCL_TRAP_NEW(_oscl_default_new(sizeof(T)),_oscl_free,T_ptr,T,params)</span>
00547 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span>
00548 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_NEW(T_ptr,T,params) _OSCL_TRAP_NEW(_oscl_default_audit_new(sizeof(T)),_oscl_audit_free,T_ptr,T,params)</span>
00549 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00550 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_NEW(T_ptr,T,params) _OSCL_TRAP_NEW(_oscl_default_audit_new(sizeof(T),__FILE__,__LINE__),_oscl_audit_free,T_ptr,T,params)</span>
00551 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00552"></a><a class="code" href="group__osclmemory.html#a54">00552</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_NEW(T_ptr,T,params) _OSCL_TRAP_NEW(_oscl_default_audit_new(sizeof(T)),_oscl_audit_free,T_ptr,T,params)</span>
00553 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00554 <span class="preprocessor"></span>
00555
00569 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00570 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_NEW(auditCB, T, params) new(_oscl_default_new(sizeof(T))) T params</span>
00571 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span>
00572 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_NEW(auditCB, T, params) new(_oscl_audit_new(sizeof(T),auditCB)) T params</span>
00573 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00574 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_NEW(auditCB, T, params) new(_oscl_audit_new(sizeof(T),auditCB,__FILE__,__LINE__)) T params</span>
00575 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00576"></a><a class="code" href="group__osclmemory.html#a55">00576</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_NEW(auditCB, T, params) new(_oscl_audit_new(sizeof(T),auditCB)) T params</span>
00577 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00578 <span class="preprocessor"></span>
00598 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00599 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_AUDIT_NEW(T_ptr,auditCB,T,params) _OSCL_TRAP_NEW(_oscl_default_new(sizeof(T)),_oscl_free,T_ptr,T,params)</span>
00600 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span>
00601 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_AUDIT_NEW(T_ptr,auditCB,T,params) _OSCL_TRAP_NEW(_oscl_audit_new(sizeof(T),auditCB),_oscl_audit_free,T_ptr,T,params)</span>
00602 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00603 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_AUDIT_NEW(T_ptr,auditCB,T,params) _OSCL_TRAP_NEW(_oscl_audit_new(sizeof(T),auditCB,__FILE__,__LINE__),_oscl_audit_free,T_ptr,T,params)</span>
00604 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00605"></a><a class="code" href="group__osclmemory.html#a56">00605</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_TRAP_AUDIT_NEW(T_ptr,auditCB,T,params) _OSCL_TRAP_NEW(_oscl_audit_new(sizeof(T),auditCB),_oscl_audit_free,T_ptr,T,params)</span>
00606 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00607 <span class="preprocessor"></span>
<a name="l00615"></a><a class="code" href="group__osclmemory.html#a57">00615</a> <span class="preprocessor">#define OSCL_DELETE(ptr) {\</span>
00616 <span class="preprocessor"> if(ptr){delete(ptr);}\</span>
00617 <span class="preprocessor">}</span>
00618 <span class="preprocessor"></span>
00619
00643 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00644 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_ARRAY_NEW(auditCB, T, count) new(_oscl_default_new(sizeof(T)*(count))) T</span>
00645 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span>
00646 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_ARRAY_NEW(auditCB, T, count) new(_oscl_audit_new(sizeof(T)*(count),auditCB)) T</span>
00647 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00648 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_ARRAY_NEW(auditCB, T, count) new(_oscl_audit_new(sizeof(T)*(count),auditCB,__FILE__,__LINE__)) T</span>
00649 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00650"></a><a class="code" href="group__osclmemory.html#a58">00650</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_ARRAY_NEW(auditCB, T, count) new(_oscl_audit_new(sizeof(T)*(count),auditCB)) T</span>
00651 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00652 <span class="preprocessor"></span>
00666 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00667 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ARRAY_NEW(T, count) new T[count]</span>
00668 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span>
00669 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ARRAY_NEW(T, count) new T[count]</span>
00670 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00671 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ARRAY_NEW(T, count) new(__FILE__,__LINE__) T[count]</span>
00672 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00673"></a><a class="code" href="group__osclmemory.html#a59">00673</a> <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ARRAY_NEW(T, count) new T[count]</span>
00674 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00675 <span class="preprocessor"></span>
<a name="l00683"></a><a class="code" href="group__osclmemory.html#a60">00683</a> <span class="preprocessor">#define OSCL_ARRAY_DELETE(ptr) delete [] ptr</span>
00684 <span class="preprocessor"></span>
00685
00690 <span class="preprocessor">#ifndef OSCL_DEFALLOC_H_INCLUDED</span>
00691 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__defalloc_8h.html">oscl_defalloc.h</a>"</span>
00692 <span class="preprocessor">#endif</span>
00693 <span class="preprocessor"></span>
00694 <span class="preprocessor">#ifndef OSCL_REFCOUNTER_H_INCLUDED</span>
00695 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__refcounter_8h.html">oscl_refcounter.h</a>"</span>
00696 <span class="preprocessor">#endif</span>
00697 <span class="preprocessor"></span>
00698 <span class="preprocessor">#ifndef OSCL_MEM_BASIC_FUNCTIONS_H_INCLUDED</span>
00699 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__mem__basic__functions_8h.html">oscl_mem_basic_functions.h</a>"</span>
00700 <span class="preprocessor">#endif</span>
00701 <span class="preprocessor"></span>
00702 <span class="preprocessor">#ifndef OSCL_ERROR_H_INCLUDED</span>
00703 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__error_8h.html">oscl_error.h</a>"</span>
00704 <span class="preprocessor">#endif</span>
00705 <span class="preprocessor"></span>
00706 <span class="preprocessor">#ifndef OSCL_EXCEPTION_H_INCLUDED</span>
00707 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__exception_8h.html">oscl_exception.h</a>"</span>
00708 <span class="preprocessor">#endif</span>
00709 <span class="preprocessor"></span>
<a name="l00710"></a><a class="code" href="oscl__mem_8h.html#a28">00710</a> <span class="preprocessor">#define OSCL_DISABLE_WARNING_TRUNCATE_DEBUG_MESSAGE</span>
00711 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="osclconfig__compiler__warnings_8h.html">osclconfig_compiler_warnings.h</a>"</span>
00712
00713 <span class="comment">// This macro is defined is osclconfig_compiler_warnings.h</span>
00714 <span class="comment">// This GCC #pragma turns off compiler warning for the rest of this header file</span>
00715 <span class="comment">// This needs to be done because with the GCC 4.1 toolchain, many compiler warnings</span>
00716 <span class="comment">// are generated because Oscl_MemAllocator and Oscl_MemBasicAllocator have virtual functions, but</span>
00717 <span class="comment">// no virtual destructor.</span>
00718 <span class="comment">// An attempt has been made to add the virtual destructors, however, it resulted</span>
00719 <span class="comment">// in run time crashes indicative of double freeing of memory.</span>
00720 <span class="comment">// This is a temporary fix, until the crashes are resolved.</span>
00721 <span class="comment">//</span>
00722 <span class="preprocessor">#ifdef OSCL_DISABLE_GCC_WARNING_SYSTEM_HEADER</span>
00723 <span class="preprocessor"></span><span class="preprocessor">#pragma GCC system_header</span>
00724 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00725 <span class="preprocessor"></span>
<a name="l00731"></a><a class="code" href="classOsclMemAllocator.html">00731</a> <span class="keyword">class </span><a class="code" href="classOsclMemAllocator.html">OsclMemAllocator</a> : <span class="keyword">public</span> <a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a>
00732 {
00733 <span class="keyword">public</span>:
<a name="l00740"></a><a class="code" href="classOsclMemAllocator.html#a0">00740</a> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOsclMemAllocator.html#a0">allocate</a>(<span class="keyword">const</span> uint32 n)
00741 {
00742 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00743 <span class="preprocessor"></span> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* p = <a class="code" href="group__osclmemory.html#a7">_oscl_malloc</a>(n);
00744 <span class="keywordflow">if</span> (!p)
00745 <a class="code" href="classOsclError.html#d8">OsclError::LeaveIfNull</a>(p);
00746 <span class="preprocessor">#if OSCL_MEM_FILL_WITH_PATTERN</span>
00747 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a14">oscl_memset</a>(p, 0x55, n);
00748 <span class="preprocessor">#endif</span>
00749 <span class="preprocessor"></span> <span class="keywordflow">return</span> (p);
00750 <span class="preprocessor">#elif (PVMEM_INST_LEVEL&gt;0)</span>
00751 <span class="preprocessor"></span> <span class="comment">//this is really a usage error-- caller should provide file &amp; line.</span>
00752 <span class="comment">//set a debug breakpoint here...</span>
00753 <span class="keywordflow">return</span> <a class="code" href="classOsclMemAllocator.html#a1">allocate_fl</a>(n, __FILE__, __LINE__);
00754 <span class="preprocessor">#else</span>
00755 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="classOsclMemAllocator.html#a1">allocate_fl</a>(n, <a class="code" href="group__osclbase.html#a81">NULL</a>, 0);
00756 <span class="preprocessor">#endif</span>
00757 <span class="preprocessor"></span> }
00758
00759 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
<a name="l00760"></a><a class="code" href="classOsclMemAllocator.html#a1">00760</a> <span class="preprocessor"></span> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOsclMemAllocator.html#a1">allocate_fl</a>(<span class="keyword">const</span> uint32 n, <span class="keyword">const</span> <span class="keywordtype">char</span> * file_name, <span class="keyword">const</span> <span class="keywordtype">int</span> line_num)
00761 {
00762 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* p = <a class="code" href="group__osclmemory.html#a22">_oscl_default_audit_malloc</a>(n, file_name, line_num);
00763 <span class="keywordflow">if</span> (!p)
00764 <a class="code" href="classOsclError.html#d8">OsclError::LeaveIfNull</a>(p);
00765 <span class="preprocessor">#if OSCL_MEM_FILL_WITH_PATTERN</span>
00766 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a14">oscl_memset</a>(p, 0x55, n);
00767 <span class="preprocessor">#endif</span>
00768 <span class="preprocessor"></span> <span class="keywordflow">return</span> (p);
00769 }
00770 <span class="preprocessor">#endif</span>
00771 <span class="preprocessor"></span>
<a name="l00772"></a><a class="code" href="classOsclMemAllocator.html#a2">00772</a> <span class="keywordtype">void</span> <a class="code" href="classOsclMemAllocator.html#a2">deallocate</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p)
00773 {
00774 <span class="keywordflow">if</span> (p)
00775 <a class="code" href="group__osclmemory.html#a49">OSCL_FREE</a>(p);
00776 }
00777 };
00778
00779
<a name="l00787"></a><a class="code" href="classOsclMemBasicAllocator.html">00787</a> <span class="keyword">class </span><a class="code" href="classOsclMemBasicAllocator.html">OsclMemBasicAllocator</a> : <span class="keyword">public</span> <a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a>
00788 {
00789 <span class="keyword">public</span>:
<a name="l00796"></a><a class="code" href="classOsclMemBasicAllocator.html#a0">00796</a> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOsclMemBasicAllocator.html#a0">allocate</a>(<span class="keyword">const</span> uint32 n)
00797 {
00798 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* p = <a class="code" href="group__osclmemory.html#a7">_oscl_malloc</a>(n);
00799 <a class="code" href="classOsclError.html#d8">OsclError::LeaveIfNull</a>(p);
00800 <span class="preprocessor">#if OSCL_MEM_FILL_WITH_PATTERN</span>
00801 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a14">oscl_memset</a>(p, 0x55, n);
00802 <span class="preprocessor">#endif</span>
00803 <span class="preprocessor"></span> <span class="keywordflow">return</span> (p);
00804 }
00805
<a name="l00806"></a><a class="code" href="classOsclMemBasicAllocator.html#a1">00806</a> <span class="keywordtype">void</span> <a class="code" href="classOsclMemBasicAllocator.html#a1">deallocate</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p)
00807 {
00808 <span class="keywordflow">if</span> (p)
00809 <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(p);
00810 }
00811 };
00812
<a name="l00817"></a><a class="code" href="classOsclMemAllocDestructDealloc.html">00817</a> <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span><a class="code" href="classOsclMemAllocDestructDealloc.html">OsclMemAllocDestructDealloc</a> : <span class="keyword">public</span> <a class="code" href="classOsclAllocDestructDealloc.html">OsclAllocDestructDealloc</a>
00818 {
00819 <span class="keyword">public</span>:
00820 <span class="preprocessor">#if !(OSCL_BYPASS_MEMMGT)</span>
<a name="l00821"></a><a class="code" href="classOsclMemAllocDestructDealloc.html#a0">00821</a> <span class="preprocessor"></span> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOsclMemAllocDestructDealloc.html#a0">allocate_fl</a>(<span class="keyword">const</span> uint32 size, <span class="keyword">const</span> <span class="keywordtype">char</span> * file_name, <span class="keyword">const</span> <span class="keywordtype">int</span> line_num)
00822 {
00823 <span class="keywordflow">return</span> alloc.<a class="code" href="classOsclMemAllocator.html#a1">allocate_fl</a>(size, file_name, line_num);
00824 }
00825 <span class="preprocessor">#endif</span>
<a name="l00826"></a><a class="code" href="classOsclMemAllocDestructDealloc.html#a1">00826</a> <span class="preprocessor"></span> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOsclMemAllocDestructDealloc.html#a1">allocate</a>(<span class="keyword">const</span> uint32 size)
00827 {
00828 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00829 <span class="preprocessor"></span> <span class="keywordflow">return</span> alloc.<a class="code" href="classOsclMemAllocator.html#a0">allocate</a>(size);
00830 <span class="preprocessor">#elif(PVMEM_INST_LEVEL&gt;0)</span>
00831 <span class="preprocessor"></span> <span class="comment">//this is really a usage error-- caller should provide file &amp; line.</span>
00832 <span class="comment">//set a debug breakpoint here...</span>
00833 <span class="keywordflow">return</span> <a class="code" href="classOsclMemAllocDestructDealloc.html#a0">allocate_fl</a>(size, __FILE__, __LINE__);
00834 <span class="preprocessor">#else</span>
00835 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="classOsclMemAllocDestructDealloc.html#a0">allocate_fl</a>(size, <a class="code" href="group__osclbase.html#a81">NULL</a>, 0);
00836 <span class="preprocessor">#endif</span>
00837 <span class="preprocessor"></span> }
<a name="l00838"></a><a class="code" href="classOsclMemAllocDestructDealloc.html#a2">00838</a> <span class="keywordtype">void</span> <a class="code" href="classOsclMemAllocDestructDealloc.html#a2">deallocate</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p)
00839 {
00840 alloc.<a class="code" href="classOsclMemAllocator.html#a2">deallocate</a>(p);
00841 }
<a name="l00842"></a><a class="code" href="classOsclMemAllocDestructDealloc.html#a3">00842</a> <span class="keywordtype">void</span> <a class="code" href="classOsclMemAllocDestructDealloc.html#a3">destruct_and_dealloc</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p)
00843 {
00844 T* ptr = reinterpret_cast&lt;T*&gt;(p);
00845 ptr-&gt;~T();
00846 <a class="code" href="classOsclMemAllocDestructDealloc.html#a2">deallocate</a>(p);
00847 <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(ptr); <span class="comment">// removes warning on some compilers</span>
00848 }
00849 <span class="keyword">private</span>:
00850 <a class="code" href="classOsclMemAllocator.html">OsclMemAllocator</a> alloc;
00851 };
00852
<a name="l00857"></a><a class="code" href="classOsclMemBasicAllocDestructDealloc.html">00857</a> <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span><a class="code" href="classOsclMemBasicAllocDestructDealloc.html">OsclMemBasicAllocDestructDealloc</a> : <span class="keyword">public</span> <a class="code" href="classOsclAllocDestructDealloc.html">OsclAllocDestructDealloc</a>
00858 {
00859 <span class="keyword">public</span>:
<a name="l00860"></a><a class="code" href="classOsclMemBasicAllocDestructDealloc.html#a0">00860</a> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOsclMemBasicAllocDestructDealloc.html#a0">allocate</a>(<span class="keyword">const</span> uint32 size)
00861 {
00862 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span>
00863 <span class="preprocessor"></span> <span class="keywordflow">return</span> alloc.<a class="code" href="classOsclMemBasicAllocator.html#a0">allocate</a>(size);
00864 <span class="preprocessor">#else</span>
00865 <span class="preprocessor"></span> <span class="keywordflow">return</span> alloc.<a class="code" href="classOscl__DefAlloc.html#a1">allocate_fl</a>(size, <a class="code" href="group__osclbase.html#a81">NULL</a>, 0);
00866 <span class="preprocessor">#endif</span>
00867 <span class="preprocessor"></span> }
<a name="l00868"></a><a class="code" href="classOsclMemBasicAllocDestructDealloc.html#a1">00868</a> <span class="keywordtype">void</span> <a class="code" href="classOsclMemBasicAllocDestructDealloc.html#a1">deallocate</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p)
00869 {
00870 alloc.<a class="code" href="classOsclMemBasicAllocator.html#a1">deallocate</a>(p);
00871 }
<a name="l00872"></a><a class="code" href="classOsclMemBasicAllocDestructDealloc.html#a2">00872</a> <span class="keywordtype">void</span> <a class="code" href="classOsclMemBasicAllocDestructDealloc.html#a2">destruct_and_dealloc</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p)
00873 {
00874 T* ptr = reinterpret_cast&lt;T*&gt;(p);
00875 ptr-&gt;~T();
00876 <a class="code" href="classOsclMemBasicAllocDestructDealloc.html#a1">deallocate</a>(p);
00877 <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(ptr); <span class="comment">// removes warning on some compilers</span>
00878 }
00879 <span class="keyword">private</span>:
00880 <a class="code" href="classOsclMemBasicAllocator.html">OsclMemBasicAllocator</a> alloc;
00881 };
00882
00887 <span class="keyword">class </span><a class="code" href="classOsclMemAudit.html">OsclMemAudit</a>;
<a name="l00888"></a><a class="code" href="classOsclMemGlobalAuditObject.html">00888</a> <span class="keyword">class </span><a class="code" href="classOsclMemGlobalAuditObject.html">OsclMemGlobalAuditObject</a>
00889 {
00890 <span class="keyword">public</span>:
<a name="l00891"></a><a class="code" href="classOsclMemGlobalAuditObject.html#s0">00891</a> <span class="keyword">typedef</span> <a class="code" href="classOsclMemAudit.html">OsclMemAudit</a> <a class="code" href="classOsclMemAudit.html">audit_type</a>;
00896 OSCL_IMPORT_REF <span class="keyword">static</span> audit_type* <a class="code" href="classOsclMemGlobalAuditObject.html#d0">getGlobalMemAuditObject</a>();
00897
00898 <span class="keyword">private</span>:
00902 <span class="keyword">static</span> <span class="keywordtype">void</span> createGlobalMemAuditObject();
00903
00907 <span class="keyword">static</span> <span class="keywordtype">void</span> deleteGlobalMemAuditObject();
00908
<a name="l00909"></a><a class="code" href="classOsclMemGlobalAuditObject.html#l0">00909</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclMem.html">OsclMem</a>;
00910 };
00911
<a name="l00923"></a><a class="code" href="classHeapBase.html">00923</a> <span class="keyword">class </span><a class="code" href="classHeapBase.html">HeapBase</a> : <span class="keyword">public</span> <a class="code" href="class__OsclHeapBase.html">_OsclHeapBase</a>
00924 {
00925 <span class="keyword">public</span>:
00926 <span class="preprocessor">#if (OSCL_HAS_HEAP_BASE_SUPPORT)</span>
00927 <span class="preprocessor"></span>
00928 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00929 <span class="preprocessor"></span> <span class="keyword">static</span> <span class="keywordtype">void</span>* <a class="code" href="oscl__mem_8h.html#a43">operator new</a>(size_t aSize, <span class="keyword">const</span> <span class="keywordtype">char</span> *aFile = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> aLine = 0)
00930 {
00931 <span class="preprocessor">#if(PVMEM_INST_LEVEL&gt;0)</span>
00932 <span class="preprocessor"></span> <span class="comment">//in case NULL is passed in, record this file &amp; line #</span>
00933 <span class="keywordflow">if</span> (!aFile)
00934 <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__);
00935 <span class="preprocessor">#endif</span>
00936 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, aFile, aLine);
00937 }
00938 <span class="preprocessor">#else</span>
00939 <span class="preprocessor"></span> <span class="keyword">static</span> <span class="keywordtype">void</span>* <a class="code" href="oscl__mem_8h.html#a43">operator new</a>(size_t aSize)
00940 {
00941 <span class="keywordflow">return</span> _oscl_default_new(aSize);
00942 }
00943 <span class="preprocessor">#endif</span>
00944 <span class="preprocessor"></span>
00945 <span class="keyword">static</span> <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a31">operator new[]</a>(size_t aSize)
00946 {
00947 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00948 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize);
00949 <span class="preprocessor">#else</span>
00950 <span class="preprocessor"></span> <span class="keywordflow">return</span> _oscl_default_new(aSize);
00951 <span class="preprocessor">#endif</span>
00952 <span class="preprocessor"></span> }
00953
00954 <span class="keyword">static</span> <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a31">operator new[]</a>(size_t aSize, <span class="keyword">const</span> <span class="keywordtype">char</span> *aFile = <a class="code" href="group__osclbase.html#a81">NULL</a>, <span class="keyword">const</span> <span class="keywordtype">int</span> aLine = 0)
00955 {
00956 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00957 <span class="preprocessor"></span><span class="preprocessor">#if(PVMEM_INST_LEVEL&gt;0)</span>
00958 <span class="preprocessor"></span> <span class="comment">//in case NULL is passed in, record this file &amp; line #</span>
00959 <span class="keywordflow">if</span> (!aFile)
00960 <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__);
00961 <span class="preprocessor">#endif</span>
00962 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, aFile, aLine);
00963 <span class="preprocessor">#else</span>
00964 <span class="preprocessor"></span> <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(aFile);
00965 <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(aLine);
00966 <span class="keywordflow">return</span> _oscl_default_new(aSize);
00967 <span class="preprocessor">#endif</span>
00968 <span class="preprocessor"></span> }
00969
00970 <span class="keyword">static</span> <span class="keywordtype">void</span>* <a class="code" href="oscl__mem_8h.html#a43">operator new</a>(size_t aSize, <span class="keywordtype">void</span> *aPtr)
00971 {
00972 <span class="keywordflow">return</span> aPtr;
00973 }
00974
00975 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="oscl__mem_8h.html#a44">operator delete</a>(<span class="keywordtype">void</span>* aPtr)
00976 {
00977 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00978 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(aPtr);
00979 <span class="preprocessor">#else</span>
00980 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(aPtr);
00981 <span class="preprocessor">#endif</span>
00982 <span class="preprocessor"></span> }
00983
00984 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__osclmemory.html#a32">operator delete[]</a>(<span class="keywordtype">void</span>* aPtr)
00985 {
00986 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span>
00987 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(aPtr);
00988 <span class="preprocessor">#else</span>
00989 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(aPtr);
00990 <span class="preprocessor">#endif</span>
00991 <span class="preprocessor"></span> }
00992 <span class="preprocessor">#endif //OSCL_HAS_HEAP_BASE_SUPPORT</span>
<a name="l00993"></a><a class="code" href="classHeapBase.html#a0">00993</a> <span class="preprocessor"></span> <a class="code" href="classHeapBase.html#a0">HeapBase</a>() {};
<a name="l00994"></a><a class="code" href="classHeapBase.html#a1">00994</a> <span class="keyword">virtual</span> <a class="code" href="classHeapBase.html#a1">~HeapBase</a>() {};
00995 };
00996
<a name="l01013"></a><a class="code" href="group__osclmemory.html#a61">01013</a> <span class="preprocessor">#define _OSCL_TRAP_NEW(exp,freeFunc,T_ptr,T,params)\</span>
01014 <span class="preprocessor">{\</span>
01015 <span class="preprocessor"> int32 __err;\</span>
01016 <span class="preprocessor"> OsclAny*__ptr=exp;\</span>
01017 <span class="preprocessor"> OSCL_TRY(__err,T_ptr=new(__ptr) T params;);\</span>
01018 <span class="preprocessor"> if(__err){\</span>
01019 <span class="preprocessor"> freeFunc(__ptr);\</span>
01020 <span class="preprocessor"> T_ptr=NULL;\</span>
01021 <span class="preprocessor"> OsclError::Leave(__err);\</span>
01022 <span class="preprocessor"> }\</span>
01023 <span class="preprocessor">}</span>
01024 <span class="preprocessor"></span>
01032 <span class="preprocessor">#ifdef PVERROR_IMP_CPP_EXCEPTIONS</span>
01033 <span class="preprocessor"></span><span class="comment">//when using C++ exceptions, base class cleanup is automatic</span>
01034 <span class="preprocessor">#define _OSCL_CLEANUP_BASE_CLASS(T)</span>
01035 <span class="preprocessor"></span><span class="preprocessor">#else</span>
01036 <span class="preprocessor"></span><span class="comment">//otherwise the destructor needs to be called explicitly.</span>
<a name="l01037"></a><a class="code" href="group__osclmemory.html#a62">01037</a> <span class="preprocessor">#define _OSCL_CLEANUP_BASE_CLASS(T) this-&gt;T::~T()</span>
01038 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
01039 <span class="preprocessor"></span>
01040
01044 <span class="preprocessor">#if (!OSCL_DISABLE_INLINES)</span>
01045 <span class="preprocessor"></span><span class="preprocessor">#include "oscl_mem.inl"</span>
01046 <span class="preprocessor">#endif</span>
01047 <span class="preprocessor"></span>
01048 <span class="preprocessor">#endif // OSCL_MEM_H_INCLUDED</span>
01049 <span class="preprocessor"></span>
01050
01051
</pre></div><hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small>
<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small>
</small></address>
</body>
</html>