1*71364193SIngo Weinhold /* 2*71364193SIngo Weinhold * Copyright 2013, Haiku, Inc. All Rights Reserved. 3*71364193SIngo Weinhold * Distributed under the terms of the MIT License. 4*71364193SIngo Weinhold * 5*71364193SIngo Weinhold * Authors: 6*71364193SIngo Weinhold * Ingo Weinhold <ingo_weinhold@gmx.de> 7*71364193SIngo Weinhold */ 8*71364193SIngo Weinhold #ifndef _PTHREAD_MUTEX_LOCKER_H 9*71364193SIngo Weinhold #define _PTHREAD_MUTEX_LOCKER_H 10*71364193SIngo Weinhold 11*71364193SIngo Weinhold 12*71364193SIngo Weinhold #include <pthread.h> 13*71364193SIngo Weinhold 14*71364193SIngo Weinhold #include <AutoLocker.h> 15*71364193SIngo Weinhold 16*71364193SIngo Weinhold 17*71364193SIngo Weinhold namespace BPrivate { 18*71364193SIngo Weinhold 19*71364193SIngo Weinhold 20*71364193SIngo Weinhold class AutoLockerMutexLocking { 21*71364193SIngo Weinhold public: 22*71364193SIngo Weinhold inline bool Lock(pthread_mutex_t* lockable) 23*71364193SIngo Weinhold { 24*71364193SIngo Weinhold return pthread_mutex_lock(lockable) == 0; 25*71364193SIngo Weinhold } 26*71364193SIngo Weinhold 27*71364193SIngo Weinhold inline void Unlock(pthread_mutex_t* lockable) 28*71364193SIngo Weinhold { 29*71364193SIngo Weinhold pthread_mutex_unlock(lockable); 30*71364193SIngo Weinhold } 31*71364193SIngo Weinhold }; 32*71364193SIngo Weinhold 33*71364193SIngo Weinhold 34*71364193SIngo Weinhold typedef AutoLocker<pthread_mutex_t, AutoLockerMutexLocking> PthreadMutexLocker; 35*71364193SIngo Weinhold 36*71364193SIngo Weinhold 37*71364193SIngo Weinhold } // namespace BPrivate 38*71364193SIngo Weinhold 39*71364193SIngo Weinhold using BPrivate::PthreadMutexLocker; 40*71364193SIngo Weinhold 41*71364193SIngo Weinhold 42*71364193SIngo Weinhold #endif // _PTHREAD_MUTEX_LOCKER_H 43