mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-14 15:50:07 +02:00
250 lines
7.6 KiB
Plaintext
250 lines
7.6 KiB
Plaintext
From 0f41a2987ab4de6d04b395b88bd506e699a42d73 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 57ddf68..d6fb79c 100644
|
|
--- a/src/current/fileop.c
|
|
+++ b/src/current/fileop.c
|
|
@@ -116,7 +116,7 @@ void file_unlink(int);
|
|
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 @@ int dirlen;
|
|
/************************************************************************/
|
|
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 @@ 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");
|
|
@@ -450,7 +451,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
|
|
*/
|
|
@@ -517,7 +518,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
|
|
@@ -540,7 +541,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
|
|
@@ -563,7 +564,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
|
|
@@ -589,9 +590,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 90cee47..bcef6f5 100644
|
|
--- a/src/current/iozone.c
|
|
+++ b/src/current/iozone.c
|
|
@@ -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 @@ extern int h_errno; /* imported for errors */
|
|
#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 close();
|
|
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 @@ 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
|
|
@@ -390,7 +397,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
|
|
|
|
diff --git a/src/current/iozone_visualizer.pl b/src/current/iozone_visualizer.pl
|
|
index a5a7d2d..4e7ba23 100755
|
|
--- a/src/current/iozone_visualizer.pl
|
|
+++ b/src/current/iozone_visualizer.pl
|
|
@@ -1,4 +1,4 @@
|
|
-#!/usr/bin/perl
|
|
+#!/boot/common/bin/perl
|
|
|
|
use warnings;
|
|
use strict;
|
|
diff --git a/src/current/libbif.c b/src/current/libbif.c
|
|
index 406d3c2..9c5ed32 100644
|
|
--- a/src/current/libbif.c
|
|
+++ b/src/current/libbif.c
|
|
@@ -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 --git a/src/current/makefile b/src/current/makefile
|
|
index 994a2b4..9c61709 100644
|
|
--- a/src/current/makefile
|
|
+++ b/src/current/makefile
|
|
@@ -30,6 +30,7 @@ all:
|
|
@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 @@ rpm:
|
|
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 @@ netbsd: iozone_netbsd.o libbif.o fileop_netbsd.o
|
|
# 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 @@ iozone_linux.o: iozone.c libbif.c libasync.c
|
|
$(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 --git a/src/current/report.pl b/src/current/report.pl
|
|
index 76943f3..d6976e2 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.7.0
|
|
|