0153ac024af888283a1b5f2d0520d08fe308b1d1
[python-kmod.git] / kmod / _libkmod_h.pxd
1 # Copyright (C) 2012 Red Hat, Inc. All rights reserved.
2 #               2012 W. Trevor King
3 #
4 # This copyrighted material is made available to anyone wishing to use,
5 # modify, copy, or redistribute it subject to the terms and conditions
6 # of the GNU Lesser General Public License v.2.1.
7 #
8 # You should have received a copy of the GNU Lesser General Public License
9 # along with this program; if not, write to the Free Software Foundation,
10 # Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
11
12 cimport libc.stdint as _stdint
13
14
15 cdef extern from *:
16     ctypedef char* const_char_ptr 'const char *'
17     ctypedef char* const_char_const_ptr 'const char const *'
18     ctypedef void* const_void_ptr 'const void *'
19
20
21 cdef extern from 'stdbool.h':
22     ctypedef struct bool:
23         pass
24
25
26 cdef extern from 'libkmod.h':
27     # library user context - reads the config and system
28     # environment, user variables, allows custom logging
29     cdef struct kmod_ctx:
30         pass
31
32     kmod_ctx *kmod_new(
33         const_char_ptr dirname, const_char_const_ptr config_paths)
34     kmod_ctx *kmod_ref(kmod_ctx *ctx)
35     kmod_ctx *kmod_unref(kmod_ctx *ctx)
36
37     # Management of libkmod's resources
38     int kmod_load_resources(kmod_ctx *ctx)
39     void kmod_unload_resources(kmod_ctx *ctx)
40
41     # access to kmod generated lists
42     cdef struct kmod_list:
43         pass
44     ctypedef kmod_list* const_kmod_list_ptr 'const struct kmod_list *'
45     kmod_list *kmod_list_next(
46         const_kmod_list_ptr list, const_kmod_list_ptr curr)
47     kmod_list *kmod_list_prev(
48         const_kmod_list_ptr list, const_kmod_list_ptr curr)
49     kmod_list *kmod_list_last(const_kmod_list_ptr list)
50
51     # Operate on kernel modules
52     cdef struct kmod_module:
53         pass
54     ctypedef kmod_module* const_kmod_module_ptr 'const struct kmod_module *'
55     int kmod_module_new_from_name(
56         kmod_ctx *ctx, const_char_ptr name, kmod_module **mod)
57     int kmod_module_new_from_lookup(
58         kmod_ctx *ctx, const_char_ptr given_alias, kmod_list **list)
59     int kmod_module_new_from_loaded(kmod_ctx *ctx, kmod_list **list)
60
61     kmod_module *kmod_module_ref(kmod_module *mod)
62     kmod_module *kmod_module_unref(kmod_module *mod)
63     int kmod_module_unref_list(kmod_list *list)
64     kmod_module *kmod_module_get_module(kmod_list *entry)
65
66     # Flags to kmod_module_probe_insert_module
67     # codes below can be used in return value, too
68     enum: KMOD_PROBE_APPLY_BLACKLIST
69
70     #ctypedef int (*install_callback_t)(
71     #    kmod_module *m, const_char_ptr cmdline, const_void_ptr data)
72     #ctypedef void (*print_action_callback_t)(
73     #    kmod_module *m, bool install, const_char_ptr options)
74
75     int kmod_module_remove_module(
76         kmod_module *mod, unsigned int flags)
77     int kmod_module_insert_module(
78         kmod_module *mod, unsigned int flags, const_char_ptr options)
79     int kmod_module_probe_insert_module(
80         kmod_module *mod, unsigned int flags, const_char_ptr extra_options,
81         int (*run_install)(
82             kmod_module *m, const_char_ptr cmdline, void *data),
83         const_void_ptr data,
84         void (*print_action)(
85             kmod_module *m, bool install, const_char_ptr options),
86         )
87
88     const_char_ptr kmod_module_get_name(const_kmod_module_ptr mod)
89     const_char_ptr kmod_module_get_path(const_kmod_module_ptr mod)
90     const_char_ptr kmod_module_get_options(const_kmod_module_ptr mod)
91     const_char_ptr kmod_module_get_install_commands(const_kmod_module_ptr mod)
92     const_char_ptr kmod_module_get_remove_commands(const_kmod_module_ptr mod)
93
94     # Information regarding "live information" from module's state, as
95     # returned by kernel
96     int kmod_module_get_refcnt(const_kmod_module_ptr mod)
97     long kmod_module_get_size(const_kmod_module_ptr mod)
98
99     # Information retrieved from ELF headers and section
100     int kmod_module_get_versions(const_kmod_module_ptr mod, kmod_list **list)
101     const_char_ptr kmod_module_version_get_symbol(const_kmod_list_ptr entry)
102     _stdint.uint64_t kmod_module_version_get_crc(const_kmod_list_ptr entry)
103     void kmod_module_versions_free_list(kmod_list *list)