00001
00002
00003
00004
00005
00006
00007
00008 #include "config.h"
00009
00010 #ifndef lint
00011 static const char revid[] = "$Id: os__fsync_8c-source.html,v 1.1 2008/06/08 10:21:15 sebdiaz Exp $";
00012 #endif
00013
00014 #ifndef NO_SYSTEM_INCLUDES
00015 #include <sys/types.h>
00016
00017 #include <fcntl.h>
00018 #include <unistd.h>
00019 #include <string.h>
00020 #endif
00021
00022 #include "db_int.h"
00023 #include "os_jump.h"
00024
00025 #ifdef HAVE_VXWORKS
00026 #include "ioLib.h"
00027
00028 #define fsync(fd) __vx_fsync(fd);
00029
00030 int
00031 __vx_fsync(fd)
00032 int fd;
00033 {
00034 int ret;
00035
00036
00037
00038
00039
00040
00041 if ((ret = ioctl(fd, FIOSYNC, 0)) != ERROR)
00042 return (0);
00043 return (ret);
00044 }
00045 #endif
00046
00047 #ifdef __hp3000s900
00048 #define fsync(fd) __mpe_fsync(fd);
00049
00050 int
00051 __mpe_fsync(fd)
00052 int fd;
00053 {
00054 extern FCONTROL(short, short, void *);
00055
00056 FCONTROL(_MPE_FILENO(fd), 2, NULL);
00057 FCONTROL(_MPE_FILENO(fd), 6, NULL);
00058 return (0);
00059 }
00060 #endif
00061
00062
00063
00064
00065
00066
00067
00068 int
00069 CDB___os_fsync(dbenv, fhp)
00070 DB_ENV *dbenv;
00071 DB_FH *fhp;
00072 {
00073 int ret;
00074
00075
00076
00077
00078
00079 if (F_ISSET(fhp, DB_FH_NOSYNC))
00080 return (0);
00081
00082 ret = CDB___db_jump.j_fsync != NULL ?
00083 CDB___db_jump.j_fsync(fhp->fd) : fsync(fhp->fd);
00084
00085 if (ret != 0) {
00086 ret = CDB___os_get_errno();
00087 CDB___db_err(dbenv, "fsync %s", strerror(ret));
00088 }
00089 return (ret);
00090 }