Make syscall_timing(1) default to a temporary file when run without -p.
Obtained from: CheriBSD MFC after: 2 weeks Sponsored by: DARPA, AFRL
This commit is contained in:
parent
a250df51f7
commit
3d21466535
@ -38,6 +38,7 @@
|
||||
|
||||
#include <assert.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <inttypes.h>
|
||||
#include <limits.h>
|
||||
@ -693,15 +694,17 @@ main(int argc, char *argv[])
|
||||
struct timespec ts_res;
|
||||
const struct test *the_test;
|
||||
const char *path;
|
||||
char *tmp_dir, *tmp_path;
|
||||
long long ll;
|
||||
char *endp;
|
||||
int ch, error, i, j, k;
|
||||
int ch, fd, error, i, j, k, rv;
|
||||
uintmax_t iterations, loops;
|
||||
|
||||
alarm_timeout = 1;
|
||||
iterations = 0;
|
||||
loops = 10;
|
||||
path = NULL;
|
||||
tmp_path = NULL;
|
||||
while ((ch = getopt(argc, argv, "i:l:p:s:")) != -1) {
|
||||
switch (ch) {
|
||||
case 'i':
|
||||
@ -760,7 +763,15 @@ main(int argc, char *argv[])
|
||||
if (the_test == NULL)
|
||||
usage();
|
||||
if ((the_test->t_flags & FLAG_PATH) && (path == NULL)) {
|
||||
errx(-1, "%s requires -p", the_test->t_name);
|
||||
tmp_dir = strdup("/tmp/syscall_timing.XXXXXXXX");
|
||||
if (tmp_dir == NULL)
|
||||
err(1, "strdup");
|
||||
tmp_dir = mkdtemp(tmp_dir);
|
||||
if (tmp_dir == NULL)
|
||||
err(1, "mkdtemp");
|
||||
rv = asprintf(&tmp_path, "%s/testfile", tmp_dir);
|
||||
if (rv <= 0)
|
||||
err(1, "asprintf");
|
||||
}
|
||||
}
|
||||
|
||||
@ -779,6 +790,19 @@ main(int argc, char *argv[])
|
||||
the_test = &tests[i];
|
||||
}
|
||||
|
||||
if (tmp_path != NULL) {
|
||||
fd = open(tmp_path, O_WRONLY | O_CREAT, 0700);
|
||||
if (fd < 0)
|
||||
err(1, "cannot open %s", tmp_path);
|
||||
error = ftruncate(fd, 1000000);
|
||||
if (error != 0)
|
||||
err(1, "ftruncate");
|
||||
error = close(fd);
|
||||
if (error != 0)
|
||||
err(1, "close");
|
||||
path = tmp_path;
|
||||
}
|
||||
|
||||
/*
|
||||
* Run one warmup, then do the real thing (loops) times.
|
||||
*/
|
||||
@ -804,5 +828,15 @@ main(int argc, char *argv[])
|
||||
printf("0.%09ju\n", (uintmax_t)nsecsperit);
|
||||
}
|
||||
}
|
||||
|
||||
if (tmp_path != NULL) {
|
||||
error = unlink(tmp_path);
|
||||
if (error != 0 && errno != ENOENT)
|
||||
warn("cannot unlink %s", tmp_path);
|
||||
error = rmdir(tmp_dir);
|
||||
if (error != 0)
|
||||
warn("cannot rmdir %s", tmp_dir);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user