357 lines
13 KiB
Plaintext
357 lines
13 KiB
Plaintext
From d2bb34270a3c68941f3b117a2e83a3e20e3b6a9b Mon Sep 17 00:00:00 2001
|
|
From: Jerome Duval <jerome.duval@gmail.com>
|
|
Date: Sat, 26 Aug 2017 13:21:47 +0200
|
|
Subject: Haiku patch
|
|
|
|
|
|
diff --git a/src/current/fileop.c b/src/current/fileop.c
|
|
index 70010f4..f37db06 100644
|
|
--- a/src/current/fileop.c
|
|
+++ b/src/current/fileop.c
|
|
@@ -145,14 +145,15 @@ int dirlen;
|
|
/************************************************************************/
|
|
void purge_buffer_cache()
|
|
{
|
|
- if (!mountname)
|
|
- return;
|
|
+
|
|
|
|
char cwd[PATH_MAX];
|
|
char command[1024];
|
|
int ret,i;
|
|
|
|
junkp=(int *)getcwd(cwd, sizeof(cwd));
|
|
+ if (!mountname)
|
|
+ return;
|
|
junk=chdir("/");
|
|
strcpy(command,"umount ");
|
|
strcat(command, mountname);
|
|
@@ -254,7 +255,7 @@ int main(int argc, char **argv)
|
|
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");
|
|
@@ -462,7 +463,7 @@ int main(int argc, char **argv)
|
|
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
|
|
*/
|
|
@@ -529,7 +530,7 @@ int main(int argc, char **argv)
|
|
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
|
|
@@ -552,7 +553,7 @@ int main(int argc, char **argv)
|
|
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
|
|
@@ -575,7 +576,7 @@ int main(int argc, char **argv)
|
|
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
|
|
@@ -601,9 +602,10 @@ dir_create(int x)
|
|
{
|
|
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 --git a/src/current/iozone.c b/src/current/iozone.c
|
|
index 5407795..727a053 100644
|
|
--- a/src/current/iozone.c
|
|
+++ b/src/current/iozone.c
|
|
@@ -74,7 +74,7 @@
|
|
#include <windows.h>
|
|
#include <errno.h>
|
|
#else
|
|
-#if defined(linux) || defined(solaris) || defined(IOZ_macosx) || defined(__AIX__) || defined(__FreeBSD__) || defined(_HPUX_SOURCE) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__NetBSD__)
|
|
+#if defined(linux) || defined(solaris) || defined(IOZ_macosx) || defined(__AIX__) || defined(__FreeBSD__) || defined(_HPUX_SOURCE) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(Haiku)
|
|
#include <errno.h>
|
|
#else
|
|
extern int errno; /* imported for errors */
|
|
@@ -106,7 +106,7 @@ extern int h_errno; /* imported for errors */
|
|
syscall(__NR_sched_setaffinity, (pid_t)pid, (size_t)size, (void *)cpuset)
|
|
#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
|
|
@@ -118,7 +118,7 @@ int atoi();
|
|
int close();
|
|
int unlink();
|
|
int main();
|
|
-#if !defined(linux)
|
|
+#if !defined(linux) && !defined(Haiku)
|
|
int wait();
|
|
#endif
|
|
int fsync();
|
|
@@ -296,7 +296,7 @@ THISVERSION,
|
|
#include <stdio.h>
|
|
#include <signal.h>
|
|
|
|
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows)
|
|
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows) || defined(Haiku)
|
|
#ifndef my_sig_t
|
|
typedef void (*my_sig_t)(int);
|
|
#endif
|
|
@@ -313,6 +313,13 @@ THISVERSION,
|
|
#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
|
|
@@ -444,7 +451,7 @@ typedef long long off64_t;
|
|
#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
|
|
|
|
@@ -1032,7 +1039,7 @@ float do_compute(float); /* compute cycle simulation */
|
|
void begin(off64_t,long long);
|
|
void record_command_line(int, char **);
|
|
void show_help(void); /* show development help */
|
|
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows)
|
|
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows) || defined(Haiku)
|
|
my_sig_t signal_handler(void); /* clean up if user interrupts us */
|
|
#else
|
|
sighandler_t signal_handler(void); /* clean up if user interrupts us */
|
|
@@ -1925,7 +1932,7 @@ char **argv;
|
|
argvsave=argv;
|
|
|
|
#ifndef NO_SIGNAL
|
|
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows)
|
|
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows) || defined(Haiku)
|
|
signal((int) SIGINT, (my_sig_t) signal_handler); /* handle user interrupt */
|
|
signal((int) SIGTERM, (my_sig_t) signal_handler); /* handle kill from shell */
|
|
#else
|
|
@@ -2704,6 +2711,9 @@ char **argv;
|
|
sprintf(splash[splash_line++],"\tDedup+compress enabled\n ");
|
|
break;
|
|
case 'R': /* Speical Windows option to read filelist from a input file. Experimental */
|
|
+ {
|
|
+ struct stat outbuf;
|
|
+ int result;
|
|
mfflag++;
|
|
subarg = argv[optind++];
|
|
if(subarg==(char *)0)
|
|
@@ -2713,8 +2723,6 @@ char **argv;
|
|
}
|
|
sprintf(splash[splash_line++],"\tFilenames from a file option enabled. File: %s\n ",subarg);
|
|
/* filename should be used instead of filelist */
|
|
- struct stat outbuf;
|
|
- int result;
|
|
result = stat(subarg, &outbuf);
|
|
if(result == -1) {
|
|
printf("Failed to stat the iozone input file: %s\n",argv[optind]);
|
|
@@ -2755,7 +2763,7 @@ char **argv;
|
|
}
|
|
}
|
|
break;
|
|
-
|
|
+ }
|
|
case 'c': /* Argument is the controlling host name */
|
|
/* I am a client for distributed Iozone */
|
|
subarg=argv[optind++];
|
|
@@ -3730,13 +3738,13 @@ void show_help()
|
|
|
|
******************************************************************/
|
|
#ifdef HAVE_ANSIC_C
|
|
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows)
|
|
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows) || defined(Haiku)
|
|
my_sig_t signal_handler(void)
|
|
#else
|
|
sighandler_t signal_handler(void)
|
|
#endif
|
|
#else
|
|
-#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows)
|
|
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(solaris) || defined(Windows) || defined(Haiku)
|
|
my_sig_t signal_handler()
|
|
#else
|
|
sighandler_t signal_handler()
|
|
@@ -24871,7 +24879,7 @@ int main(void)
|
|
int false = 0;
|
|
int true = 1;
|
|
#else
|
|
-typedef enum { false = 0, true } boolean;
|
|
+//typedef enum { false = 0, true } boolean;
|
|
#endif
|
|
typedef struct sockaddr_in sockaddr_in_t;
|
|
typedef struct sockaddr_in6 sockaddr_in6_t;
|
|
@@ -25285,11 +25293,12 @@ void * thread_fwrite_test( x)
|
|
FILE *stream = NULL;
|
|
int First_Run[MAXSTREAMS];
|
|
int kk;
|
|
+ double burst_acc_time_sec;
|
|
|
|
for(kk=0;kk<MAXSTREAMS;kk++)
|
|
First_Run[kk]=1;
|
|
|
|
- double burst_acc_time_sec = 0;
|
|
+ burst_acc_time_sec = 0;
|
|
|
|
if(compute_flag)
|
|
delay=compute_time;
|
|
@@ -25749,6 +25758,10 @@ void * thread_fread_test( x)
|
|
char tmpname[256];
|
|
FILE *thread_wqfd;
|
|
FILE *thread_Lwqfd;
|
|
+ char *stdio_buf;
|
|
+ char *filename;
|
|
+ long long Index = 0;
|
|
+ FILE *stream = NULL;
|
|
|
|
if(compute_flag)
|
|
delay=compute_time;
|
|
@@ -25757,10 +25770,6 @@ void * thread_fread_test( x)
|
|
thread_wqfd=w_traj_fd=thread_Lwqfd=(FILE *)0;
|
|
traj_offset=walltime=cputime=0;
|
|
anwser=bind_cpu=0;
|
|
- char *stdio_buf;
|
|
- long long Index = 0;
|
|
- FILE *stream = NULL;
|
|
- char *filename;
|
|
|
|
if(w_traj_flag)
|
|
{
|
|
diff --git a/src/current/iozone_visualizer.pl b/src/current/iozone_visualizer.pl
|
|
index 5d5a52c..9ebd809 100755
|
|
--- a/src/current/iozone_visualizer.pl
|
|
+++ b/src/current/iozone_visualizer.pl
|
|
@@ -1,4 +1,4 @@
|
|
-#!/usr/bin/env perl
|
|
+#!/boot/common/bin/perl
|
|
|
|
use warnings;
|
|
use strict;
|
|
diff --git a/src/current/libbif.c b/src/current/libbif.c
|
|
index 5e14e5f..b54b71c 100644
|
|
--- a/src/current/libbif.c
|
|
+++ b/src/current/libbif.c
|
|
@@ -17,7 +17,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>
|
|
@@ -27,7 +27,7 @@
|
|
#include <string.h>
|
|
#endif
|
|
|
|
-#if defined(linux) || defined(__DragonFly__) || defined(IOZ_macosx) || defined(__NetBSD__) || defined(Windows)
|
|
+#if defined(linux) || defined(__DragonFly__) || defined(IOZ_macosx) || defined(__NetBSD__) || defined(Windows) || defined(Haiku)
|
|
#include <unistd.h>
|
|
#include <stdlib.h>
|
|
#endif
|
|
diff --git a/src/current/makefile b/src/current/makefile
|
|
index 3a54701..7da4813 100644
|
|
--- a/src/current/makefile
|
|
+++ b/src/current/makefile
|
|
@@ -42,6 +42,7 @@ all:
|
|
@echo " -> freebsd64 (64bit) <-"
|
|
@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) <-"
|
|
@@ -97,6 +98,12 @@ rpm:
|
|
cp ../../iozone*.tar /home/capps/rpmbuild/SOURCES/
|
|
rpmbuild -ba --buildroot /home/capps/rpmbuild/BUILDROOT 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.
|
|
@@ -647,6 +654,16 @@ netbsd-AMD64: iozone_netbsd-AMD64.o libbif.o libasync.o fileop_netbsd-AMD64.o p
|
|
# 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)"
|
|
@@ -849,6 +866,13 @@ iozone_linux.o: iozone.c libbif.c libasync.c
|
|
$(CC) -Wmissing-prototypes -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 --git a/src/current/report.pl b/src/current/report.pl
|
|
index 3b21055..a83580c 100755
|
|
--- a/src/current/report.pl
|
|
+++ b/src/current/report.pl
|
|
@@ -1,4 +1,4 @@
|
|
-#!/usr/bin/perl
|
|
+#!/boot/common/bin/perl
|
|
#
|
|
# arguments: one of more report files
|
|
#
|
|
--
|
|
2.30.2
|
|
|