clsync
Toggle main menu visibility
Loading...
Searching...
No Matches
pthreadex.c
Go to the documentation of this file.
1
/*
2
clsync - file tree sync utility based on inotify/kqueue
3
4
Copyright (C) 2013-2014 Dmitry Yu Okunev <dyokunev@ut.mephi.ru> 0x8E30679C
5
6
This program is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#include <string.h>
21
#include <pthread.h>
22
#include "
pthreadex.h
"
23
#include "
malloc.h
"
24
25
int
pthread_mutex_init_shared
( pthread_mutex_t **mutex_p )
26
{
27
static
pthread_mutex_t mutex_initial = PTHREAD_MUTEX_INITIALIZER;
28
*mutex_p =
shm_malloc_try
(
sizeof
( **mutex_p ) );
29
memcpy ( *mutex_p, &mutex_initial,
sizeof
( mutex_initial ) );
30
pthread_mutexattr_t attr;
31
pthread_mutexattr_init ( &attr );
32
pthread_mutexattr_setpshared ( &attr, PTHREAD_PROCESS_SHARED );
33
return
pthread_mutex_init ( *mutex_p, &attr );
34
}
35
36
int
pthread_mutex_destroy_shared
( pthread_mutex_t *mutex_p )
37
{
38
int
rc;
39
rc = pthread_mutex_destroy ( mutex_p );
40
shm_free
( mutex_p );
41
return
rc;
42
}
43
44
int
pthread_cond_init_shared
( pthread_cond_t **cond_p )
45
{
46
static
pthread_cond_t cond_initial = PTHREAD_COND_INITIALIZER;
47
*cond_p =
shm_malloc
(
sizeof
( **cond_p ) );
48
memcpy ( *cond_p, &cond_initial,
sizeof
( cond_initial ) );
49
pthread_condattr_t attr;
50
pthread_condattr_init ( &attr );
51
pthread_condattr_setpshared ( &attr, PTHREAD_PROCESS_SHARED );
52
return
pthread_cond_init ( *cond_p, &attr );
53
}
54
55
int
pthread_cond_destroy_shared
( pthread_cond_t *cond_p )
56
{
57
int
rc;
58
rc = pthread_cond_destroy ( cond_p );
59
shm_free
( cond_p );
60
return
rc;
61
}
62
63
int
pthread_mutex_reltimedlock
( pthread_mutex_t *mutex_p,
long
tv_sec,
long
tv_nsec )
64
{
65
struct
timespec abs_time;
66
67
if
( clock_gettime ( CLOCK_REALTIME, &abs_time ) )
68
return
-1;
69
70
abs_time.tv_sec += tv_sec;
71
abs_time.tv_nsec += tv_nsec;
72
73
if
( abs_time.tv_nsec > 1000 * 1000 * 1000 ) {
74
abs_time.tv_sec++;
75
abs_time.tv_nsec -= 1000 * 1000 * 1000;
76
}
77
78
return
pthread_mutex_timedlock ( mutex_p, &abs_time );
79
}
80
shm_free
void shm_free(void *ptr)
Definition
malloc.c:251
shm_malloc
void * shm_malloc(size_t size)
Definition
malloc.c:228
shm_malloc_try
void * shm_malloc_try(size_t size)
Definition
malloc.c:196
malloc.h
pthread_mutex_init_shared
int pthread_mutex_init_shared(pthread_mutex_t **mutex_p)
Definition
pthreadex.c:25
pthread_cond_destroy_shared
int pthread_cond_destroy_shared(pthread_cond_t *cond_p)
Definition
pthreadex.c:55
pthread_mutex_reltimedlock
int pthread_mutex_reltimedlock(pthread_mutex_t *mutex_p, long tv_sec, long tv_nsec)
Definition
pthreadex.c:63
pthread_mutex_destroy_shared
int pthread_mutex_destroy_shared(pthread_mutex_t *mutex_p)
Definition
pthreadex.c:36
pthread_cond_init_shared
int pthread_cond_init_shared(pthread_cond_t **cond_p)
Definition
pthreadex.c:44
pthreadex.h
Generated on
for clsync by
1.17.0