Lucas De Marchi | a5494f8 | 2011-11-25 01:25:18 -0200 | [diff] [blame] | 1 | #include <stdio.h> |
| 2 | #include <stdlib.h> |
| 3 | #include <stddef.h> |
| 4 | #include <errno.h> |
| 5 | #include <unistd.h> |
| 6 | #include <inttypes.h> |
| 7 | #include <string.h> |
| 8 | #include <libkmod.h> |
| 9 | |
| 10 | |
| 11 | int main(int argc, char *argv[]) |
| 12 | { |
| 13 | const char *path; |
| 14 | struct kmod_ctx *ctx; |
| 15 | struct kmod_module *mod; |
| 16 | int err; |
| 17 | |
| 18 | if (argc < 2) { |
| 19 | fprintf(stderr, "Provide a path to a module\n"); |
| 20 | return EXIT_FAILURE; |
| 21 | } |
| 22 | |
| 23 | path = argv[1]; |
| 24 | |
Gustavo Sverzut Barbieri | cb8d4d3 | 2011-12-11 20:37:01 -0200 | [diff] [blame] | 25 | ctx = kmod_new(NULL, NULL); |
Lucas De Marchi | a5494f8 | 2011-11-25 01:25:18 -0200 | [diff] [blame] | 26 | if (ctx == NULL) |
| 27 | exit(EXIT_FAILURE); |
| 28 | |
| 29 | printf("libkmod version %s\n", VERSION); |
| 30 | |
| 31 | err = kmod_module_new_from_path(ctx, path, &mod); |
Gustavo Sverzut Barbieri | 8226058 | 2011-12-04 21:18:21 -0200 | [diff] [blame] | 32 | if (err < 0) { |
| 33 | kmod_unref(ctx); |
Lucas De Marchi | a5494f8 | 2011-11-25 01:25:18 -0200 | [diff] [blame] | 34 | exit(EXIT_FAILURE); |
Gustavo Sverzut Barbieri | 8226058 | 2011-12-04 21:18:21 -0200 | [diff] [blame] | 35 | } |
Lucas De Marchi | a5494f8 | 2011-11-25 01:25:18 -0200 | [diff] [blame] | 36 | |
Lucas De Marchi | ac9f876 | 2011-12-08 10:57:50 -0200 | [diff] [blame] | 37 | printf("Trying insmod '%s' (%s)\n", kmod_module_get_name(mod), |
| 38 | kmod_module_get_path(mod)); |
Gustavo Sverzut Barbieri | 3a721bb | 2011-12-10 21:02:39 -0200 | [diff] [blame] | 39 | err = kmod_module_insert_module(mod, 0, NULL); |
Lucas De Marchi | a5494f8 | 2011-11-25 01:25:18 -0200 | [diff] [blame] | 40 | if (err < 0) { |
| 41 | fprintf(stderr, "%s\n", strerror(-err)); |
| 42 | |
| 43 | kmod_module_unref(mod); |
| 44 | kmod_unref(ctx); |
| 45 | exit(EXIT_FAILURE); |
| 46 | } |
| 47 | |
| 48 | kmod_module_unref(mod); |
| 49 | kmod_unref(ctx); |
| 50 | |
| 51 | return EXIT_SUCCESS; |
| 52 | } |