24
s_thread_status_get_name (SThreadStatus status) {
25
return SThreadStatusName[status];
24
28
/* ****************************************************************************
25
29
********************************** SMutex ************************************
26
30
**************************************************************************** */
30
34
_Atomic(sboolean) locked;
36
40
SMutex * self = malloc (sizeof (SMutex));
42
self->mutex = malloc (sizeof (mtx_t));
38
44
atomic_init(&(self->locked), FALSE);
40
mtx_init (&(self->mutex), mtx_plain);
46
sint status = mtx_init (self->mutex, mtx_plain);
48
if (status == thrd_success) {
52
s_err_print ("Could not create thrad. Error: %s.\n",
53
s_thread_status_get_name (status));
46
59
s_mutex_free (SMutex * self) {
47
mtx_destroy (&(self->mutex));
60
mtx_destroy (self->mutex);
52
66
s_mutex_lock (SMutex * self) {
53
sint ret_val = mtx_lock (&(self->mutex));
67
sint ret_val = mtx_lock (self->mutex);
54
68
atomic_store(&(self->locked), TRUE);
59
73
s_mutex_unlock (SMutex * self) {
60
sint ret_val = mtx_unlock (&(self->mutex));
74
sint ret_val = mtx_unlock (self->mutex);
61
75
atomic_store(&(self->locked), FALSE);
66
80
s_mutex_check_lock (SMutex * self) {
67
81
return atomic_load(&(self->locked));
71
86
/* ****************************************************************************
72
87
********************************** SThread ***********************************
73
88
**************************************************************************** */