00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00024 #include "config.h"
00025
00026 #include <cstring>
00027
00028 #include <scalestack/kernel/module.h>
00029 #include <scalestack/threading/pthreads/mutex_provider.h>
00030
00031 namespace scalestack
00032 {
00033 namespace threading
00034 {
00035 namespace pthreads
00036 {
00037
00038
00039
00040
00041
00042 mutex_provider::mutex_provider(kernel::module& module, mutex& mutex):
00043 threading::mutex_provider(module, mutex),
00044 _mutex()
00045 {
00046 int return_code = pthread_mutex_init(&_mutex, NULL);
00047 if (return_code != 0)
00048 {
00049 _module.log_fatal(_("Failed pthread_mutex_init: %s:%d"),
00050 strerror(return_code), return_code);
00051 }
00052 }
00053
00054 mutex_provider::~mutex_provider()
00055 {
00056 int return_code = pthread_mutex_destroy(&_mutex);
00057 if (return_code != 0)
00058 {
00059 _module.log_error(_("Failed pthread_mutex_destroy: %s:%d"),
00060 strerror(return_code), return_code);
00061 }
00062 }
00063
00064 void mutex_provider::lock(void)
00065 {
00066 int return_code = pthread_mutex_lock(&_mutex);
00067 if (return_code != 0)
00068 {
00069 _module.log_fatal(_("Failed pthread_mutex_lock: %s:%d"),
00070 strerror(return_code), return_code);
00071 }
00072 }
00073
00074 void mutex_provider::unlock(void)
00075 {
00076 int return_code = pthread_mutex_unlock(&_mutex);
00077 if (return_code != 0)
00078 {
00079 _module.log_fatal(_("Failed pthread_mutex_unlock: %s:%d"),
00080 strerror(return_code), return_code);
00081 }
00082 }
00083
00084 }
00085 }
00086 }