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_lock_base.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_lock_base.h</h1><a href="oscl__lock__base_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 _ L O C K _ B A S E</span> 1300005 1400006 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span> 1500007 1600023 <span class="preprocessor">#ifndef OSCL_LOCK_BASE_H_INCLUDED</span> 1700024 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_LOCK_BASE_H_INCLUDED</span> 1800025 <span class="preprocessor"></span> 1900026 20<a name="l00027"></a><a class="code" href="classOsclLockBase.html">00027</a> <span class="keyword">class </span><a class="code" href="classOsclLockBase.html">OsclLockBase</a> 2100028 { 2200029 2300030 <span class="keyword">public</span>: 2400031 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOsclLockBase.html#a0">Lock</a>() = 0; 2500032 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOsclLockBase.html#a1">Unlock</a>() = 0; 26<a name="l00033"></a><a class="code" href="classOsclLockBase.html#a2">00033</a> <span class="keyword">virtual</span> <a class="code" href="classOsclLockBase.html#a2">~OsclLockBase</a>() {} 2700034 2800035 }; 2900036 30<a name="l00037"></a><a class="code" href="classOsclNullLock.html">00037</a> <span class="keyword">class </span><a class="code" href="classOsclNullLock.html">OsclNullLock</a>: <span class="keyword">public</span> <a class="code" href="classOsclLockBase.html">OsclLockBase</a> 3100038 { 3200039 3300040 <span class="keyword">public</span>: 34<a name="l00041"></a><a class="code" href="classOsclNullLock.html#a0">00041</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOsclNullLock.html#a0">Lock</a>() {}; 35<a name="l00042"></a><a class="code" href="classOsclNullLock.html#a1">00042</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classOsclNullLock.html#a1">Unlock</a>() {}; 36<a name="l00043"></a><a class="code" href="classOsclNullLock.html#a2">00043</a> <span class="keyword">virtual</span> <a class="code" href="classOsclNullLock.html#a2">~OsclNullLock</a>() {} 3700044 3800045 }; 3900046 4000047 4100048 42<a name="l00060"></a><a class="code" href="classOsclScopedLock.html">00060</a> <span class="keyword">template</span><<span class="keyword">class</span> LockClass> <span class="keyword">class </span><a class="code" href="classOsclScopedLock.html">OsclScopedLock</a> 4300061 { 4400062 <span class="keyword">private</span>: 4500063 LockClass* _Ptr; 4600064 4700065 <span class="comment">// make copy constructor private so no default is created.</span> 4800073 <span class="comment"></span> <a class="code" href="classOsclScopedLock.html#a0">OsclScopedLock</a>(<span class="keyword">const</span> <a class="code" href="classOsclScopedLock.html">OsclScopedLock<LockClass></a>&) {} 4900074 5000075 5100081 <span class="keywordtype">void</span> release() 5200082 { 5300083 <span class="keywordflow">if</span> (_Ptr) 5400084 { 5500085 _Ptr->Unlock(); 5600086 _Ptr = <a class="code" href="group__osclbase.html#a81">NULL</a>; 5700087 } 5800088 } 5900089 6000090 6100095 <span class="keywordtype">void</span> acquire() 6200096 { 6300097 <span class="keywordflow">if</span> (_Ptr) 6400098 { 6500099 _Ptr->Lock(); 6600100 } 6700101 } 6800102 6900103 7000104 <span class="keyword">public</span>: 7100105 72<a name="l00110"></a><a class="code" href="classOsclScopedLock.html#a0">00110</a> <span class="keyword">explicit</span> <a class="code" href="classOsclScopedLock.html#a0">OsclScopedLock</a>(LockClass& inLock) : _Ptr(&inLock) 7300111 { 7400112 acquire(); 7500113 }; 7600114 77<a name="l00120"></a><a class="code" href="classOsclScopedLock.html#a1">00120</a> <a class="code" href="classOsclScopedLock.html#a1">~OsclScopedLock</a>() 7800121 { 7900122 release(); 8000123 } 8100124 8200125 8300126 8400127 }; 8500128 8600129 8700133 <span class="preprocessor">#endif</span> 88</pre></div><hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small> 89<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small> 90</small></address> 91</body> 92</html> 93