t/run-fio-tests: automatically skip t/jobs/t0005 on Windows
[fio.git] / os / os-windows.h
index 3e9f73413b26a5f2c5e778b63df4281f2e7df994..6061d8c70761447ef53ed841d3f9316313845ad4 100644 (file)
@@ -35,6 +35,7 @@ int rand_r(unsigned *);
 #define FIO_HAVE_CPU_AFFINITY
 #define FIO_HAVE_CHARDEV_SIZE
 #define FIO_HAVE_GETTID
+#define FIO_EMULATED_MKDIR_TWO
 
 #define FIO_PREFERRED_ENGINE           "windowsaio"
 #define FIO_PREFERRED_CLOCK_SOURCE     CS_CGETTIME
@@ -197,6 +198,24 @@ static inline int fio_set_sched_idle(void)
        return (SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_IDLE))? 0 : -1;
 }
 
+static inline int fio_mkdir(const char *path, mode_t mode) {
+       DWORD dwAttr = GetFileAttributesA(path);
+
+       if (dwAttr != INVALID_FILE_ATTRIBUTES &&
+           (dwAttr & FILE_ATTRIBUTE_DIRECTORY)) {
+               errno = EEXIST;
+               return -1;
+       }
+
+       if (CreateDirectoryA(path, NULL) == 0) {
+               log_err("CreateDirectoryA = %d\n", GetLastError());
+               errno = win_to_posix_error(GetLastError());
+               return -1;
+       }
+
+       return 0;
+}
+
 #ifdef CONFIG_WINDOWS_XP
 #include "os-windows-xp.h"
 #else