Update the sysperf tools to match the current sysmsg functions.
authorEirik Nygaard <eirikn@dragonflybsd.org>
Sun, 31 Oct 2004 20:19:24 +0000 (20:19 +0000)
committerEirik Nygaard <eirikn@dragonflybsd.org>
Sun, 31 Oct 2004 20:19:24 +0000 (20:19 +0000)
sc1 times getuid() using the standard syscall method.
sc2 times getuid() using the new sysmsg method.
sc3 runs in an endless loop calling getuid() with the new sysmsg method.

test/sysperf/Makefile
test/sysperf/getuid_msg.c
test/sysperf/syscall2.c
test/sysperf/syscall3.c

index 7cb3a87..0283bdc 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $DragonFly: src/test/sysperf/Makefile,v 1.9 2004/08/13 02:28:42 dillon Exp $
+# $DragonFly: src/test/sysperf/Makefile,v 1.10 2004/10/31 20:19:23 eirikn Exp $
 #
 
 TARGETS=/tmp/sc1 /tmp/sc2 /tmp/sc3 /tmp/sc4 \
@@ -17,7 +17,7 @@ CFLAGS= -O2 -g -I/usr/src/sys
 
 all:   $(TARGETS)
 
-/tmp/sc1: syscall1.c getuid_msg.c blib.c
+/tmp/sc1: syscall1.c blib.c
        $(CC) $(CFLAGS) syscall1.c blib.c -o /tmp/sc1
 
 /tmp/sc2: syscall2.c getuid_msg.c blib.c
index c3b06e2..ac5f29c 100644 (file)
@@ -1,37 +1,19 @@
 /*
  * getuid_msg.c
  *
- * $DragonFly: src/test/sysperf/getuid_msg.c,v 1.2 2004/07/06 15:32:05 eirikn Exp $
+ * $DragonFly: src/test/sysperf/getuid_msg.c,v 1.3 2004/10/31 20:19:23 eirikn Exp $
  */
 
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/msgport.h>
-#include <sys/syscall.h>
-#include <sys/sysproto.h>
-#include <sys/sysunion.h>
-
-#include "../sysmsg/sendsys.h"
+#include "../sysmsg/syscall.h"
 
 int
 getuid_msg(void)
 {
-    static struct getuid_args uidmsg;
-    int error;
-
-    /*
-     * In real life use a properly pre-initialized message, e.g. stowed in 
-     * the thread structure or cached in a linked list somewhere.
-     * bzero(&sysmsg.lmsg, sizeof(sysmsg.lmsg))
-     */
-    uidmsg.usrmsg.umsg.ms_cmd.cm_op = SYS_getuid;      /* XXX lwkt_init_msg() */
-    uidmsg.usrmsg.umsg.ms_flags = MSGF_DONE;
+       struct getuid_args getuidmsg;
+       int error;
 
-    error = sendsys(NULL, &uidmsg, sizeof(uidmsg));
-    if (error) {
-       printf("error %d\n", error);
-       exit(1);
-    }
-    return(uidmsg.usrmsg.umsg.u.ms_result32);
+       INITMSGSYSCALL(getuid, 0);
+       DOMSGSYSCALL(getuid);
+       FINISHMSGSYSCALL(getuid, error);
 }
 
index 7dc104f..09101f5 100644 (file)
@@ -1,35 +1,35 @@
 /*
  * syscall2.c
  *
- * $DragonFly: src/test/sysperf/syscall2.c,v 1.1 2003/08/12 02:29:44 dillon Exp $
+ * $DragonFly: src/test/sysperf/syscall2.c,v 1.2 2004/10/31 20:19:24 eirikn Exp $
  */
 
+#include <time.h>
+
 #include "blib.h"
 
-extern int getuid_msg(void);
+extern int getuid_test(void);
 
 int
-main(int ac, char **av)
+main(void)
 {
-    long long count = 0;
-    long long max;
-    int j;
-
-    printf("timing getuid_msg syscall\n");
+       struct timespec ts, ts2;
+       int error;
+       long long count = 0;
+       long long max;
+       int j;
 
-    start_timing();
-    while (stop_timing(0, NULL) == 0) {
-       for (j = 0; j < 100; ++j)
-           getuid_msg();
-       count += 100;
-    }
-    max = count;
-    start_timing();
-    for (count = 0; count < max; count += 100) {
-       for (j = 0; j < 100; ++j)
-           getuid_msg();
-    }
-    stop_timing(count, "getuid()");
-    return(0);
+       start_timing();
+       while (stop_timing(0, NULL) == 0) {
+               for (j = 0; j < 100; ++j)
+                       getuid_msg();
+               count += 100;
+       }
+       max = count;
+       start_timing();
+       for (count = 0; count < max; count += 100) {
+               for (j = 0; j < 100; ++j)
+                       getuid_msg();
+       }
+       stop_timing(count, "getuid() sysmsg");
 }
-
index 7d9820f..9af628a 100644 (file)
@@ -1,17 +1,19 @@
 /*
  * syscall3.c
  *
- * $DragonFly: src/test/sysperf/syscall3.c,v 1.1 2003/08/12 02:29:44 dillon Exp $
+ * $DragonFly: src/test/sysperf/syscall3.c,v 1.2 2004/10/31 20:19:24 eirikn Exp $
  */
 
 #include "blib.h"
 
+extern int getuid_msg(void);
+
 int
 main(int ac, char **av)
 {
     printf("(non timing) one process, endless loop calling getuid_msg()\n");
     for (;;) 
-       getuid();
+       getuid_msg();
     /* not reached */
     return(0);
 }