HelenOS sources
This source file includes following definitions.
- lock
- try_lock
- unlock
- lock
- try_lock
- unlock
- lock
- try_lock
- unlock
- lock
- try_lock
- unlock
#include <mutex>
namespace std
{
void mutex::lock()
{
aux::threading::mutex::lock(mtx_);
}
bool mutex::try_lock()
{
return aux::threading::mutex::try_lock(mtx_);
}
void mutex::unlock()
{
aux::threading::mutex::unlock(mtx_);
}
mutex::native_handle_type mutex::native_handle()
{
return &mtx_;
}
recursive_mutex::~recursive_mutex()
{ }
void recursive_mutex::lock()
{
if (owner_ != this_thread::get_id())
{
aux::threading::mutex::lock(mtx_);
owner_ = this_thread::get_id();
lock_level_ = 1;
}
else
++lock_level_;
}
bool recursive_mutex::try_lock() noexcept
{
if (owner_ != this_thread::get_id())
{
bool res = aux::threading::mutex::try_lock(mtx_);
if (res)
{
owner_ = this_thread::get_id();
lock_level_ = 1;
}
return res;
}
else
++lock_level_;
return true;
}
void recursive_mutex::unlock()
{
if (owner_ != this_thread::get_id())
return;
else if (--lock_level_ == 0)
aux::threading::mutex::unlock(mtx_);
}
recursive_mutex::native_handle_type recursive_mutex::native_handle()
{
return &mtx_;
}
timed_mutex::timed_mutex() noexcept
: mtx_{}
{
aux::threading::mutex::init(mtx_);
}
timed_mutex::~timed_mutex()
{ }
void timed_mutex::lock()
{
aux::threading::mutex::lock(mtx_);
}
bool timed_mutex::try_lock()
{
return aux::threading::mutex::try_lock(mtx_);
}
void timed_mutex::unlock()
{
aux::threading::mutex::unlock(mtx_);
}
timed_mutex::native_handle_type timed_mutex::native_handle()
{
return &mtx_;
}
recursive_timed_mutex::~recursive_timed_mutex()
{ }
void recursive_timed_mutex::lock()
{
if (owner_ != this_thread::get_id())
{
aux::threading::mutex::lock(mtx_);
owner_ = this_thread::get_id();
lock_level_ = 1;
}
else
++lock_level_;
}
bool recursive_timed_mutex::try_lock() noexcept
{
if (owner_ != this_thread::get_id())
{
bool res = aux::threading::mutex::try_lock(mtx_);
if (res)
{
owner_ = this_thread::get_id();
lock_level_ = 1;
}
return res;
}
else
++lock_level_;
return true;
}
void recursive_timed_mutex::unlock()
{
if (owner_ != this_thread::get_id())
return;
else if (--lock_level_ == 0)
aux::threading::mutex::unlock(mtx_);
}
recursive_timed_mutex::native_handle_type recursive_timed_mutex::native_handle()
{
return &mtx_;
}
}
HelenOS homepage, sources at GitHub