Convert to Cython.
[python-kmod.git] / kmod / _libkmod_h.pxd
1 cdef extern from *:
2     ctypedef char* const_char_ptr 'const char *'
3     ctypedef char* const_char_const_ptr 'const char const *'
4     ctypedef void* const_void_ptr 'const void *'
5
6 cdef extern from 'errno.h':
7     enum: EEXIST
8
9 cdef extern from 'stdbool.h':
10     ctypedef struct bool:
11         pass
12
13
14 cdef extern from 'libkmod.h':
15     # library user context - reads the config and system
16     # environment, user variables, allows custom logging
17     cdef struct kmod_ctx:
18         pass
19
20     kmod_ctx *kmod_new(
21         const_char_ptr dirname, const_char_const_ptr config_paths)
22     kmod_ctx *kmod_ref(kmod_ctx *ctx)
23     kmod_ctx *kmod_unref(kmod_ctx *ctx)
24
25     # Management of libkmod's resources
26     int kmod_load_resources(kmod_ctx *ctx)
27     void kmod_unload_resources(kmod_ctx *ctx)
28
29     # access to kmod generated lists
30     cdef struct kmod_list:
31         pass
32     ctypedef kmod_list* const_kmod_list_ptr 'const struct kmod_list *'
33     kmod_list *kmod_list_next(
34         const_kmod_list_ptr list, const_kmod_list_ptr curr)
35     kmod_list *kmod_list_prev(
36         const_kmod_list_ptr list, const_kmod_list_ptr curr)
37     kmod_list *kmod_list_last(const_kmod_list_ptr list)
38
39     # Operate on kernel modules
40     cdef struct kmod_module:
41         pass
42     ctypedef kmod_module* const_kmod_module_ptr 'const struct kmod_module *'
43     int kmod_module_new_from_name(
44         kmod_ctx *ctx, const_char_ptr name, kmod_module **mod)
45     int kmod_module_new_from_lookup(
46         kmod_ctx *ctx, const_char_ptr given_alias, kmod_list **list)
47     int kmod_module_new_from_loaded(kmod_ctx *ctx, kmod_list **list)
48
49     kmod_module *kmod_module_ref(kmod_module *mod)
50     kmod_module *kmod_module_unref(kmod_module *mod)
51     int kmod_module_unref_list(kmod_list *list)
52     kmod_module *kmod_module_get_module(kmod_list *entry)
53
54     # Flags to kmod_module_probe_insert_module
55     # codes below can be used in return value, too
56     enum: KMOD_PROBE_APPLY_BLACKLIST
57
58     #ctypedef int (*install_callback_t)(
59     #    kmod_module *m, const_char_ptr cmdline, const_void_ptr data)
60     #ctypedef void (*print_action_callback_t)(
61     #    kmod_module *m, bool install, const_char_ptr options)
62
63     int kmod_module_remove_module(
64         kmod_module *mod, unsigned int flags)
65     int kmod_module_insert_module(
66         kmod_module *mod, unsigned int flags, const_char_ptr options)
67     int kmod_module_probe_insert_module(
68         kmod_module *mod, unsigned int flags, const_char_ptr extra_options,
69         int (*run_install)(
70             kmod_module *m, const_char_ptr cmdline, void *data),
71         const_void_ptr data,
72         void (*print_action)(
73             kmod_module *m, bool install, const_char_ptr options),
74         )
75
76     const_char_ptr kmod_module_get_name(const_kmod_module_ptr mod)
77     long kmod_module_get_size(const_kmod_module_ptr mod)