diff options
author | Robert Watson <rwatson@FreeBSD.org> | 2005-08-03 17:33:46 +0000 |
---|---|---|
committer | Robert Watson <rwatson@FreeBSD.org> | 2005-08-03 17:33:46 +0000 |
commit | fa2b8debfe2a3ffca9eb22977143bd4ea2271d82 (patch) | |
tree | a19526128c4bd5d6498ba36558a4bc19b01ef464 /tools/tools/syscall_timing | |
parent | c2e94196e3b1498c81a8ed832a5cab61685b4e48 (diff) | |
download | src-fa2b8debfe2a3ffca9eb22977143bd4ea2271d82.tar.gz src-fa2b8debfe2a3ffca9eb22977143bd4ea2271d82.zip |
Add a few more system call timing cases:
Rename current socket creation test to socket_stream.
Add new socket_dgram test.
Add new socketpair_stream test.
Add new socketpair_dgram test.
Notes
Notes:
svn path=/head/; revision=148681
Diffstat (limited to 'tools/tools/syscall_timing')
-rw-r--r-- | tools/tools/syscall_timing/syscall_timing.c | 75 |
1 files changed, 65 insertions, 10 deletions
diff --git a/tools/tools/syscall_timing/syscall_timing.c b/tools/tools/syscall_timing/syscall_timing.c index 3e4ca8dceca9..7263906ea184 100644 --- a/tools/tools/syscall_timing/syscall_timing.c +++ b/tools/tools/syscall_timing/syscall_timing.c @@ -110,31 +110,74 @@ test_pipe(int num) } inline void -test_socket(int num) +test_socket_stream(int num) { int i, so; - /* - * Sockets are also expensive, but unlike pipes, currently - * require Giant. - */ for (i = 0; i < num; i++) { so = socket(PF_LOCAL, SOCK_STREAM, 0); if (so == -1) { - perror("socket"); + perror("socket_stream"); exit(-1); } close(so); } } +inline void +test_socket_dgram(int num) +{ + int i, so; + + for (i = 0; i < num; i++) { + so = socket(PF_LOCAL, SOCK_DGRAM, 0); + if (so == -1) { + perror("socket_dgram"); + exit(-1); + } + close(so); + } +} + +inline void +test_socketpair_stream(int num) +{ + int i, so[2]; + + for (i = 0; i < num; i++) { + if (socketpair(PF_LOCAL, SOCK_STREAM, 0, so) == -1) { + perror("socketpair_stream"); + exit(-1); + } + close(so[0]); + close(so[1]); + } +} + +inline void +test_socketpair_dgram(int num) +{ + int i, so[2]; + + for (i = 0; i < num; i++) { + if (socketpair(PF_LOCAL, SOCK_DGRAM, 0, so) == -1) { + perror("socketpair_dgram"); + exit(-1); + } + close(so[0]); + close(so[1]); + } +} + static void usage(void) { fprintf(stderr, "syscall_timing [iterations] [test]\n"); - fprintf(stderr, "supported tests: getuid getppid clock_gettime " - "pipe socket\n"); + fprintf(stderr, + "supported tests: getuid getppid clock_gettime pipe\n" + "socket_stream socket_dgram socketpair_stream\n" + "socketpair_dgram\n"); exit(-1); } @@ -167,9 +210,21 @@ main(int argc, char *argv[]) assert(clock_gettime(CLOCK_REALTIME, &ts_start) == 0); test_pipe(count); assert(clock_gettime(CLOCK_REALTIME, &ts_end) == 0); - } else if (strcmp(argv[2], "socket") == 0) { + } else if (strcmp(argv[2], "socket_stream") == 0) { + assert(clock_gettime(CLOCK_REALTIME, &ts_start) == 0); + test_socket_stream(count); + assert(clock_gettime(CLOCK_REALTIME, &ts_end) == 0); + } else if (strcmp(argv[2], "socket_dgram") == 0) { + assert(clock_gettime(CLOCK_REALTIME, &ts_start) == 0); + test_socket_dgram(count); + assert(clock_gettime(CLOCK_REALTIME, &ts_end) == 0); + } else if (strcmp(argv[2], "socketpair_stream") == 0) { + assert(clock_gettime(CLOCK_REALTIME, &ts_start) == 0); + test_socketpair_stream(count); + assert(clock_gettime(CLOCK_REALTIME, &ts_end) == 0); + } else if (strcmp(argv[2], "socketpair_dgram") == 0) { assert(clock_gettime(CLOCK_REALTIME, &ts_start) == 0); - test_socket(count); + test_socketpair_dgram(count); assert(clock_gettime(CLOCK_REALTIME, &ts_end) == 0); } else usage(); |