00001
00002
00003
00004
00005
00006 #include "compat.h"
00007 #include <sys/types.h>
00008 #include <unistd.h>
00009
00010
00011
00012
00013
00014
00015 #ifdef LACK_SYNC_FILE_RANGE
00016 #warning "Using fdatasync() instead of sync_file_range()"
00017 const int have_sync_range = 0;
00018
00019 int sync_range_submit(int fd, off_t offset, size_t nbytes)
00020 {
00021 return 0;
00022 }
00023
00024 int sync_range_wait(int fd, off_t offset, size_t nbytes)
00025 {
00026
00027
00028 return fdatasync(fd);
00029 }
00030
00031 #else
00032
00035 const int have_sync_range = 1;
00036
00038 int sync_range_submit(int fd, off_t offset, size_t nbytes)
00039 {
00040
00041
00042 return sync_file_range(fd, offset, nbytes, SYNC_FILE_RANGE_WRITE);
00043 }
00044
00047 int sync_range_wait(int fd, off_t offset, size_t nbytes)
00048 {
00049 return sync_file_range(fd, offset, nbytes, SYNC_FILE_RANGE_WAIT_BEFORE);
00050 }
00051
00052 #endif
00053
00054
00055
00056
00057 #ifdef LACK_POSIX_FADVISE
00058 #warning "Not using posix_fadvise()"
00059 #endif
00060
00061
00062
00063
00064
00065
00066 #ifdef LACK_CLOCK_GETTIME
00067 #warning "Using gettimeofday() instead of clock_gettime()"
00068
00069 #include <sys/time.h>
00070
00071 int clock_gettime(int clk_id, struct timespec *tp)
00072 {
00073 struct timeval tv;
00074
00075 gettimeofday(&tv, NULL);
00076
00077 tp->tv_sec = tv.tv_sec;
00078 tp->tv_nsec = tv.tv_usec / 1000.0;
00079
00080 return 0;
00081 }
00082
00083 #endif
00084
00085
00086 #ifdef LACK_FDATASYNC
00087 #warning "Using fsync() instead of fdatasync()"
00088
00089 #include <unistd.h>
00090
00091 int fdatasync(int fd)
00092 {
00093 return fsync(fd);
00094 }
00095 #endif
00096