1
2
3
4
5
6
7
8
9#include <pthread.h>
10
11
12
13
14
15
16#if (!defined(__UCLIBC__) && !defined(__APPLE__))
17#define FUSE_SYMVER(x) __asm__(x)
18#else
19#define FUSE_SYMVER(x)
20#endif
21
22#ifndef USE_UCLIBC
23#define fuse_mutex_init(mut) pthread_mutex_init(mut, NULL)
24#else
25
26static inline void fuse_mutex_init(pthread_mutex_t *mut)
27{
28 pthread_mutexattr_t attr;
29 pthread_mutexattr_init(&attr);
30 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
31 pthread_mutex_init(mut, &attr);
32 pthread_mutexattr_destroy(&attr);
33}
34#endif
35
36#ifdef HAVE_STRUCT_STAT_ST_ATIM
37
38#define ST_ATIM_NSEC(stbuf) ((stbuf)->st_atim.tv_nsec)
39#define ST_CTIM_NSEC(stbuf) ((stbuf)->st_ctim.tv_nsec)
40#define ST_MTIM_NSEC(stbuf) ((stbuf)->st_mtim.tv_nsec)
41#define ST_ATIM_NSEC_SET(stbuf, val) (stbuf)->st_atim.tv_nsec = (val)
42#define ST_CTIM_NSEC_SET(stbuf, val) (stbuf)->st_ctim.tv_nsec = (val)
43#define ST_MTIM_NSEC_SET(stbuf, val) (stbuf)->st_mtim.tv_nsec = (val)
44#elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC)
45
46#define ST_ATIM_NSEC(stbuf) ((stbuf)->st_atimespec.tv_nsec)
47#define ST_CTIM_NSEC(stbuf) ((stbuf)->st_ctimespec.tv_nsec)
48#define ST_MTIM_NSEC(stbuf) ((stbuf)->st_mtimespec.tv_nsec)
49#define ST_ATIM_NSEC_SET(stbuf, val) (stbuf)->st_atimespec.tv_nsec = (val)
50#define ST_CTIM_NSEC_SET(stbuf, val) (stbuf)->st_ctimespec.tv_nsec = (val)
51#define ST_MTIM_NSEC_SET(stbuf, val) (stbuf)->st_mtimespec.tv_nsec = (val)
52#else
53#define ST_ATIM_NSEC(stbuf) 0
54#define ST_CTIM_NSEC(stbuf) 0
55#define ST_MTIM_NSEC(stbuf) 0
56#define ST_ATIM_NSEC_SET(stbuf, val) do { } while (0)
57#define ST_CTIM_NSEC_SET(stbuf, val) do { } while (0)
58#define ST_MTIM_NSEC_SET(stbuf, val) do { } while (0)
59#endif
60