Gustavo Sverzut Barbieri | 91b44c7 | 2011-12-02 21:05:38 -0200 | [diff] [blame] | 1 | libkmod - linux kernel module handling library |
| 2 | |
| 3 | ABSTRACT |
| 4 | ======== |
| 5 | |
| 6 | libkmod was created to allow programs to easily insert, remove and |
| 7 | list modules, also checking its properties, dependencies and aliases. |
| 8 | |
| 9 | there is no shared/global context information and it can be used by |
| 10 | multiple sites on a single program, also being able to be used from |
| 11 | threads, although it's not thread safe (you must lock explicitly). |
| 12 | |
| 13 | |
| 14 | OVERVIEW |
| 15 | ======== |
| 16 | |
| 17 | Every user should create and manage it's own library context with: |
| 18 | |
| 19 | struct kmod_ctx *ctx = kmod_new(kernel_dirname); |
| 20 | kmod_unref(ctx); |
| 21 | |
| 22 | |
| 23 | Modules can be created with by various means: |
| 24 | |
| 25 | struct kmod_module *mod; |
| 26 | int err; |
| 27 | |
| 28 | err = kmod_module_new_from_path(ctx, path, &mod); |
| 29 | if (err < 0) { |
| 30 | /* code */ |
| 31 | } else { |
| 32 | /* code */ |
| 33 | kmod_module_unref(mod); |
| 34 | } |
| 35 | |
| 36 | err = kmod_module_new_from_name(ctx, name, &mod); |
| 37 | if (err < 0) { |
| 38 | /* code */ |
| 39 | } else { |
| 40 | /* code */ |
| 41 | kmod_module_unref(mod); |
| 42 | } |
| 43 | |
| 44 | |
| 45 | Or could be resolved from a known alias to a list of alternatives: |
| 46 | |
| 47 | struct kmod_list *list, *itr; |
| 48 | int err; |
| 49 | err = kmod_module_new_from_lookup(ctx, alias, &list); |
| 50 | if (err < 0) { |
| 51 | /* code */ |
| 52 | } else { |
| 53 | kmod_list_foreach(itr, list) { |
| 54 | struct kmod_module *mod = kmod_module_get_module(itr); |
| 55 | /* code */ |
| 56 | } |
| 57 | } |
| 58 | |