diff --git a/libbpf b/libbpf index f85efa2b43d09b3ce5ee446e55ea7e74ef8bb366..39635dd04328cf581ed629f0ad0d19a313386bcc 160000 --- a/libbpf +++ b/libbpf @@ -1 +1 @@ -Subproject commit f85efa2b43d09b3ce5ee446e55ea7e74ef8bb366 +Subproject commit 39635dd04328cf581ed629f0ad0d19a313386bcc diff --git a/src/task_bulk.bpf.c b/src/task_bulk.bpf.c index 187e3550a284b536a54c2e37ce236ded67a4465e..884c9945a76f45e8e7a1f510a410b0a02fd25757 100644 --- a/src/task_bulk.bpf.c +++ b/src/task_bulk.bpf.c @@ -19,8 +19,8 @@ int openv(long **ctx) for (int i = 0; i < SIZE && i < nr_syscalls; i++) { int fd = bpf_task_sys_open_3((uint64_t) dir, O_TMPFILE | O_RDWR, 0777); - if (fd == -1) { - err = -1; + if (fd < 0) { + err = 1; break; } fds[i] = fd; diff --git a/src/task_bulk.c b/src/task_bulk.c index c63d2ac24427e9bc4a8ec3b7163baa01743b24cf..dd4d69b91c97df9af6836d8e22c74a4fd5583c11 100644 --- a/src/task_bulk.c +++ b/src/task_bulk.c @@ -74,21 +74,22 @@ int main(int argc, char **argv) } int nr_syscalls = atoi(argv[4]); - if (nr_syscalls < 0) { + if (nr_syscalls < 0 || nr_syscalls > SIZE) { + fprintf(stderr, "nr_syscalls must be between 0 and %d, but is %d\n", SIZE, nr_syscalls); print_usage(argv); return 1; } int err = 0; - for (int k = 0; k < nr_init; k++) { + for (int k = 0; k < nr_init && !err; k++) { if (user) { int *fds = malloc(sizeof(int) * SIZE); if (fds == NULL) { return 1; } - for (int j = 0; j < iter; j++) { - for (int i = 0; i < SIZE && i < nr_syscalls; i++) { + for (int j = 0; j < iter && !err; j++) { + for (int i = 0; i < nr_syscalls; i++) { int fd = open("/tmp", O_TMPFILE | O_RDWR, S_IRUSR | S_IWUSR); if (fd == -1) { perror("open"); @@ -132,14 +133,16 @@ int main(int argc, char **argv) int open_prog_fd = bpf_program__fd(skel->progs.openv); int close_prog_fd = bpf_program__fd(skel->progs.closev); - for (int j = 0; j < iter; j++) { + for (int j = 0; j < iter && !err; j++) { err = syscall(SYS_bpftask, open_prog_fd, NULL); if (err) { + fprintf(stderr, "open_prog returned %d\n", err); break; } err = syscall(SYS_bpftask, close_prog_fd, NULL); if (err) { + fprintf(stderr, "close_prog returned %d\n", err); break; } } @@ -149,5 +152,8 @@ int main(int argc, char **argv) } } - return -err; + if (err) { + fprintf(stderr, "%s: error, exit code %d\n", argv[0], err); + } + return err; } diff --git a/src/task_bulk.h b/src/task_bulk.h index 04818fc9cabecd6ac2e4b94d8eab734907ca6b3c..e14de3e6bd8eba428fabc28d7fe1505266931598 100644 --- a/src/task_bulk.h +++ b/src/task_bulk.h @@ -1,6 +1,6 @@ #ifndef __TASK_BULK_H_ #define __TASK_BULK_H_ -#define SIZE 512 +#define SIZE 2048 #endif // __TASK_BULK_H_ diff --git a/src/task_lib.bpf.h b/src/task_lib.bpf.h index 18c9ef020bc6b19c1ce7baa64b2e1fa8749eefce..dac5d389a5180a6c28a946bcb50c87a7f18b8760 100644 --- a/src/task_lib.bpf.h +++ b/src/task_lib.bpf.h @@ -11,6 +11,9 @@ #define NULL ((void *) 0) +#define false ((bool) 0) +#define true ((bool) 1) + typedef __u64 uint64_t; /* BUG: This asserts a 64-bit system. */ typedef __u64 uintptr_t;