diff -Naur iozone3_326/src/current/fileop.c iozone3_326.haiku/src/current/fileop.c
--- iozone3_326/src/current/fileop.c	2009-06-19 09:00:44.000000000 -0500
+++ iozone3_326.haiku/src/current/fileop.c	2011-01-06 08:22:28.000000000 -0600
@@ -116,7 +116,7 @@
 void file_read(int);
 void splash(void);
 void usage(void);
-void bzero();
+//void bzero();
 void clear_stats();
 int validate(char *, int , char );
 
@@ -138,14 +138,15 @@
 /************************************************************************/
 void purge_buffer_cache()
 {
-	if (!mountname)
-		return;
+
 
 	char cwd[PATH_MAX];
 	char command[1024];
 	int ret,i;
 
 	getcwd(cwd, sizeof(cwd));
+	if (!mountname)
+		return;
 	chdir("/");
 	strcpy(command,"umount ");
 	strcat(command, mountname);
@@ -242,7 +243,7 @@
 	  printf("\nFileop:  Working in %s, File size is %d,  Output is in Ops/sec. (A=Avg, B=Best, W=Worst)\n", thedir, sz);
 	if(!verbose)
 	{
-#ifdef Windows
+#if defined(Windows) || defined(Haiku) 
 	   	printf(" .     %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %10s\n",
        	   	"mkdir","chdir","rmdir","create","open","read","write","close","stat",
 		"access","chmod","readdir","delete"," Total_files");
@@ -450,7 +451,7 @@
 	      printf("         Worst readdir(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
 			1/stats[_STAT_READDIR].worst,stats[_STAT_READDIR].worst);
 	   }
-#if !defined(Windows)
+#if 0
 	   /*
 	    * link test 
 	    */
@@ -517,7 +518,7 @@
 	         printf("%7.0f ",stats[_STAT_ACCESS].counter/stats[_STAT_ACCESS].total_time);
 	         printf("%7.0f ",stats[_STAT_CHMOD].counter/stats[_STAT_CHMOD].total_time);
 	         printf("%7.0f ",stats[_STAT_READDIR].counter/stats[_STAT_READDIR].total_time);
-#ifndef Windows
+#if !defined(Windows) || !defined(Haiku)
 	         printf("%7.0f ",stats[_STAT_LINK].counter/stats[_STAT_LINK].total_time);
 	         printf("%7.0f ",stats[_STAT_UNLINK].counter/stats[_STAT_UNLINK].total_time);
 #endif
@@ -540,7 +541,7 @@
 	         printf("%7.0f ",1/stats[_STAT_ACCESS].best);
 	         printf("%7.0f ",1/stats[_STAT_CHMOD].best);
 	         printf("%7.0f ",1/stats[_STAT_READDIR].best);
-#ifndef Windows
+#if !defined(Windows) || !defined(Haiku)
 	         printf("%7.0f ",1/stats[_STAT_LINK].best);
 	         printf("%7.0f ",1/stats[_STAT_UNLINK].best);
 #endif
@@ -563,7 +564,7 @@
 	         printf("%7.0f ",1/stats[_STAT_ACCESS].worst);
 	         printf("%7.0f ",1/stats[_STAT_CHMOD].worst);
 	         printf("%7.0f ",1/stats[_STAT_READDIR].worst);
-#ifndef Windows
+#if !defined(Windows) || !defined(Haiku)
 	         printf("%7.0f ",1/stats[_STAT_LINK].worst);
 	         printf("%7.0f ",1/stats[_STAT_UNLINK].worst);
 #endif
@@ -589,9 +590,10 @@
 	{
 	  sprintf(buf,"fileop_L1_%d",i);
 	  stats[_STAT_DIR_CREATE].starttime=time_so_far();
-	  ret=mkdir(buf,0777);
+	  ret=mkdir(buf, 0777);
 	  if(ret < 0)
 	  {
+	  	  printf("ret = %d", ret);
 	      printf("Mkdir failed\n");
 	      exit(1);
 	  }
diff -Naur iozone3_326/src/current/iozone.c iozone3_326.haiku/src/current/iozone.c
--- iozone3_326/src/current/iozone.c	2009-06-19 09:00:44.000000000 -0500
+++ iozone3_326.haiku/src/current/iozone.c	2011-01-06 08:20:02.000000000 -0600
@@ -57,7 +57,7 @@
 #include <Windows.h>
 int errno;
 #else
-#if defined(linux)
+#if defined(linux) || defined(Haiku)
 #include <errno.h>
 #else
 extern  int errno;   /* imported for errors */
@@ -79,7 +79,7 @@
 #include <pthread.h>
 #endif
 
-#if defined(HAVE_ANSIC_C) && defined(linux)
+#if defined(HAVE_ANSIC_C) && (defined(linux) || defined(haiku)) 
 #include <stdlib.h>
 #include <sys/wait.h>
 #endif
@@ -92,7 +92,7 @@
 int unlink();
 int main();
 void record_command_line();
-#if !defined(linux)
+#if !defined(linux) || !defined(haiku)
 int wait();
 #endif
 int fsync();
@@ -271,6 +271,13 @@
 #include <string.h>
 #endif
 
+#if defined(__HAIKU__)
+#include <malloc.h>
+#include <stdlib.h>
+#include <string.h>
+#endif
+
+
 #if defined (__FreeBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__APPLE__) || defined(__DragonFly__)
 #ifndef O_SYNC
 #define O_SYNC O_FSYNC
@@ -390,7 +397,7 @@
 #define MAP_ANONYMOUS MAP_ANON
 #endif
 
-#if defined(SCO_Unixware_gcc) || defined(solaris) || defined(UWIN) || defined(SCO)
+#if defined(SCO_Unixware_gcc) || defined(solaris) || defined(UWIN) || defined(SCO) || defined(Haiku)
 #define MAP_FILE (0)
 #endif
 
diff -Naur iozone3_326/src/current/iozone_visualizer.pl iozone3_326.haiku/src/current/iozone_visualizer.pl
--- iozone3_326/src/current/iozone_visualizer.pl	2009-06-19 09:00:44.000000000 -0500
+++ iozone3_326.haiku/src/current/iozone_visualizer.pl	2011-01-06 08:20:02.000000000 -0600
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!/boot/common/bin/perl
 
 use warnings;
 use strict;
diff -Naur iozone3_326/src/current/libbif.c iozone3_326.haiku/src/current/libbif.c
--- iozone3_326/src/current/libbif.c	2009-06-19 09:00:44.000000000 -0500
+++ iozone3_326.haiku/src/current/libbif.c	2011-01-06 08:20:02.000000000 -0600
@@ -14,7 +14,7 @@
 #include <sys/types.h>
 #include <stdio.h>
 #include <sys/file.h>
-#if defined(__AIX__) || defined(__FreeBSD__) || defined(__DragonFly__)
+#if defined(__AIX__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(Haiku)
 #include <fcntl.h>
 #else
 #include <sys/fcntl.h>
@@ -24,7 +24,7 @@
 #include <string.h>
 #endif
 
-#if defined(linux) || defined(__DragonFly__) || defined(macosx)
+#if defined(linux) || defined(__DragonFly__) || defined(macosx) || defined(Haiku)
 #include <unistd.h>
 #include <stdlib.h>
 #endif
diff -Naur iozone3_326/src/current/makefile iozone3_326.haiku/src/current/makefile
--- iozone3_326/src/current/makefile	2009-06-19 09:00:44.000000000 -0500
+++ iozone3_326.haiku/src/current/makefile	2011-01-06 08:20:02.000000000 -0600
@@ -30,6 +30,7 @@
 	@echo "        ->   freebsd              (32bit)   <-"
 	@echo "        ->   generic              (32bit)   <-"
 	@echo "        ->   ghpux                (32bit)   <-"
+	@echo "        ->   haiku                (32bit)   <-"
 	@echo "        ->   hpuxs-11.0 (simple)  (32bit)   <-"
 	@echo "        ->   hpux-11.0w           (64bit)   <-"
 	@echo "        ->   hpuxs-11.0w          (64bit)   <-"
@@ -83,6 +84,12 @@
 	cp ../../iozone*.tar /usr/src/red*/SO*
 	rpmbuild -ba spec.in
 
+#
+# GNU 'C' compiler Linux build with threads, largefiles, async I/O 
+#
+haiku:	iozone_haiku.o libbif.o fileop_haiku.o
+	$(CC)  -O3 $(LDFLAGS) -lnetwork iozone_haiku.o libbif.o -o iozone
+	$(CC)  -O3  -lnetwork fileop_haiku.o -o fileop
 
 #
 # Turn on the optimizer, largefiles, Posix async I/O and threads.
@@ -529,6 +536,16 @@
 # Now for the machine specific stuff
 #
 
+iozone_haiku.o:	iozone.c libbif.c 
+	@echo ""
+	@echo "Building iozone for Haiku"
+	@echo ""
+	$(CC) -Wall -c -O3 -Dunix -DHAVE_ANSIC_C -DHAVE_PREAD \
+		 -DNO_MADVISE -DHaiku $(CFLAGS) iozone.c \
+		-DNAME='"haiku"' -o iozone_haiku.o
+	$(CC) -Wall -c -O3 -Dunix -DHAVE_ANSIC_C \
+		 -DNO_MADVISE -DHaiku $(CFLAGS) libbif.c -o libbif.o
+
 iozone_hpux.o:	iozone.c libbif.c
 	@echo ""
 	@echo "Building iozone for HP-UX (9.05)"
@@ -695,6 +712,13 @@
 	$(CC) -Wall -c -O3 -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \
 		-D_LARGEFILE64_SOURCE $(CFLAGS) libasync.c  -o libasync.o 
 
+fileop_haiku.o:	fileop.c
+	@echo ""
+	@echo "Building fileop for Haiku"
+	@echo ""
+	$(CC) -c -O $(CFLAGS) -DHaiku fileop.c -o fileop_haiku.o
+
+
 fileop_AIX.o:	fileop.c
 	@echo ""
 	@echo "Building fileop for AIX"
diff -Naur iozone3_326/src/current/report.pl iozone3_326.haiku/src/current/report.pl
--- iozone3_326/src/current/report.pl	2009-06-19 09:00:44.000000000 -0500
+++ iozone3_326.haiku/src/current/report.pl	2011-01-06 08:20:02.000000000 -0600
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!/boot/common/bin/perl
 #
 # arguments: one of more report files
 #
