diff options
author | W. Trevor King <wking@tremily.us> | 2012-10-19 01:07:42 -0400 |
---|---|---|
committer | Lucas De Marchi <lucas.demarchi@intel.com> | 2014-03-20 07:22:53 -0300 |
commit | 66376cac1d8df310069300741b297c7a8bca84ed (patch) | |
tree | 1b80a269fd34aa185d56184f2690c65da1ebdadb | |
parent | a9a424859ec84140a8f498db967ad54502f721de (diff) | |
download | kmod-66376cac1d8df310069300741b297c7a8bca84ed.tar.gz |
python: Add Module.info attribute.
-rw-r--r-- | libkmod/python/kmod/_libkmod_h.pxd | 5 | ||||
-rw-r--r-- | libkmod/python/kmod/module.pyx | 21 |
2 files changed, 26 insertions, 0 deletions
diff --git a/libkmod/python/kmod/_libkmod_h.pxd b/libkmod/python/kmod/_libkmod_h.pxd index 0153ac0..a616a26 100644 --- a/libkmod/python/kmod/_libkmod_h.pxd +++ b/libkmod/python/kmod/_libkmod_h.pxd @@ -97,6 +97,11 @@ cdef extern from 'libkmod.h': long kmod_module_get_size(const_kmod_module_ptr mod) # Information retrieved from ELF headers and section + int kmod_module_get_info(const_kmod_module_ptr mod, kmod_list **list) + const_char_ptr kmod_module_info_get_key(const_kmod_list_ptr entry) + const_char_ptr kmod_module_info_get_value(const_kmod_list_ptr entry) + void kmod_module_info_free_list(kmod_list *list) + int kmod_module_get_versions(const_kmod_module_ptr mod, kmod_list **list) const_char_ptr kmod_module_version_get_symbol(const_kmod_list_ptr entry) _stdint.uint64_t kmod_module_version_get_crc(const_kmod_list_ptr entry) diff --git a/libkmod/python/kmod/module.pyx b/libkmod/python/kmod/module.pyx index 7c84eb8..b25f24f 100644 --- a/libkmod/python/kmod/module.pyx +++ b/libkmod/python/kmod/module.pyx @@ -69,6 +69,27 @@ cdef class Module (object): return _libkmod_h.kmod_module_get_size(self.module) size = property(fget=_size_get) + def _info_get(self): + cdef _list.ModList ml = _list.ModList() + cdef _list.ModListItem mli + err = _libkmod_h.kmod_module_get_info(self.module, &ml.list) + if err < 0: + raise _KmodError('Could not get versions') + info = {} + try: + for item in ml: + mli = <_list.ModListItem> item + key = _util.char_ptr_to_str( + _libkmod_h.kmod_module_info_get_key(mli.list)) + value = _util.char_ptr_to_str( + _libkmod_h.kmod_module_info_get_value(mli.list)) + info[key] = value + finally: + _libkmod_h.kmod_module_info_free_list(ml.list) + ml.list = NULL + return info + info = property(fget=_info_get) + def _versions_get(self): cdef _list.ModList ml = _list.ModList() cdef _list.ModListItem mli |