aboutsummaryrefslogtreecommitdiff
path: root/tools/tools/syscall_timing
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2005-08-03 17:33:46 +0000
committerRobert Watson <rwatson@FreeBSD.org>2005-08-03 17:33:46 +0000
commitfa2b8debfe2a3ffca9eb22977143bd4ea2271d82 (patch)
treea19526128c4bd5d6498ba36558a4bc19b01ef464 /tools/tools/syscall_timing
parentc2e94196e3b1498c81a8ed832a5cab61685b4e48 (diff)
downloadsrc-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.c75
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();