-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 169607 b: refs/heads/master c: 629cc35 h: refs/heads/master i: 169605: 18bb7db 169603: 1e1f85c 169599: 2e6fb7e v: v3
- Loading branch information
Hitoshi Mitake
authored and
Ingo Molnar
committed
Nov 8, 2009
1 parent
b15f673
commit 0b1e7d7
Showing
2 changed files
with
129 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: c7d9300f367f480aee4663a0e3695c5b48859a1a | ||
refs/heads/master: 629cc356653719c206a05f4dee5c5e242edb6546 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
/* | ||
* | ||
* builtin-bench.c | ||
* | ||
* General benchmarking subsystem provided by perf | ||
* | ||
* Copyright (C) 2009, Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp> | ||
* | ||
*/ | ||
|
||
/* | ||
* | ||
* Available subsystem list: | ||
* sched ... scheduler and IPC mechanism | ||
* | ||
*/ | ||
|
||
#include "perf.h" | ||
#include "util/util.h" | ||
#include "util/parse-options.h" | ||
#include "builtin.h" | ||
#include "bench/bench.h" | ||
|
||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
|
||
struct bench_suite { | ||
const char *name; | ||
const char *summary; | ||
int (*fn)(int, const char **, const char *); | ||
}; | ||
|
||
static struct bench_suite sched_suites[] = { | ||
{ "messaging", | ||
"Benchmark for scheduler and IPC mechanisms", | ||
bench_sched_messaging }, | ||
{ "pipe", | ||
"Flood of communication over pipe() between two processes", | ||
bench_sched_pipe }, | ||
{ NULL, | ||
NULL, | ||
NULL } | ||
}; | ||
|
||
struct bench_subsys { | ||
const char *name; | ||
const char *summary; | ||
struct bench_suite *suites; | ||
}; | ||
|
||
static struct bench_subsys subsystems[] = { | ||
{ "sched", | ||
"scheduler and IPC mechanism", | ||
sched_suites }, | ||
{ NULL, | ||
NULL, | ||
NULL } | ||
}; | ||
|
||
static void dump_suites(int subsys_index) | ||
{ | ||
int i; | ||
|
||
printf("List of available suites for %s...\n\n", | ||
subsystems[subsys_index].name); | ||
|
||
for (i = 0; subsystems[subsys_index].suites[i].name; i++) | ||
printf("\t%s: %s\n", | ||
subsystems[subsys_index].suites[i].name, | ||
subsystems[subsys_index].suites[i].summary); | ||
|
||
printf("\n"); | ||
return; | ||
} | ||
|
||
int cmd_bench(int argc, const char **argv, const char *prefix __used) | ||
{ | ||
int i, j, status = 0; | ||
|
||
if (argc < 2) { | ||
/* No subsystem specified. */ | ||
printf("Usage: perf bench <subsystem> <suite> [<options>]\n\n"); | ||
printf("List of available subsystems...\n\n"); | ||
|
||
for (i = 0; subsystems[i].name; i++) | ||
printf("\t%s: %s\n", | ||
subsystems[i].name, subsystems[i].summary); | ||
printf("\n"); | ||
|
||
goto end; | ||
} | ||
|
||
for (i = 0; subsystems[i].name; i++) { | ||
if (strcmp(subsystems[i].name, argv[1])) | ||
continue; | ||
|
||
if (argc < 3) { | ||
/* No suite specified. */ | ||
dump_suites(i); | ||
goto end; | ||
} | ||
|
||
for (j = 0; subsystems[i].suites[j].name; j++) { | ||
if (strcmp(subsystems[i].suites[j].name, argv[2])) | ||
continue; | ||
|
||
status = subsystems[i].suites[j].fn(argc - 2, | ||
argv + 2, prefix); | ||
goto end; | ||
} | ||
|
||
if (!strcmp(argv[2], "-h") || !strcmp(argv[2], "--help")) { | ||
dump_suites(i); | ||
goto end; | ||
} | ||
|
||
printf("Unknown suite:%s for %s\n", argv[2], argv[1]); | ||
status = 1; | ||
goto end; | ||
} | ||
|
||
printf("Unknown subsystem:%s\n", argv[1]); | ||
status = 1; | ||
|
||
end: | ||
return status; | ||
} |