Date: Thu, 21 Oct 2010 19:01:59 +0000 (UTC) From: Robert Watson <rwatson@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r214151 - head/tools/tools/syscall_timing Message-ID: <201010211901.o9LJ1x0b000318@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: rwatson Date: Thu Oct 21 19:01:59 2010 New Revision: 214151 URL: http://svn.freebsd.org/changeset/base/214151 Log: Further syscall_timing improvements: allow an arbitrary "path" string argument to be passed on the command line, allowing file-related tests to be pointed at wherever desired. Sponsored by: Google, Inc. MFC after: 2 weeks Modified: head/tools/tools/syscall_timing/syscall_timing.c Modified: head/tools/tools/syscall_timing/syscall_timing.c ============================================================================== --- head/tools/tools/syscall_timing/syscall_timing.c Thu Oct 21 18:59:05 2010 (r214150) +++ head/tools/tools/syscall_timing/syscall_timing.c Thu Oct 21 19:01:59 2010 (r214151) @@ -85,7 +85,7 @@ benchmark_stop(void) } uint64_t -test_getuid(uint64_t num, uint64_t int_arg, const char *string_arg) +test_getuid(uint64_t num, uint64_t int_arg, const char *path) { uint64_t i; @@ -104,7 +104,7 @@ test_getuid(uint64_t num, uint64_t int_a } uint64_t -test_getppid(uint64_t num, uint64_t int_arg, const char *string_arg) +test_getppid(uint64_t num, uint64_t int_arg, const char *path) { uint64_t i; @@ -123,7 +123,7 @@ test_getppid(uint64_t num, uint64_t int_ } uint64_t -test_clock_gettime(uint64_t num, uint64_t int_arg, const char *string_arg) +test_clock_gettime(uint64_t num, uint64_t int_arg, const char *path) { struct timespec ts; uint64_t i; @@ -139,7 +139,7 @@ test_clock_gettime(uint64_t num, uint64_ } uint64_t -test_pipe(uint64_t num, uint64_t int_arg, const char *string_arg) +test_pipe(uint64_t num, uint64_t int_arg, const char *path) { int fd[2], i; @@ -167,7 +167,7 @@ test_pipe(uint64_t num, uint64_t int_arg } uint64_t -test_socket_stream(uint64_t num, uint64_t int_arg, const char *string_arg) +test_socket_stream(uint64_t num, uint64_t int_arg, const char *path) { uint64_t i, so; @@ -189,7 +189,7 @@ test_socket_stream(uint64_t num, uint64_ } uint64_t -test_socket_dgram(uint64_t num, uint64_t int_arg, const char *string_arg) +test_socket_dgram(uint64_t num, uint64_t int_arg, const char *path) { uint64_t i, so; @@ -211,7 +211,7 @@ test_socket_dgram(uint64_t num, uint64_t } uint64_t -test_socketpair_stream(uint64_t num, uint64_t int_arg, const char *string_arg) +test_socketpair_stream(uint64_t num, uint64_t int_arg, const char *path) { uint64_t i; int so[2]; @@ -234,7 +234,7 @@ test_socketpair_stream(uint64_t num, uin } uint64_t -test_socketpair_dgram(uint64_t num, uint64_t int_arg, const char *string_arg) +test_socketpair_dgram(uint64_t num, uint64_t int_arg, const char *path) { uint64_t i; int so[2]; @@ -257,9 +257,8 @@ test_socketpair_dgram(uint64_t num, uint } uint64_t -test_open_close(uint64_t num, uint64_t int_arg, const char *string_arg) +test_open_close(uint64_t num, uint64_t int_arg, const char *path) { - const char *path = string_arg; uint64_t i; int fd; @@ -282,15 +281,15 @@ test_open_close(uint64_t num, uint64_t i } uint64_t -test_open_read_close(uint64_t num, uint64_t int_arg, const char *string_arg) +test_open_read_close(uint64_t num, uint64_t int_arg, const char *path) { char buf[int_arg]; uint64_t i; int fd; - fd = open(string_arg, O_RDONLY); + fd = open(path, O_RDONLY); if (fd < 0) - err(-1, "test_open_close: %s", string_arg); + err(-1, "test_open_close: %s", path); (void)read(fd, buf, int_arg); close(fd); @@ -298,9 +297,9 @@ test_open_read_close(uint64_t num, uint6 for (i = 0; i < num; i++) { if (alarm_fired) break; - fd = open(string_arg, O_RDONLY); + fd = open(path, O_RDONLY); if (fd < 0) - err(-1, "test_open_close: %s", string_arg); + err(-1, "test_open_close: %s", path); (void)read(fd, buf, int_arg); close(fd); } @@ -309,7 +308,7 @@ test_open_read_close(uint64_t num, uint6 } uint64_t -test_dup(uint64_t num, uint64_t int_arg, const char *string_arg) +test_dup(uint64_t num, uint64_t int_arg, const char *path) { int fd, i, shmfd; @@ -333,7 +332,7 @@ test_dup(uint64_t num, uint64_t int_arg, } uint64_t -test_shmfd(uint64_t num, uint64_t int_arg, const char *string_arg) +test_shmfd(uint64_t num, uint64_t int_arg, const char *path) { uint64_t i, shmfd; @@ -355,7 +354,7 @@ test_shmfd(uint64_t num, uint64_t int_ar } uint64_t -test_fstat_shmfd(uint64_t num, uint64_t int_arg, const char *string_arg) +test_fstat_shmfd(uint64_t num, uint64_t int_arg, const char *path) { struct stat sb; uint64_t i, shmfd; @@ -377,7 +376,7 @@ test_fstat_shmfd(uint64_t num, uint64_t } uint64_t -test_fork(uint64_t num, uint64_t int_arg, const char *string_arg) +test_fork(uint64_t num, uint64_t int_arg, const char *path) { pid_t pid; uint64_t i; @@ -406,7 +405,7 @@ test_fork(uint64_t num, uint64_t int_arg } uint64_t -test_vfork(uint64_t num, uint64_t int_arg, const char *string_arg) +test_vfork(uint64_t num, uint64_t int_arg, const char *path) { pid_t pid; uint64_t i; @@ -439,7 +438,7 @@ static char *execve_args[] = { USR_BIN_T extern char **environ; uint64_t -test_fork_exec(uint64_t num, uint64_t int_arg, const char *string_arg) +test_fork_exec(uint64_t num, uint64_t int_arg, const char *path) { pid_t pid; uint64_t i; @@ -472,7 +471,7 @@ test_fork_exec(uint64_t num, uint64_t in } uint64_t -test_vfork_exec(uint64_t num, uint64_t int_arg, const char *string_arg) +test_vfork_exec(uint64_t num, uint64_t int_arg, const char *path) { pid_t pid; uint64_t i; @@ -505,7 +504,7 @@ test_vfork_exec(uint64_t num, uint64_t i } uint64_t -test_chroot(uint64_t num, uint64_t int_arg, const char *string_arg) +test_chroot(uint64_t num, uint64_t int_arg, const char *path) { uint64_t i; @@ -523,7 +522,7 @@ test_chroot(uint64_t num, uint64_t int_a } uint64_t -test_setuid(uint64_t num, uint64_t int_arg, const char *string_arg) +test_setuid(uint64_t num, uint64_t int_arg, const char *path) { uid_t uid; uint64_t i; @@ -546,7 +545,6 @@ struct test { const char *t_name; uint64_t (*t_func)(uint64_t, uint64_t, const char *); uint64_t t_int; - const char *t_string; }; static const struct test tests[] = { @@ -560,20 +558,13 @@ static const struct test tests[] = { { "socketpair_dgram", test_socketpair_dgram }, { "socket_tcp", test_socket_stream, .t_int = PF_INET }, { "socket_udp", test_socket_dgram, .t_int = PF_INET }, - { "open_close_devnull", test_open_close, .t_string = "/dev/null" }, - { "open_close_devzero", test_open_close, .t_string = "/dev/zero" }, - { "open_read_close_devzero_1", test_open_read_close, - .t_string = "/dev/zero", .t_int = 1 }, - { "open_read_close_devzero_10", test_open_read_close, - .t_string = "/dev/zero", .t_int = 10 }, - { "open_read_close_devzero_100", test_open_read_close, - .t_string = "/dev/zero", .t_int = 100 }, - { "open_read_close_devzero_1000", test_open_read_close, - .t_string = "/dev/zero", .t_int = 1000 }, - { "open_read_close_devzero_10000", test_open_read_close, - .t_string = "/dev/zero", .t_int = 10000 }, - { "open_read_close_devzero_100000", test_open_read_close, - .t_string = "/dev/zero", .t_int = 100000 }, + { "open_close", test_open_close }, + { "open_read_close_1", test_open_read_close, .t_int = 1 }, + { "open_read_close_10", test_open_read_close, .t_int = 10 }, + { "open_read_close_100", test_open_read_close, .t_int = 100 }, + { "open_read_close_1000", test_open_read_close, .t_int = 1000 }, + { "open_read_close_10000", test_open_read_close, .t_int = 10000 }, + { "open_read_close_100000", test_open_read_close, .t_int = 100000 }, { "dup", test_dup }, { "shmfd", test_shmfd }, { "fstat_shmfd", test_fstat_shmfd }, @@ -592,7 +583,7 @@ usage(void) int i; fprintf(stderr, "syscall_timing [-i iterations] [-l loops] " - "[-s seconds] test\n"); + "[-p path] [-s seconds] test\n"); for (i = 0; i < tests_count; i++) fprintf(stderr, " %s\n", tests[i].t_name); exit(-1); @@ -603,6 +594,7 @@ main(int argc, char *argv[]) { struct timespec ts_res; const struct test *the_test; + const char *path; long long ll; char *endp; int ch, i, j, k; @@ -611,7 +603,8 @@ main(int argc, char *argv[]) alarm_timeout = 0; iterations = 0; loops = 0; - while ((ch = getopt(argc, argv, "i:l:s:")) != -1) { + path = NULL; + while ((ch = getopt(argc, argv, "i:l:p:s:")) != -1) { switch (ch) { case 'i': ll = strtol(optarg, &endp, 10); @@ -627,6 +620,10 @@ main(int argc, char *argv[]) loops = ll; break; + case 'p': + path = optarg; + break; + case 's': ll = strtol(optarg, &endp, 10); if (*endp != 0 || ll < 1 || ll > 60*60) @@ -671,12 +668,11 @@ main(int argc, char *argv[]) /* * Run one warmup, then do the real thing (loops) times. */ - the_test->t_func(iterations, the_test->t_int, - the_test->t_string); + the_test->t_func(iterations, the_test->t_int, path); calls = 0; for (k = 0; k < loops; k++) { - calls = the_test->t_func(iterations, - the_test->t_int, the_test->t_string); + calls = the_test->t_func(iterations, the_test->t_int, + path); timespecsub(&ts_end, &ts_start); printf("%s\t%d\t", the_test->t_name, k); printf("%ju.%09ju\t%d\t", (uintmax_t)ts_end.tv_sec,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201010211901.o9LJ1x0b000318>