114 lines
4.5 KiB
Cython
114 lines
4.5 KiB
Cython
# Copyright (C) 2012 W. Trevor King <wking@tremily.us>
|
|
#
|
|
# This file is part of python-kmod.
|
|
#
|
|
# python-kmod is free software: you can redistribute it and/or modify it under
|
|
# the terms of the GNU Lesser General Public License version 2.1 as published
|
|
# by the Free Software Foundation.
|
|
#
|
|
# python-kmod is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
|
# details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public License
|
|
# along with python-kmod. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
cimport libc.stdint as _stdint
|
|
|
|
|
|
cdef extern from *:
|
|
ctypedef char* const_char_ptr 'const char *'
|
|
ctypedef char* const_char_const_ptr 'const char const *'
|
|
ctypedef void* const_void_ptr 'const void *'
|
|
|
|
|
|
cdef extern from 'stdbool.h':
|
|
ctypedef struct bool:
|
|
pass
|
|
|
|
|
|
cdef extern from 'libkmod/libkmod.h':
|
|
# library user context - reads the config and system
|
|
# environment, user variables, allows custom logging
|
|
cdef struct kmod_ctx:
|
|
pass
|
|
|
|
kmod_ctx *kmod_new(
|
|
const_char_ptr dirname, const_char_const_ptr config_paths)
|
|
kmod_ctx *kmod_ref(kmod_ctx *ctx)
|
|
kmod_ctx *kmod_unref(kmod_ctx *ctx)
|
|
|
|
# Management of libkmod's resources
|
|
int kmod_load_resources(kmod_ctx *ctx)
|
|
void kmod_unload_resources(kmod_ctx *ctx)
|
|
|
|
# access to kmod generated lists
|
|
cdef struct kmod_list:
|
|
pass
|
|
ctypedef kmod_list* const_kmod_list_ptr 'const struct kmod_list *'
|
|
kmod_list *kmod_list_next(
|
|
const_kmod_list_ptr list, const_kmod_list_ptr curr)
|
|
kmod_list *kmod_list_prev(
|
|
const_kmod_list_ptr list, const_kmod_list_ptr curr)
|
|
kmod_list *kmod_list_last(const_kmod_list_ptr list)
|
|
|
|
# Operate on kernel modules
|
|
cdef struct kmod_module:
|
|
pass
|
|
ctypedef kmod_module* const_kmod_module_ptr 'const struct kmod_module *'
|
|
int kmod_module_new_from_name(
|
|
kmod_ctx *ctx, const_char_ptr name, kmod_module **mod)
|
|
int kmod_module_new_from_lookup(
|
|
kmod_ctx *ctx, const_char_ptr given_alias, kmod_list **list)
|
|
int kmod_module_new_from_loaded(kmod_ctx *ctx, kmod_list **list)
|
|
|
|
kmod_module *kmod_module_ref(kmod_module *mod)
|
|
kmod_module *kmod_module_unref(kmod_module *mod)
|
|
int kmod_module_unref_list(kmod_list *list)
|
|
kmod_module *kmod_module_get_module(kmod_list *entry)
|
|
|
|
# Flags to kmod_module_probe_insert_module
|
|
# codes below can be used in return value, too
|
|
enum: KMOD_PROBE_APPLY_BLACKLIST
|
|
|
|
#ctypedef int (*install_callback_t)(
|
|
# kmod_module *m, const_char_ptr cmdline, const_void_ptr data)
|
|
#ctypedef void (*print_action_callback_t)(
|
|
# kmod_module *m, bool install, const_char_ptr options)
|
|
|
|
int kmod_module_remove_module(
|
|
kmod_module *mod, unsigned int flags)
|
|
int kmod_module_insert_module(
|
|
kmod_module *mod, unsigned int flags, const_char_ptr options)
|
|
int kmod_module_probe_insert_module(
|
|
kmod_module *mod, unsigned int flags, const_char_ptr extra_options,
|
|
int (*run_install)(
|
|
kmod_module *m, const_char_ptr cmdline, void *data),
|
|
const_void_ptr data,
|
|
void (*print_action)(
|
|
kmod_module *m, bool install, const_char_ptr options),
|
|
)
|
|
|
|
const_char_ptr kmod_module_get_name(const_kmod_module_ptr mod)
|
|
const_char_ptr kmod_module_get_path(const_kmod_module_ptr mod)
|
|
const_char_ptr kmod_module_get_options(const_kmod_module_ptr mod)
|
|
const_char_ptr kmod_module_get_install_commands(const_kmod_module_ptr mod)
|
|
const_char_ptr kmod_module_get_remove_commands(const_kmod_module_ptr mod)
|
|
|
|
# Information regarding "live information" from module's state, as
|
|
# returned by kernel
|
|
int kmod_module_get_refcnt(const_kmod_module_ptr mod)
|
|
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)
|
|
void kmod_module_versions_free_list(kmod_list *list)
|