• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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> &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>
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> &amp; 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&gt;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&gt;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-&gt;~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> &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);
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> &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);
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> &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);
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> &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) ;
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&gt;0)</span>
16500255 <span class="preprocessor"></span>    <span class="comment">//in case NULL is passed in, record this file &amp; 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&gt;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&gt;0)</span>
19900289 <span class="preprocessor"></span>    <span class="comment">//in case NULL is passed in, record this file &amp; 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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;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&gt;0)</span>
44500751 <span class="preprocessor"></span>            <span class="comment">//this is really a usage error-- caller should provide file &amp; 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> &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>
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&gt;0)</span>
50800831 <span class="preprocessor"></span>            <span class="comment">//this is really a usage error-- caller should provide file &amp; 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&lt;T*&gt;(p);
52200845             ptr-&gt;~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> &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>
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&lt;T*&gt;(p);
54800875             ptr-&gt;~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&gt;0)</span>
58000932 <span class="preprocessor"></span>            <span class="comment">//in case NULL is passed in, record this file &amp; 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&gt;0)</span>
60600958 <span class="preprocessor"></span>            <span class="comment">//in case NULL is passed in, record this file &amp; 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-&gt;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