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