99 lines
2.1 KiB
Diff
99 lines
2.1 KiB
Diff
diff -u old/ new/
|
|
--- old/Makefile.in 2008-09-18 14:43:55.000000000 -0700
|
|
+++ new/Makefile.in 2008-09-18 14:42:53.000000000 -0700
|
|
@@ -22,10 +22,10 @@
|
|
all: dbench tbench tbench_srv
|
|
|
|
dbench: $(DB_OBJS)
|
|
- $(CC) -o $@ $(DB_OBJS) $(LIBS)
|
|
+ $(CC) -lpthread -o $@ $(DB_OBJS) $(LIBS)
|
|
|
|
tbench: $(TB_OBJS)
|
|
- $(CC) -o $@ $(TB_OBJS) $(LIBS)
|
|
+ $(CC) -lpthread -o $@ $(TB_OBJS) $(LIBS)
|
|
|
|
tbench_srv: $(SRV_OBJS)
|
|
$(CC) -o $@ $(SRV_OBJS) $(LIBS)
|
|
diff -u old/ new/
|
|
--- old/dbench.c 2008-09-18 14:43:49.000000000 -0700
|
|
+++ new/dbench.c 2008-09-18 14:42:46.000000000 -0700
|
|
@@ -130,6 +130,8 @@
|
|
int synccount;
|
|
struct timeval tv;
|
|
FILE *load;
|
|
+ int shmid;
|
|
+ sem_t *sema;
|
|
|
|
load = open_loadfile();
|
|
if (load == NULL) {
|
|
@@ -162,12 +164,24 @@
|
|
children[i].directory = directory;
|
|
}
|
|
|
|
+ shmid = shmget(IPC_PRIVATE, sizeof(*sema), IPC_CREAT | 0666);
|
|
+ if (shmid < 0) {
|
|
+ perror("could not create shared memory segment");
|
|
+ exit(1);
|
|
+ }
|
|
+ sema = shmat(shmid, NULL, 0);
|
|
+
|
|
+ if (sem_init(sema, 1, 0) < 0) {
|
|
+ perror("semaphore initilization failed");
|
|
+ exit(1);
|
|
+ }
|
|
+
|
|
for (i=0;i<nprocs;i++) {
|
|
if (fork() == 0) {
|
|
setlinebuf(stdout);
|
|
nb_setup(&children[i]);
|
|
children[i].status = getpid();
|
|
- pause();
|
|
+ sem_wait(sema);
|
|
fn(&children[i], loadfile);
|
|
_exit(0);
|
|
}
|
|
@@ -185,12 +199,14 @@
|
|
|
|
if (synccount != nprocs) {
|
|
printf("FAILED TO START %d CLIENTS (started %d)\n", nprocs, synccount);
|
|
+ shmdt(sema);
|
|
return;
|
|
}
|
|
|
|
printf("%d clients started\n", nprocs);
|
|
|
|
- kill(0, SIGCONT);
|
|
+ for (i=0;i<nprocs;i++)
|
|
+ sem_post(sema);
|
|
|
|
tv_start = timeval_current();
|
|
|
|
@@ -202,6 +218,7 @@
|
|
if (WEXITSTATUS(status) != 0) {
|
|
printf("Child failed with status %d\n",
|
|
WEXITSTATUS(status));
|
|
+ shmdt(sema);
|
|
exit(1);
|
|
}
|
|
i++;
|
|
@@ -210,6 +227,8 @@
|
|
alarm(0);
|
|
sig_alarm(SIGALRM);
|
|
|
|
+ shmdt(sema);
|
|
+
|
|
printf("\n");
|
|
}
|
|
|
|
diff -u old/ new/
|
|
--- old/dbench.h 2008-09-18 14:43:48.000000000 -0700
|
|
+++ new/dbench.h 2008-09-18 14:42:48.000000000 -0700
|
|
@@ -35,6 +35,7 @@
|
|
#include <sys/ipc.h>
|
|
#include <sys/shm.h>
|
|
#include <sys/mman.h>
|
|
+#include <semaphore.h>
|
|
|
|
#ifdef HAVE_SYS_VFS_H
|
|
#include <sys/vfs.h>
|