diff --git a/kernel_module/user/myinsmod.c b/kernel_module/user/myinsmod.c index 966bcf4..16c7337 100644 --- a/kernel_module/user/myinsmod.c +++ b/kernel_module/user/myinsmod.c @@ -10,22 +10,28 @@ #define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts) int main(int argc, char **argv) { - size_t image_size; - void *image; + const char *params; int fd; + size_t image_size; struct stat st; + void *image; - if (argc != 2) { - puts("Usage ./prog mymodule.ko"); + if (argc < 2) { + puts("Usage ./prog mymodule.ko [args]"); return EXIT_FAILURE; } + if (argc < 3) { + params = ""; + } else { + params = argv[2]; + } fd = open(argv[1], O_RDONLY); fstat(fd, &st); image_size = st.st_size; image = malloc(image_size); read(fd, image, image_size); close(fd); - if (init_module(image, image_size, "") != 0) { + if (init_module(image, image_size, params) != 0) { perror("init_module"); return EXIT_FAILURE; }