2 from error import KmodError as _KmodError
9 cdef class Module (object):
10 "Wrap a struct kmod_module* item"
14 def __dealloc__(self):
18 if self.module is not NULL:
19 _libkmod_h.kmod_module_unref(self.module)
22 cpdef from_mod_list_item(self, _list.ModListItem item):
24 self.module = _libkmod_h.kmod_module_get_module(item.list)
27 return _util.char_ptr_to_str(
28 _libkmod_h.kmod_module_get_name(self.module))
29 name = property(fget=_name_get)
32 return _util.char_ptr_to_str(
33 _libkmod_h.kmod_module_get_path(self.module))
34 path = property(fget=_path_get)
36 def _options_get(self):
37 return _util.char_ptr_to_str(
38 _libkmod_h.kmod_module_get_options(self.module))
39 options = property(fget=_options_get)
41 def _install_commands_get(self):
42 return _util.char_ptr_to_str(
43 _libkmod_h.kmod_module_get_install_commands(self.module))
44 install_commands = property(fget=_install_commands_get)
46 def _remove_commands_get(self):
47 return _util.char_ptr_to_str(
48 _libkmod_h.kmod_module_get_remove_commands(self.module))
49 remove_commands = property(fget=_remove_commands_get)
51 def _refcnt_get(self):
52 return _libkmod_h.kmod_module_get_refcnt(self.module)
53 refcnt = property(fget=_refcnt_get)
56 return _libkmod_h.kmod_module_get_size(self.module)
57 size = property(fget=_size_get)
59 def insert(self, flags=0, extra_options=None, install_callback=None,
60 data=None, print_action_callback=None):
62 #cdef _libkmod_h.install_callback_t install = NULL
64 _libkmod_h.kmod_module *, _libkmod_h.const_char_ptr, void *)
67 #cdef _libkmod_h.print_action_callback_t print_action = NULL
68 cdef void (*print_action)(
69 _libkmod_h.kmod_module *, _libkmod_h.bool,
70 _libkmod_h.const_char_ptr)
74 # TODO: convert callbacks and data from Python object to C types
75 err = _libkmod_h.kmod_module_probe_insert_module(
76 self.module, flags, opt, install, d, print_action)
77 if err == -_libkmod_h.EEXIST:
78 raise _KmodError('Module already loaded')
80 raise _KmodError('Could not load module')
82 def remove(self, flags=0):
83 err = _libkmod_h.kmod_module_remove_module(self.module, flags)
85 raise _KmodError('Could not remove module')