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