diff --git a/code/leak.c b/code/leak.c index 0866600ad..270fd5f9a 100644 --- a/code/leak.c +++ b/code/leak.c @@ -1,3 +1,4 @@ +#define _GNU_SOURCE #include #include @@ -6,6 +7,8 @@ #include #include +#include "pipe_utils.h" + // where does this come from? #define OBJS_PER_SLAB 42 @@ -13,8 +16,6 @@ int pipes[PIPE_BUFFER][2]; -void alloc_pipes(int[2], int); - int main(void) { @@ -23,16 +24,12 @@ main(void) printf("main: fopen: %p\n", device); + printf("main: draining lower page free lists: %u objects\n", + PIPE_BUFFER); for (size_t i = 0; i < PIPE_BUFFER; i++) { - alloc_pipes(pipes[i], O_NONBLOCK); + allocation_primitive(pipes[i], O_NONBLOCK); } fclose(device); printf("main: done\n"); } - -void -alloc_pipes(int fd[2], int flags) -{ - pipe2(pipes, flags); -} diff --git a/code/pipe_utils.c b/code/pipe_utils.c new file mode 100644 index 000000000..7173595ee --- /dev/null +++ b/code/pipe_utils.c @@ -0,0 +1,16 @@ +#define _GNU_SOURCE +#include + +#include +#include + +#include "pipe_utils.h" + +void +allocation_primitive(int fd[2]) +{ + pipe2(fd, O_NONBLOCK); + fcntl(fd[0], F_SETPIPE_SZ, 8192); + char buffer[0x100] = { 0 }; + write(fd[1], buffer, 8); +} diff --git a/code/pipe_utils.h b/code/pipe_utils.h new file mode 100644 index 000000000..39111a7fc --- /dev/null +++ b/code/pipe_utils.h @@ -0,0 +1 @@ +void allocation_primitive(int fd[2], int flags);