xref: /aosp_15_r20/external/libfuse/lib/fuse_misc.h (revision 9e5649576b786774a32d7b0252c9cd8c6538fa49)
1*9e564957SAndroid Build Coastguard Worker /*
2*9e564957SAndroid Build Coastguard Worker   FUSE: Filesystem in Userspace
3*9e564957SAndroid Build Coastguard Worker   Copyright (C) 2001-2007  Miklos Szeredi <[email protected]>
4*9e564957SAndroid Build Coastguard Worker 
5*9e564957SAndroid Build Coastguard Worker   This program can be distributed under the terms of the GNU LGPLv2.
6*9e564957SAndroid Build Coastguard Worker   See the file COPYING.LIB
7*9e564957SAndroid Build Coastguard Worker */
8*9e564957SAndroid Build Coastguard Worker 
9*9e564957SAndroid Build Coastguard Worker #include <pthread.h>
10*9e564957SAndroid Build Coastguard Worker 
11*9e564957SAndroid Build Coastguard Worker /*
12*9e564957SAndroid Build Coastguard Worker   Versioned symbols cannot be used in some cases because it
13*9e564957SAndroid Build Coastguard Worker     - not supported on MacOSX (in MachO binary format)
14*9e564957SAndroid Build Coastguard Worker 
15*9e564957SAndroid Build Coastguard Worker   Note: "@@" denotes the default symbol, "@" is binary a compat version.
16*9e564957SAndroid Build Coastguard Worker 
17*9e564957SAndroid Build Coastguard Worker */
18*9e564957SAndroid Build Coastguard Worker #ifdef LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS
19*9e564957SAndroid Build Coastguard Worker # if HAVE_SYMVER_ATTRIBUTE
20*9e564957SAndroid Build Coastguard Worker #  define FUSE_SYMVER(sym1, sym2) __attribute__ ((symver (sym2)))
21*9e564957SAndroid Build Coastguard Worker # else
22*9e564957SAndroid Build Coastguard Worker #  define FUSE_SYMVER(sym1, sym2) __asm__("\t.symver " sym1 "," sym2);
23*9e564957SAndroid Build Coastguard Worker # endif
24*9e564957SAndroid Build Coastguard Worker #else
25*9e564957SAndroid Build Coastguard Worker #define FUSE_SYMVER(sym1, sym2)
26*9e564957SAndroid Build Coastguard Worker #endif
27*9e564957SAndroid Build Coastguard Worker 
28*9e564957SAndroid Build Coastguard Worker #ifdef HAVE_STRUCT_STAT_ST_ATIM
29*9e564957SAndroid Build Coastguard Worker /* Linux */
30*9e564957SAndroid Build Coastguard Worker #define ST_ATIM_NSEC(stbuf) ((stbuf)->st_atim.tv_nsec)
31*9e564957SAndroid Build Coastguard Worker #define ST_CTIM_NSEC(stbuf) ((stbuf)->st_ctim.tv_nsec)
32*9e564957SAndroid Build Coastguard Worker #define ST_MTIM_NSEC(stbuf) ((stbuf)->st_mtim.tv_nsec)
33*9e564957SAndroid Build Coastguard Worker #define ST_ATIM_NSEC_SET(stbuf, val) (stbuf)->st_atim.tv_nsec = (val)
34*9e564957SAndroid Build Coastguard Worker #define ST_CTIM_NSEC_SET(stbuf, val) (stbuf)->st_ctim.tv_nsec = (val)
35*9e564957SAndroid Build Coastguard Worker #define ST_MTIM_NSEC_SET(stbuf, val) (stbuf)->st_mtim.tv_nsec = (val)
36*9e564957SAndroid Build Coastguard Worker #elif defined(HAVE_STRUCT_STAT_ST_ATIMESPEC)
37*9e564957SAndroid Build Coastguard Worker /* FreeBSD */
38*9e564957SAndroid Build Coastguard Worker #define ST_ATIM_NSEC(stbuf) ((stbuf)->st_atimespec.tv_nsec)
39*9e564957SAndroid Build Coastguard Worker #define ST_CTIM_NSEC(stbuf) ((stbuf)->st_ctimespec.tv_nsec)
40*9e564957SAndroid Build Coastguard Worker #define ST_MTIM_NSEC(stbuf) ((stbuf)->st_mtimespec.tv_nsec)
41*9e564957SAndroid Build Coastguard Worker #define ST_ATIM_NSEC_SET(stbuf, val) (stbuf)->st_atimespec.tv_nsec = (val)
42*9e564957SAndroid Build Coastguard Worker #define ST_CTIM_NSEC_SET(stbuf, val) (stbuf)->st_ctimespec.tv_nsec = (val)
43*9e564957SAndroid Build Coastguard Worker #define ST_MTIM_NSEC_SET(stbuf, val) (stbuf)->st_mtimespec.tv_nsec = (val)
44*9e564957SAndroid Build Coastguard Worker #else
45*9e564957SAndroid Build Coastguard Worker #define ST_ATIM_NSEC(stbuf) 0
46*9e564957SAndroid Build Coastguard Worker #define ST_CTIM_NSEC(stbuf) 0
47*9e564957SAndroid Build Coastguard Worker #define ST_MTIM_NSEC(stbuf) 0
48*9e564957SAndroid Build Coastguard Worker #define ST_ATIM_NSEC_SET(stbuf, val) do { } while (0)
49*9e564957SAndroid Build Coastguard Worker #define ST_CTIM_NSEC_SET(stbuf, val) do { } while (0)
50*9e564957SAndroid Build Coastguard Worker #define ST_MTIM_NSEC_SET(stbuf, val) do { } while (0)
51*9e564957SAndroid Build Coastguard Worker #endif
52