00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "defs.h"
00022
00023 #define NUM_WRITES 250
00024
00025 int main(void)
00026 {
00027 int try, fd, i;
00028 char buf[512], *caption;
00029
00030 #ifdef _POSIX_SYNCHRONIZED_IO
00031 printf("_POSIX_SYNCHRONIZED_IO is defined\n");
00032 #else
00033 printf("_POSIX_SYNCHRONIZED_IO is undefined\n");
00034 #endif
00035
00036 memset(buf, 0, sizeof(buf));
00037
00038 for (try = 0; try < 4; try++) {
00039 if ((fd = creat("a.tmp", PERM_FILE)) == -1)
00040 syserr("creat");
00041 timestart();
00042 for (i = 0; i < NUM_WRITES; i++) {
00043 if (write(fd, buf, sizeof(buf)) == -1)
00044 syserr("write");
00045 switch (try) {
00046 case 0:
00047 caption = "normal";
00048 break;
00049 case 1:
00050 sync();
00051 caption = "sync";
00052 break;
00053 case 2:
00054 #if defined(_POSIX_SYNCHRONIZED_IO) || defined(FREEBSD)
00055 fsync(fd);
00056 caption = "fsync";
00057 #else
00058 sync();
00059 caption = "fsync not defined; using sync";
00060 #endif
00061 break;
00062 case 3:
00063 #if defined(_POSIX_SYNCHRONIZED_IO)
00064 fdatasync(fd);
00065 caption = "fdatasync";
00066 #else
00067 sync();
00068 caption = "fdatasync not defined; using sync";
00069 #endif
00070 }
00071 }
00072 timestop(caption);
00073 if (close(fd) == -1)
00074 syserr("close");
00075 }
00076
00077 exit(EXIT_SUCCESS);
00078 }