#include <sc_mutex.h>
Public メソッド | |
sc_mutex () | |
sc_mutex (const char *name_) | |
virtual | ~sc_mutex () |
virtual int | lock () |
virtual int | trylock () |
virtual int | unlock () |
virtual const char * | kind () const |
Protected メソッド | |
bool | in_use () const |
Protected 変数 | |
sc_process_b * | m_owner |
sc_event | m_free |
Private メソッド | |
sc_mutex (const sc_mutex &) | |
sc_mutex & | operator= (const sc_mutex &) |
sc_mutex.h の 68 行で定義されています。
sc_core::sc_mutex::sc_mutex | ( | ) |
sc_mutex.cpp の 62 行で定義されています。
00063 : sc_prim_channel( sc_gen_unique_name( "mutex" ) ), 00064 m_owner( 0 ) 00065 {}
sc_core::sc_mutex::sc_mutex | ( | const char * | name_ | ) | [explicit] |
sc_core::sc_mutex::~sc_mutex | ( | ) | [virtual] |
sc_core::sc_mutex::sc_mutex | ( | const sc_mutex & | ) | [private] |
int sc_core::sc_mutex::lock | ( | ) | [virtual] |
sc_core::sc_mutex_ifを実装しています。
sc_mutex.cpp の 83 行で定義されています。
00084 { 00085 if (m_owner == sc_get_current_process_b()) return 0; 00086 while( in_use() ) { 00087 wait( m_free ); 00088 } 00089 m_owner = sc_get_current_process_b(); 00090 return 0; 00091 }
int sc_core::sc_mutex::trylock | ( | ) | [virtual] |
sc_core::sc_mutex_ifを実装しています。
sc_mutex.cpp の 97 行で定義されています。
00098 { 00099 if (m_owner == sc_get_current_process_b()) return 0; 00100 if( in_use() ) { 00101 return -1; 00102 } 00103 m_owner = sc_get_current_process_b(); 00104 return 0; 00105 }
int sc_core::sc_mutex::unlock | ( | ) | [virtual] |
sc_core::sc_mutex_ifを実装しています。
sc_mutex.cpp の 111 行で定義されています。
00112 { 00113 if( m_owner != sc_get_current_process_b() ) { 00114 return -1; 00115 } 00116 m_owner = 0; 00117 m_free.notify(); 00118 return 0; 00119 }
virtual const char* sc_core::sc_mutex::kind | ( | ) | const [inline, virtual] |
bool sc_core::sc_mutex::in_use | ( | ) | const [inline, protected] |
sc_process_b* sc_core::sc_mutex::m_owner [protected] |
sc_mutex.h の 104 行で定義されています。
sc_event sc_core::sc_mutex::m_free [protected] |
sc_mutex.h の 105 行で定義されています。