1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> 3<title>oscl_mem.h Source File</title> 4<link href="doxygen.css" rel="stylesheet" type="text/css"> 5</head><body> 6<!-- Generated by Doxygen 1.2.18 --> 7<center> 8<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="globals.html">Globals</a> </center> 9<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> 1000002 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span> 1100003 1200004 <span class="comment">// O S C L _ M E M</span> 1300005 1400006 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span> 1500007 1600022 <span class="preprocessor">#ifndef OSCL_MEM_H_INCLUDED</span> 1700023 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_MEM_H_INCLUDED</span> 1800024 <span class="preprocessor"></span> 1900025 <span class="preprocessor">#ifndef OSCLCONFIG_MEMORY_H_INCLUDED</span> 2000026 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="osclconfig__memory_8h.html">osclconfig_memory.h</a>"</span> 2100027 <span class="preprocessor">#endif</span> 2200028 <span class="preprocessor"></span> 2300029 <span class="preprocessor">#ifndef OSCL_BASE_H_INCLUDED</span> 2400030 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__base_8h.html">oscl_base.h</a>"</span> 2500031 <span class="preprocessor">#endif</span> 2600032 <span class="preprocessor"></span> 2700033 <span class="preprocessor">#ifndef OSCL_TYPES_H_INCLUDE</span> 2800034 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__types_8h.html">oscl_types.h</a>"</span> 2900035 <span class="preprocessor">#endif</span> 3000036 <span class="preprocessor"></span> 3100037 <span class="preprocessor">#ifndef OSCL_ASSERT_H_INCLUDED</span> 3200038 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__assert_8h.html">oscl_assert.h</a>"</span> 3300039 <span class="preprocessor">#endif</span> 3400040 <span class="preprocessor"></span> 3500041 <span class="preprocessor">#ifndef OSCL_MEM_BASIC_FUNCTIONS_H</span> 3600042 <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> 3700043 <span class="preprocessor">#endif</span> 3800044 <span class="preprocessor"></span> 3900045 <span class="preprocessor">#ifndef OSCL_LOCK_BASE_H_INCLUDED</span> 4000046 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__lock__base_8h.html">oscl_lock_base.h</a>"</span> 4100047 <span class="preprocessor">#endif</span> 4200048 <span class="preprocessor"></span> 4300049 <span class="preprocessor">#define OSCL_DISABLE_WARNING_TRUNCATE_DEBUG_MESSAGE</span> 4400050 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="osclconfig__compiler__warnings_8h.html">osclconfig_compiler_warnings.h</a>"</span> 4500051 4600052 <span class="preprocessor">#ifndef OSCL_MEM_INST_H_INCLUDED</span> 4700053 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__mem__inst_8h.html">oscl_mem_inst.h</a>"</span> 4800054 <span class="preprocessor">#endif</span> 4900055 <span class="preprocessor"></span> 5000056 <span class="preprocessor">#ifndef OSCL_HEAPBASE_H_INCLUDED</span> 5100057 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__heapbase_8h.html">oscl_heapbase.h</a>"</span> 5200058 <span class="preprocessor">#endif</span> 5300059 <span class="preprocessor"></span> 5400060 <span class="comment">//Default for OSCL_HAS_GLOBAL_NEW_DELETE in case it is *not* defined</span> 5500061 <span class="comment">//in the osclconfig_memory.h</span> 5600062 <span class="preprocessor">#ifndef OSCL_HAS_GLOBAL_NEW_DELETE</span> 5700063 <span class="preprocessor"></span><span class="preprocessor">#ifdef NDEBUG</span> 5800064 <span class="preprocessor"></span><span class="comment">//Release Mode - No definition for global new and delete.</span> 5900065 <span class="preprocessor">#define OSCL_HAS_GLOBAL_NEW_DELETE 0</span> 6000066 <span class="preprocessor"></span><span class="preprocessor">#else</span> 6100067 <span class="preprocessor"></span><span class="comment">//Debug Mode - Define global new and delete.</span> 62<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> 6300069 <span class="preprocessor"></span><span class="preprocessor">#endif //NDEBUG</span> 6400070 <span class="preprocessor"></span><span class="preprocessor">#endif //OSCL_HAS_GLOBAL_NEW_DELETE</span> 6500071 <span class="preprocessor"></span> 66<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> 6700073 { 6800074 <span class="keyword">public</span>: 6900084 OSCL_IMPORT_REF <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classOsclMem.html#d0">Init</a>(); 7000085 7100089 OSCL_IMPORT_REF <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classOsclMem.html#d1">Cleanup</a>(); 7200090 7300091 }; 7400092 7500093 <span class="comment">/*</span> 7600094 <span class="comment">** Choose whether to use per-thread or singleton registry for auditing</span> 7700095 <span class="comment">*/</span> 7800096 <span class="preprocessor">#include "<a class="code" href="oscl__base_8h.html">oscl_base.h</a>"</span> 7900097 8000098 <span class="comment">/*</span> 8100099 <span class="comment">** Audit control block</span> 8200100 <span class="comment">*/</span> 8300101 <span class="preprocessor">#if (OSCL_BYPASS_MEMMGT)</span> 8400102 <span class="preprocessor"></span><span class="comment">//empty class for compilation only</span> 8500103 <span class="keyword">class </span><a class="code" href="classOsclAuditCB.html">OsclAuditCB</a> 8600104 { 8700105 <span class="keyword">public</span>: 8800106 }; 8900107 <span class="preprocessor">#else</span> 9000108 <span class="preprocessor"></span><span class="keyword">class </span><a class="code" href="classOsclMemStatsNode.html">OsclMemStatsNode</a>; 9100109 <span class="keyword">class </span><a class="code" href="classOsclMemAudit.html">OsclMemAudit</a>; 92<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> 9300111 { 9400112 <span class="keyword">public</span>: 95<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>; 96<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>; 9700115 98<a name="l00116"></a><a class="code" href="classOsclAuditCB.html#a0">00116</a> <a class="code" href="classOsclAuditCB.html#a0">OsclAuditCB</a>() : 9900117 pStatsNode(<a class="code" href="group__osclbase.html#a81">NULL</a>), 10000118 pAudit(<a class="code" href="group__osclbase.html#a81">NULL</a>) 10100119 {} 10200120 103<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, 10400122 <a class="code" href="classOsclMemAudit.html">OsclMemAudit</a> *ptr) 10500123 : 10600124 pStatsNode(myStatsNode), 10700125 pAudit(ptr) 10800126 { 10900127 } 11000128 }; 11100129 <span class="preprocessor">#endif//OSCL_BYPASS_MEMMGT</span> 11200130 <span class="preprocessor"></span> 11300138 <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); 11400139 11500147 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> & auditCB); 11600148 117<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> 11800157 <span class="preprocessor"></span> 11900175 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 12000176 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ALLOC_NEW(T_allocator, T, params) new(T_allocator.allocate(1)) T params</span> 12100177 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 12200178 <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> 12300179 <span class="preprocessor"></span><span class="preprocessor">#else</span> 124<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> 12500181 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 12600182 <span class="preprocessor"></span> 12700204 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 12800205 <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> 12900206 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 13000207 <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> 13100208 <span class="preprocessor"></span><span class="preprocessor">#else</span> 132<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> 13300210 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 13400211 <span class="preprocessor"></span> 135<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> 13600222 <span class="preprocessor"> {\</span> 13700223 <span class="preprocessor"> ptr->~T();\</span> 13800224 <span class="preprocessor"> T_allocator.deallocate(ptr);\</span> 13900225 <span class="preprocessor"> }</span> 14000226 <span class="preprocessor"></span> 14100227 14200232 <span class="comment">//These are for internal use but need to be visible since they're used</span> 14300233 <span class="comment">//in macros.</span> 14400234 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 14500235 <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> & , <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); 14600236 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> & , <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); 14700237 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> & , <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); 14800238 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> & , <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) ; 14900239 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); 15000240 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); 15100241 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); 15200242 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) ; 15300243 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> *); 15400244 <span class="preprocessor">#else</span> 15500245 <span class="preprocessor"></span>OSCL_IMPORT_REF <span class="keywordtype">void</span>* _oscl_default_new(size_t nBytes); 15600246 <span class="preprocessor">#endif//OSCL_BYPASS_MEMMGT</span> 15700247 <span class="preprocessor"></span> 15800248 <span class="preprocessor">#if (OSCL_HAS_GLOBAL_NEW_DELETE)</span> 15900249 <span class="preprocessor"></span><span class="comment">//Global New operator overloaded to check native new operators called</span> 16000250 16100251 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 162<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) 16300253 { 16400254 <span class="preprocessor">#if(PVMEM_INST_LEVEL>0)</span> 16500255 <span class="preprocessor"></span> <span class="comment">//in case NULL is passed in, record this file & line #</span> 16600256 <span class="keywordflow">if</span> (!aFile) 16700257 <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__); 16800258 <span class="preprocessor">#endif</span> 16900259 <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); 17000260 }; 17100261 <span class="preprocessor">#endif</span> 17200262 <span class="preprocessor"></span> 173<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) 17400264 { 17500265 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 17600266 <span class="preprocessor"></span><span class="preprocessor">#if(PVMEM_INST_LEVEL>0)</span> 17700267 <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__); 17800268 <span class="preprocessor">#else</span> 17900269 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize); 18000270 <span class="preprocessor">#endif</span> 18100271 <span class="preprocessor"></span><span class="preprocessor">#else</span> 18200272 <span class="preprocessor"></span> <span class="keywordflow">return</span> _oscl_default_new(aSize); 18300273 <span class="preprocessor">#endif</span> 18400274 <span class="preprocessor"></span>}; 18500275 186<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) 18700277 { 18800278 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 18900279 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(aPtr); 19000280 <span class="preprocessor">#else</span> 19100281 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(aPtr); 19200282 <span class="preprocessor">#endif</span> 19300283 <span class="preprocessor"></span>}; 19400284 19500285 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 196<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) 19700287 { 19800288 <span class="preprocessor">#if(PVMEM_INST_LEVEL>0)</span> 19900289 <span class="preprocessor"></span> <span class="comment">//in case NULL is passed in, record this file & line #</span> 20000290 <span class="keywordflow">if</span> (!aFile) 20100291 <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__); 20200292 <span class="preprocessor">#endif</span> 20300293 <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); 20400294 }; 20500295 <span class="preprocessor">#endif</span> 20600296 <span class="preprocessor"></span> 207<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) 20800298 { 20900299 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 21000300 <span class="preprocessor"></span><span class="preprocessor">#if(PVMEM_INST_LEVEL>0)</span> 21100301 <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__); 21200302 <span class="preprocessor">#else</span> 21300303 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize); 21400304 <span class="preprocessor">#endif</span> 21500305 <span class="preprocessor"></span><span class="preprocessor">#else</span> 21600306 <span class="preprocessor"></span> <span class="keywordflow">return</span> _oscl_default_new(aSize); 21700307 <span class="preprocessor">#endif</span> 21800308 <span class="preprocessor"></span>}; 21900309 220<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) 22100311 { 22200312 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 22300313 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(aPtr); 22400314 <span class="preprocessor">#else</span> 22500315 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(aPtr); 22600316 <span class="preprocessor">#endif</span> 22700317 <span class="preprocessor"></span>}; 22800318 <span class="preprocessor">#endif //OSCL_HAS_GLOBAL_NEW_DELETE</span> 22900319 <span class="preprocessor"></span> 23000331 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 23100332 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_MALLOC(count) _oscl_malloc(count)</span> 23200333 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 23300334 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_MALLOC(count) _oscl_default_audit_malloc(count,__FILE__,__LINE__)</span> 23400335 <span class="preprocessor"></span><span class="preprocessor">#else</span> 235<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> 23600337 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 23700338 <span class="preprocessor"></span> 23800339 <span class="comment">/*</span> 23900340 <span class="comment">** The public oscl_malloc call has been deprecated.</span> 24000341 <span class="comment">** PV code should call OSCL_MALLOC.</span> 24100342 <span class="comment">** This macro is defined for back-compatibility.</span> 24200343 <span class="comment">*/</span> 243<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> 24400345 <span class="preprocessor"></span> 245<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> 24600350 <span class="preprocessor"></span> 24700362 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 24800363 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_MALLOC(auditCB, count) _oscl_malloc(count)</span> 24900364 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 25000365 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_MALLOC(auditCB, count) _oscl_audit_malloc(count, auditCB, __FILE__, __LINE__)</span> 25100366 <span class="preprocessor"></span><span class="preprocessor">#else</span> 252<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> 25300368 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 25400369 <span class="preprocessor"></span> 25500382 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 25600383 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_CALLOC(num,size) _oscl_calloc(num,size)</span> 25700384 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 25800385 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_CALLOC(num,size) _oscl_default_audit_calloc(num,size,__FILE__,__LINE__)</span> 25900386 <span class="preprocessor"></span><span class="preprocessor">#else</span> 260<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> 26100388 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 26200389 <span class="preprocessor"></span> 26300390 <span class="comment">/*</span> 26400391 <span class="comment">** The public oscl_calloc call has been deprecated.</span> 26500392 <span class="comment">** PV code should call OSCL_CALLOC.</span> 26600393 <span class="comment">** This macro is defined for back-compatibility.</span> 26700394 <span class="comment">*/</span> 268<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> 26900396 <span class="preprocessor"></span> 27000410 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 27100411 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_CALLOC(auditCB, num,size) _oscl_calloc(num,size)</span> 27200412 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 27300413 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_CALLOC(auditCB, num,size) _oscl_audit_calloc(num,size, auditCB, __FILE__, __LINE__)</span> 27400414 <span class="preprocessor"></span><span class="preprocessor">#else</span> 275<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> 27600416 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 27700417 <span class="preprocessor"></span> 27800430 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 27900431 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_REALLOC(ptr,new_size) _oscl_realloc(ptr,new_size)</span> 28000432 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 28100433 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_REALLOC(ptr,new_size) _oscl_default_audit_realloc(ptr,new_size,__FILE__,__LINE__)</span> 28200434 <span class="preprocessor"></span><span class="preprocessor">#else</span> 283<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> 28400436 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 28500437 <span class="preprocessor"></span> 28600438 <span class="comment">/*</span> 28700439 <span class="comment">** The public oscl_realloc call has been deprecated.</span> 28800440 <span class="comment">** PV code should call OSCL_REALLOC. This macro is</span> 28900441 <span class="comment">** defined for back-compatibility.</span> 29000442 <span class="comment">*/</span> 291<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> 29200444 <span class="preprocessor"></span> 29300458 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 29400459 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_REALLOC(auditCB, ptr,new_size) _oscl_realloc(ptr,new_size)</span> 29500460 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 29600461 <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> 29700462 <span class="preprocessor"></span><span class="preprocessor">#else</span> 298<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> 29900464 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 30000465 <span class="preprocessor"></span> 30100471 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 30200472 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_FREE(ptr) _oscl_free(ptr)</span> 30300473 <span class="preprocessor"></span><span class="preprocessor">#else</span> 304<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> 30500475 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 30600476 <span class="preprocessor"></span> 30700477 <span class="comment">/*</span> 30800478 <span class="comment">** The public oscl_free call has been deprecated.</span> 30900479 <span class="comment">** PV code should call OSCL_FREE.</span> 31000480 <span class="comment">** This macro is defined for back-compatibility.</span> 31100481 <span class="comment">*/</span> 312<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> 31300483 <span class="preprocessor"></span> 314<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> 31500488 <span class="preprocessor"></span> 31600506 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 31700507 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_NEW( T, params) new T params</span> 31800508 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span> 31900509 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_NEW( T, params) new T params</span> 32000510 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 32100511 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_NEW( T, params) new(__FILE__,__LINE__) T params</span> 32200512 <span class="preprocessor"></span><span class="preprocessor">#else</span> 323<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> 32400514 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 32500515 <span class="preprocessor"></span> 32600516 <span class="comment">/********************************************************</span> 32700517 <span class="comment"> * Macro for placement new</span> 32800518 <span class="comment"> *</span> 32900519 <span class="comment"> * @param ptr pointer to an object</span> 33000520 <span class="comment"> *</span> 33100521 <span class="comment"> * @param constructor constructor of the class for the object</span> 33200522 <span class="comment"> *</span> 33300523 <span class="comment">********************************************************/</span> 334<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> 33500525 <span class="preprocessor"></span> 33600545 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 33700546 <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> 33800547 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span> 33900548 <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> 34000549 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 34100550 <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> 34200551 <span class="preprocessor"></span><span class="preprocessor">#else</span> 343<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> 34400553 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 34500554 <span class="preprocessor"></span> 34600555 34700569 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 34800570 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_NEW(auditCB, T, params) new(_oscl_default_new(sizeof(T))) T params</span> 34900571 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span> 35000572 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_NEW(auditCB, T, params) new(_oscl_audit_new(sizeof(T),auditCB)) T params</span> 35100573 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 35200574 <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> 35300575 <span class="preprocessor"></span><span class="preprocessor">#else</span> 354<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> 35500577 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 35600578 <span class="preprocessor"></span> 35700598 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 35800599 <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> 35900600 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span> 36000601 <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> 36100602 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 36200603 <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> 36300604 <span class="preprocessor"></span><span class="preprocessor">#else</span> 364<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> 36500606 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 36600607 <span class="preprocessor"></span> 367<a name="l00615"></a><a class="code" href="group__osclmemory.html#a57">00615</a> <span class="preprocessor">#define OSCL_DELETE(ptr) {\</span> 36800616 <span class="preprocessor"> if(ptr){delete(ptr);}\</span> 36900617 <span class="preprocessor">}</span> 37000618 <span class="preprocessor"></span> 37100619 37200643 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 37300644 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_AUDIT_ARRAY_NEW(auditCB, T, count) new(_oscl_default_new(sizeof(T)*(count))) T</span> 37400645 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span> 37500646 <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> 37600647 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 37700648 <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> 37800649 <span class="preprocessor"></span><span class="preprocessor">#else</span> 379<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> 38000651 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 38100652 <span class="preprocessor"></span> 38200666 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 38300667 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ARRAY_NEW(T, count) new T[count]</span> 38400668 <span class="preprocessor"></span><span class="preprocessor">#elif!(OSCL_HAS_GLOBAL_NEW_DELETE)</span> 38500669 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ARRAY_NEW(T, count) new T[count]</span> 38600670 <span class="preprocessor"></span><span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 38700671 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_ARRAY_NEW(T, count) new(__FILE__,__LINE__) T[count]</span> 38800672 <span class="preprocessor"></span><span class="preprocessor">#else</span> 389<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> 39000674 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 39100675 <span class="preprocessor"></span> 392<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> 39300684 <span class="preprocessor"></span> 39400685 39500690 <span class="preprocessor">#ifndef OSCL_DEFALLOC_H_INCLUDED</span> 39600691 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__defalloc_8h.html">oscl_defalloc.h</a>"</span> 39700692 <span class="preprocessor">#endif</span> 39800693 <span class="preprocessor"></span> 39900694 <span class="preprocessor">#ifndef OSCL_REFCOUNTER_H_INCLUDED</span> 40000695 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__refcounter_8h.html">oscl_refcounter.h</a>"</span> 40100696 <span class="preprocessor">#endif</span> 40200697 <span class="preprocessor"></span> 40300698 <span class="preprocessor">#ifndef OSCL_MEM_BASIC_FUNCTIONS_H_INCLUDED</span> 40400699 <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> 40500700 <span class="preprocessor">#endif</span> 40600701 <span class="preprocessor"></span> 40700702 <span class="preprocessor">#ifndef OSCL_ERROR_H_INCLUDED</span> 40800703 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__error_8h.html">oscl_error.h</a>"</span> 40900704 <span class="preprocessor">#endif</span> 41000705 <span class="preprocessor"></span> 41100706 <span class="preprocessor">#ifndef OSCL_EXCEPTION_H_INCLUDED</span> 41200707 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__exception_8h.html">oscl_exception.h</a>"</span> 41300708 <span class="preprocessor">#endif</span> 41400709 <span class="preprocessor"></span> 415<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> 41600711 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="osclconfig__compiler__warnings_8h.html">osclconfig_compiler_warnings.h</a>"</span> 41700712 41800713 <span class="comment">// This macro is defined is osclconfig_compiler_warnings.h</span> 41900714 <span class="comment">// This GCC #pragma turns off compiler warning for the rest of this header file</span> 42000715 <span class="comment">// This needs to be done because with the GCC 4.1 toolchain, many compiler warnings</span> 42100716 <span class="comment">// are generated because Oscl_MemAllocator and Oscl_MemBasicAllocator have virtual functions, but</span> 42200717 <span class="comment">// no virtual destructor.</span> 42300718 <span class="comment">// An attempt has been made to add the virtual destructors, however, it resulted</span> 42400719 <span class="comment">// in run time crashes indicative of double freeing of memory.</span> 42500720 <span class="comment">// This is a temporary fix, until the crashes are resolved.</span> 42600721 <span class="comment">//</span> 42700722 <span class="preprocessor">#ifdef OSCL_DISABLE_GCC_WARNING_SYSTEM_HEADER</span> 42800723 <span class="preprocessor"></span><span class="preprocessor">#pragma GCC system_header</span> 42900724 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 43000725 <span class="preprocessor"></span> 431<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> 43200732 { 43300733 <span class="keyword">public</span>: 434<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) 43500741 { 43600742 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 43700743 <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); 43800744 <span class="keywordflow">if</span> (!p) 43900745 <a class="code" href="classOsclError.html#d8">OsclError::LeaveIfNull</a>(p); 44000746 <span class="preprocessor">#if OSCL_MEM_FILL_WITH_PATTERN</span> 44100747 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a14">oscl_memset</a>(p, 0x55, n); 44200748 <span class="preprocessor">#endif</span> 44300749 <span class="preprocessor"></span> <span class="keywordflow">return</span> (p); 44400750 <span class="preprocessor">#elif (PVMEM_INST_LEVEL>0)</span> 44500751 <span class="preprocessor"></span> <span class="comment">//this is really a usage error-- caller should provide file & line.</span> 44600752 <span class="comment">//set a debug breakpoint here...</span> 44700753 <span class="keywordflow">return</span> <a class="code" href="classOsclMemAllocator.html#a1">allocate_fl</a>(n, __FILE__, __LINE__); 44800754 <span class="preprocessor">#else</span> 44900755 <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); 45000756 <span class="preprocessor">#endif</span> 45100757 <span class="preprocessor"></span> } 45200758 45300759 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 454<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) 45500761 { 45600762 <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); 45700763 <span class="keywordflow">if</span> (!p) 45800764 <a class="code" href="classOsclError.html#d8">OsclError::LeaveIfNull</a>(p); 45900765 <span class="preprocessor">#if OSCL_MEM_FILL_WITH_PATTERN</span> 46000766 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a14">oscl_memset</a>(p, 0x55, n); 46100767 <span class="preprocessor">#endif</span> 46200768 <span class="preprocessor"></span> <span class="keywordflow">return</span> (p); 46300769 } 46400770 <span class="preprocessor">#endif</span> 46500771 <span class="preprocessor"></span> 466<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) 46700773 { 46800774 <span class="keywordflow">if</span> (p) 46900775 <a class="code" href="group__osclmemory.html#a49">OSCL_FREE</a>(p); 47000776 } 47100777 }; 47200778 47300779 474<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> 47500788 { 47600789 <span class="keyword">public</span>: 477<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) 47800797 { 47900798 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* p = <a class="code" href="group__osclmemory.html#a7">_oscl_malloc</a>(n); 48000799 <a class="code" href="classOsclError.html#d8">OsclError::LeaveIfNull</a>(p); 48100800 <span class="preprocessor">#if OSCL_MEM_FILL_WITH_PATTERN</span> 48200801 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a14">oscl_memset</a>(p, 0x55, n); 48300802 <span class="preprocessor">#endif</span> 48400803 <span class="preprocessor"></span> <span class="keywordflow">return</span> (p); 48500804 } 48600805 487<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) 48800807 { 48900808 <span class="keywordflow">if</span> (p) 49000809 <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(p); 49100810 } 49200811 }; 49300812 494<a name="l00817"></a><a class="code" href="classOsclMemAllocDestructDealloc.html">00817</a> <span class="keyword">template</span> <<span class="keyword">class</span> T> <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> 49500818 { 49600819 <span class="keyword">public</span>: 49700820 <span class="preprocessor">#if !(OSCL_BYPASS_MEMMGT)</span> 498<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) 49900822 { 50000823 <span class="keywordflow">return</span> alloc.<a class="code" href="classOsclMemAllocator.html#a1">allocate_fl</a>(size, file_name, line_num); 50100824 } 50200825 <span class="preprocessor">#endif</span> 503<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) 50400827 { 50500828 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 50600829 <span class="preprocessor"></span> <span class="keywordflow">return</span> alloc.<a class="code" href="classOsclMemAllocator.html#a0">allocate</a>(size); 50700830 <span class="preprocessor">#elif(PVMEM_INST_LEVEL>0)</span> 50800831 <span class="preprocessor"></span> <span class="comment">//this is really a usage error-- caller should provide file & line.</span> 50900832 <span class="comment">//set a debug breakpoint here...</span> 51000833 <span class="keywordflow">return</span> <a class="code" href="classOsclMemAllocDestructDealloc.html#a0">allocate_fl</a>(size, __FILE__, __LINE__); 51100834 <span class="preprocessor">#else</span> 51200835 <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); 51300836 <span class="preprocessor">#endif</span> 51400837 <span class="preprocessor"></span> } 515<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) 51600839 { 51700840 alloc.<a class="code" href="classOsclMemAllocator.html#a2">deallocate</a>(p); 51800841 } 519<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) 52000843 { 52100844 T* ptr = reinterpret_cast<T*>(p); 52200845 ptr->~T(); 52300846 <a class="code" href="classOsclMemAllocDestructDealloc.html#a2">deallocate</a>(p); 52400847 <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(ptr); <span class="comment">// removes warning on some compilers</span> 52500848 } 52600849 <span class="keyword">private</span>: 52700850 <a class="code" href="classOsclMemAllocator.html">OsclMemAllocator</a> alloc; 52800851 }; 52900852 530<a name="l00857"></a><a class="code" href="classOsclMemBasicAllocDestructDealloc.html">00857</a> <span class="keyword">template</span> <<span class="keyword">class</span> T> <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> 53100858 { 53200859 <span class="keyword">public</span>: 533<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) 53400861 { 53500862 <span class="preprocessor">#if(OSCL_BYPASS_MEMMGT)</span> 53600863 <span class="preprocessor"></span> <span class="keywordflow">return</span> alloc.<a class="code" href="classOsclMemBasicAllocator.html#a0">allocate</a>(size); 53700864 <span class="preprocessor">#else</span> 53800865 <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); 53900866 <span class="preprocessor">#endif</span> 54000867 <span class="preprocessor"></span> } 541<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) 54200869 { 54300870 alloc.<a class="code" href="classOsclMemBasicAllocator.html#a1">deallocate</a>(p); 54400871 } 545<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) 54600873 { 54700874 T* ptr = reinterpret_cast<T*>(p); 54800875 ptr->~T(); 54900876 <a class="code" href="classOsclMemBasicAllocDestructDealloc.html#a1">deallocate</a>(p); 55000877 <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(ptr); <span class="comment">// removes warning on some compilers</span> 55100878 } 55200879 <span class="keyword">private</span>: 55300880 <a class="code" href="classOsclMemBasicAllocator.html">OsclMemBasicAllocator</a> alloc; 55400881 }; 55500882 55600887 <span class="keyword">class </span><a class="code" href="classOsclMemAudit.html">OsclMemAudit</a>; 557<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> 55800889 { 55900890 <span class="keyword">public</span>: 560<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>; 56100896 OSCL_IMPORT_REF <span class="keyword">static</span> audit_type* <a class="code" href="classOsclMemGlobalAuditObject.html#d0">getGlobalMemAuditObject</a>(); 56200897 56300898 <span class="keyword">private</span>: 56400902 <span class="keyword">static</span> <span class="keywordtype">void</span> createGlobalMemAuditObject(); 56500903 56600907 <span class="keyword">static</span> <span class="keywordtype">void</span> deleteGlobalMemAuditObject(); 56700908 568<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>; 56900910 }; 57000911 571<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> 57200924 { 57300925 <span class="keyword">public</span>: 57400926 <span class="preprocessor">#if (OSCL_HAS_HEAP_BASE_SUPPORT)</span> 57500927 <span class="preprocessor"></span> 57600928 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 57700929 <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) 57800930 { 57900931 <span class="preprocessor">#if(PVMEM_INST_LEVEL>0)</span> 58000932 <span class="preprocessor"></span> <span class="comment">//in case NULL is passed in, record this file & line #</span> 58100933 <span class="keywordflow">if</span> (!aFile) 58200934 <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__); 58300935 <span class="preprocessor">#endif</span> 58400936 <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); 58500937 } 58600938 <span class="preprocessor">#else</span> 58700939 <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) 58800940 { 58900941 <span class="keywordflow">return</span> _oscl_default_new(aSize); 59000942 } 59100943 <span class="preprocessor">#endif</span> 59200944 <span class="preprocessor"></span> 59300945 <span class="keyword">static</span> <span class="keywordtype">void</span>* <a class="code" href="group__osclmemory.html#a31">operator new[]</a>(size_t aSize) 59400946 { 59500947 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 59600948 <span class="preprocessor"></span> <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize); 59700949 <span class="preprocessor">#else</span> 59800950 <span class="preprocessor"></span> <span class="keywordflow">return</span> _oscl_default_new(aSize); 59900951 <span class="preprocessor">#endif</span> 60000952 <span class="preprocessor"></span> } 60100953 60200954 <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) 60300955 { 60400956 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 60500957 <span class="preprocessor"></span><span class="preprocessor">#if(PVMEM_INST_LEVEL>0)</span> 60600958 <span class="preprocessor"></span> <span class="comment">//in case NULL is passed in, record this file & line #</span> 60700959 <span class="keywordflow">if</span> (!aFile) 60800960 <span class="keywordflow">return</span> <a class="code" href="group__osclmemory.html#a25">_oscl_default_audit_new</a>(aSize, __FILE__, __LINE__); 60900961 <span class="preprocessor">#endif</span> 61000962 <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); 61100963 <span class="preprocessor">#else</span> 61200964 <span class="preprocessor"></span> <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(aFile); 61300965 <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(aLine); 61400966 <span class="keywordflow">return</span> _oscl_default_new(aSize); 61500967 <span class="preprocessor">#endif</span> 61600968 <span class="preprocessor"></span> } 61700969 61800970 <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) 61900971 { 62000972 <span class="keywordflow">return</span> aPtr; 62100973 } 62200974 62300975 <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) 62400976 { 62500977 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 62600978 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(aPtr); 62700979 <span class="preprocessor">#else</span> 62800980 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(aPtr); 62900981 <span class="preprocessor">#endif</span> 63000982 <span class="preprocessor"></span> } 63100983 63200984 <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) 63300985 { 63400986 <span class="preprocessor">#if(!OSCL_BYPASS_MEMMGT)</span> 63500987 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a26">_oscl_audit_free</a>(aPtr); 63600988 <span class="preprocessor">#else</span> 63700989 <span class="preprocessor"></span> <a class="code" href="group__osclmemory.html#a10">_oscl_free</a>(aPtr); 63800990 <span class="preprocessor">#endif</span> 63900991 <span class="preprocessor"></span> } 64000992 <span class="preprocessor">#endif //OSCL_HAS_HEAP_BASE_SUPPORT</span> 641<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>() {}; 642<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>() {}; 64300995 }; 64400996 645<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> 64601014 <span class="preprocessor">{\</span> 64701015 <span class="preprocessor"> int32 __err;\</span> 64801016 <span class="preprocessor"> OsclAny*__ptr=exp;\</span> 64901017 <span class="preprocessor"> OSCL_TRY(__err,T_ptr=new(__ptr) T params;);\</span> 65001018 <span class="preprocessor"> if(__err){\</span> 65101019 <span class="preprocessor"> freeFunc(__ptr);\</span> 65201020 <span class="preprocessor"> T_ptr=NULL;\</span> 65301021 <span class="preprocessor"> OsclError::Leave(__err);\</span> 65401022 <span class="preprocessor"> }\</span> 65501023 <span class="preprocessor">}</span> 65601024 <span class="preprocessor"></span> 65701032 <span class="preprocessor">#ifdef PVERROR_IMP_CPP_EXCEPTIONS</span> 65801033 <span class="preprocessor"></span><span class="comment">//when using C++ exceptions, base class cleanup is automatic</span> 65901034 <span class="preprocessor">#define _OSCL_CLEANUP_BASE_CLASS(T)</span> 66001035 <span class="preprocessor"></span><span class="preprocessor">#else</span> 66101036 <span class="preprocessor"></span><span class="comment">//otherwise the destructor needs to be called explicitly.</span> 662<a name="l01037"></a><a class="code" href="group__osclmemory.html#a62">01037</a> <span class="preprocessor">#define _OSCL_CLEANUP_BASE_CLASS(T) this->T::~T()</span> 66301038 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 66401039 <span class="preprocessor"></span> 66501040 66601044 <span class="preprocessor">#if (!OSCL_DISABLE_INLINES)</span> 66701045 <span class="preprocessor"></span><span class="preprocessor">#include "oscl_mem.inl"</span> 66801046 <span class="preprocessor">#endif</span> 66901047 <span class="preprocessor"></span> 67001048 <span class="preprocessor">#endif // OSCL_MEM_H_INCLUDED</span> 67101049 <span class="preprocessor"></span> 67201050 67301051 674</pre></div><hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small> 675<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small> 676</small></address> 677</body> 678</html> 679