diff --git a/user/test/statworkload.c b/user/test/statworkload.c new file mode 100644 index 0000000..9b87f74 --- /dev/null +++ b/user/test/statworkload.c @@ -0,0 +1,55 @@ +#include "library/malloc.h" +#include "library/syscalls.h" +#include "library/string.h" +#include "library/user-io.h" + +/* + Continuously read files at random intervals to generate statistics +*/ + +int filereads() { + int fd[8]; + + char buffer[4096]; + int i, j; + int n, count = 0, mod = 7; + + while (1) { + for (i = 0; i < (count + mod) % mod; i++) { + fd[0] = syscall_open_file("bin/exectest.exe", 0, 0); + fd[1] = syscall_open_file("bin/long.exe", 0, 0); + fd[2] = syscall_open_file("bin/saver.exe", 0, 0); + for (j = 0; j < 3; j++) { + while((n = syscall_object_read(fd[j], buffer, 1024)) > 0) { + } + } + + syscall_object_close(fd[0]); + syscall_object_close(fd[1]); + syscall_object_close(fd[2]); + } + syscall_process_sleep(3000); + count++; + } +} + +int main(int argc, char const *argv[]) { + + if (argc < 2 || !strcmp(argv[1], "bcache")) { + filereads(); + } + else if (!strcmp(argv[1], "process")) { + filereads(); + } + else if (!strcmp(argv[1], "device_driver")) { + filereads(); + } + else if (!strcmp(argv[1], "system")) { + filereads(); + } + else { + filereads(); + } + + return 0; +}