Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 169770
b: refs/heads/master
c: 12eac0b
h: refs/heads/master
v: v3
  • Loading branch information
Hitoshi Mitake authored and Ingo Molnar committed Nov 22, 2009
1 parent b4bb4bd commit ce02f60
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 16 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 827f3b4974c5db2968d4979fe6a0ae00ab37bdd8
refs/heads/master: 12eac0bf0461910ae6dd7f071f156f75461a37cf
37 changes: 22 additions & 15 deletions trunk/tools/perf/bench/mem-memcpy.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@

#define K 1024

static const char *length_str = "1MB";
static const char *routine = "default";
static int use_clock = 0;
static const char *length_str = "1MB";
static const char *routine = "default";
static int use_clock = 0;
static int clock_fd;

static const struct option options[] = {
OPT_STRING('l', "length", &length_str, "1MB",
Expand Down Expand Up @@ -57,17 +58,19 @@ static const char * const bench_mem_memcpy_usage[] = {
NULL
};

static int clock_fd;

static struct perf_event_attr clock_attr = {
.type = PERF_TYPE_HARDWARE,
.config = PERF_COUNT_HW_CPU_CYCLES
.type = PERF_TYPE_HARDWARE,
.config = PERF_COUNT_HW_CPU_CYCLES
};

static void init_clock(void)
{
clock_fd = sys_perf_event_open(&clock_attr, getpid(), -1, -1, 0);
BUG_ON(clock_fd < 0);

if (clock_fd < 0 && errno == ENOSYS)
die("No CONFIG_PERF_EVENTS=y kernel support configured?\n");
else
BUG_ON(clock_fd < 0);
}

static u64 get_clock(void)
Expand Down Expand Up @@ -104,7 +107,8 @@ int bench_mem_memcpy(int argc, const char **argv,
tv_diff.tv_sec = 0;
tv_diff.tv_usec = 0;
length = (size_t)perf_atoll((char *)length_str);
if ((long long int)length <= 0) {

if ((s64)length <= 0) {
fprintf(stderr, "Invalid length:%s\n", length_str);
return 1;
}
Expand All @@ -124,9 +128,12 @@ int bench_mem_memcpy(int argc, const char **argv,
}

dst = calloc(length, sizeof(char));
assert(dst);
if (!dst)
die("memory allocation failed - maybe length is too large?\n");

src = calloc(length, sizeof(char));
assert(src);
if (!src)
die("memory allocation failed - maybe length is too large?\n");

if (bench_format == BENCH_FORMAT_DEFAULT) {
printf("# Copying %s Bytes from %p to %p ...\n\n",
Expand All @@ -136,8 +143,9 @@ int bench_mem_memcpy(int argc, const char **argv,
if (use_clock) {
init_clock();
clock_start = get_clock();
} else
} else {
BUG_ON(gettimeofday(&tv_start, NULL));
}

routines[i].fn(dst, src, length);

Expand Down Expand Up @@ -176,9 +184,8 @@ int bench_mem_memcpy(int argc, const char **argv,
printf("%lf\n", bps);
break;
default:
/* reaching here is something disaster */
fprintf(stderr, "Unknown format:%d\n", bench_format);
exit(1);
/* reaching this means there's some disaster: */
die("unknown format: %d\n", bench_format);
break;
}

Expand Down

0 comments on commit ce02f60

Please sign in to comment.