diff options
Diffstat (limited to 'drivers/unix/rw_lock_posix.cpp')
-rw-r--r-- | drivers/unix/rw_lock_posix.cpp | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/drivers/unix/rw_lock_posix.cpp b/drivers/unix/rw_lock_posix.cpp index b51e5fd420..9c9ad26165 100644 --- a/drivers/unix/rw_lock_posix.cpp +++ b/drivers/unix/rw_lock_posix.cpp @@ -1,18 +1,46 @@ - +/*************************************************************************/ +/* rw_lock_posix.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #if defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED) -#include "os/memory.h" #include "rw_lock_posix.h" + #include "error_macros.h" +#include "os/memory.h" #include <stdio.h> void RWLockPosix::read_lock() { - int err =pthread_rwlock_rdlock(&rwlock); - if (err!=0) { + int err = pthread_rwlock_rdlock(&rwlock); + if (err != 0) { perror("wtf: "); } - ERR_FAIL_COND(err!=0); + ERR_FAIL_COND(err != 0); } void RWLockPosix::read_unlock() { @@ -22,18 +50,17 @@ void RWLockPosix::read_unlock() { Error RWLockPosix::read_try_lock() { - if (pthread_rwlock_tryrdlock(&rwlock)!=0) { + if (pthread_rwlock_tryrdlock(&rwlock) != 0) { return ERR_BUSY; } else { return OK; } - } void RWLockPosix::write_lock() { int err = pthread_rwlock_wrlock(&rwlock); - ERR_FAIL_COND(err!=0); + ERR_FAIL_COND(err != 0); } void RWLockPosix::write_unlock() { @@ -42,36 +69,32 @@ void RWLockPosix::write_unlock() { } Error RWLockPosix::write_try_lock() { - if (pthread_rwlock_trywrlock(&rwlock)!=0) { + if (pthread_rwlock_trywrlock(&rwlock) != 0) { return ERR_BUSY; } else { return OK; } } - RWLock *RWLockPosix::create_func_posix() { - return memnew( RWLockPosix ); + return memnew(RWLockPosix); } void RWLockPosix::make_default() { - create_func=create_func_posix; + create_func = create_func_posix; } - RWLockPosix::RWLockPosix() { //rwlock=PTHREAD_RWLOCK_INITIALIZER; fails on OSX - pthread_rwlock_init(&rwlock,NULL); + pthread_rwlock_init(&rwlock, NULL); } - RWLockPosix::~RWLockPosix() { pthread_rwlock_destroy(&rwlock); - } #endif |