aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorW. Trevor King <wking@tremily.us>2012-10-19 01:07:42 -0400
committerLucas De Marchi <lucas.demarchi@intel.com>2014-03-25 00:34:15 -0300
commit81c1a4e84073b99a2a336c1b1d7238c7a1ec2127 (patch)
treec98c5176b07ee4110c6746b27f002861b6ae4527
parente0ff45a04886e12540d2dd00e226c3e17587b6b9 (diff)
downloadkmod-81c1a4e84073b99a2a336c1b1d7238c7a1ec2127.tar.gz
python: Add Module.info attribute.
-rw-r--r--libkmod/python/kmod/_libkmod_h.pxd5
-rw-r--r--libkmod/python/kmod/module.pyx21
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