diff options
Diffstat (limited to 'libkmod')
38 files changed, 4092 insertions, 197 deletions
diff --git a/libkmod/README b/libkmod/README index d0ca2fc..3e1c8dc 100644 --- a/libkmod/README +++ b/libkmod/README @@ -20,7 +20,7 @@ Every user should create and manage it's own library context with: kmod_unref(ctx); -Modules can be created with by various means: +Modules can be created by various means: struct kmod_module *mod; int err; diff --git a/libkmod/docs/Makefile.am b/libkmod/docs/Makefile.am index 77e20d5..7c67581 100644 --- a/libkmod/docs/Makefile.am +++ b/libkmod/docs/Makefile.am @@ -21,7 +21,7 @@ HFILE_GLOB = $(top_srcdir)/libkmod/libkmod.h CFILE_GLOB = $(top_srcdir)/libkmod/libkmod.c $(top_srcdir)/libkmod/libkmod-module.c $(top_srcdir)/libkmod/libkmod-list.c IGNORE_HFILES = macro.h \ - libkmod-private.h \ + libkmod-internal.h \ libkmod-util.h \ libkmod-array.h \ libkmod-hash.h \ diff --git a/libkmod/docs/Makefile.in b/libkmod/docs/Makefile.in index 2a52b3d..e99e6be 100644 --- a/libkmod/docs/Makefile.in +++ b/libkmod/docs/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.12.5 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2012 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,23 +20,51 @@ # Everything below here is generic # #################################### VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ esac; \ - test $$am__dry = yes; \ - } + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -55,9 +83,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/version.xml.in \ - $(top_srcdir)/libkmod/docs/gtk-doc.make +DIST_COMMON = $(top_srcdir)/libkmod/docs/gtk-doc.make \ + $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(srcdir)/version.xml.in subdir = libkmod/docs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ @@ -90,6 +118,7 @@ am__can_run_installinfo = \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -177,6 +206,7 @@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +bashcompletiondir = @bashcompletiondir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -234,7 +264,7 @@ MKHTML_OPTIONS = --path=$(abs_srcdir)/doc --path=$(abs_builddir)/doc HFILE_GLOB = $(top_srcdir)/libkmod/libkmod.h CFILE_GLOB = $(top_srcdir)/libkmod/libkmod.c $(top_srcdir)/libkmod/libkmod-module.c $(top_srcdir)/libkmod/libkmod-list.c IGNORE_HFILES = macro.h \ - libkmod-private.h \ + libkmod-internal.h \ libkmod-util.h \ libkmod-array.h \ libkmod-hash.h \ @@ -287,6 +317,37 @@ content_files = version.xml @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp + +#### setup #### +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; + +#### scan #### +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; + +#### xml #### +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XML_0 = @echo " DOC Building XML"; + +#### html #### +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; + +#### pdf #### +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +@ENABLE_GTK_DOC_TRUE@GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; all: all-am .SUFFIXES: @@ -329,11 +390,9 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -tags: TAGS -TAGS: +tags TAGS: -ctags: CTAGS -CTAGS: +ctags CTAGS: cscope cscopelist: @@ -409,8 +468,8 @@ maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @ENABLE_GTK_DOC_FALSE@uninstall-local: -@ENABLE_GTK_DOC_FALSE@distclean-local: @ENABLE_GTK_DOC_FALSE@install-data-local: +@ENABLE_GTK_DOC_FALSE@distclean-local: @ENABLE_GTK_DOC_FALSE@maintainer-clean-local: @ENABLE_GTK_DOC_FALSE@clean-local: clean: clean-am @@ -483,18 +542,18 @@ uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool clean-local dist-hook distclean \ - distclean-generic distclean-libtool distclean-local distdir \ - dvi dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-data-local install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic \ + clean-libtool clean-local cscopelist-am ctags-am dist-hook \ + distclean distclean-generic distclean-libtool distclean-local \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-local + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-local @ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) @@ -504,32 +563,25 @@ uninstall-am: uninstall-local @ENABLE_GTK_DOC_TRUE@$(REPORT_FILES): sgml-build.stamp -#### setup #### - @ENABLE_GTK_DOC_TRUE@setup-build.stamp: -@ENABLE_GTK_DOC_TRUE@ -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ -@ENABLE_GTK_DOC_TRUE@ echo ' DOC Preparing build'; \ +@ENABLE_GTK_DOC_TRUE@ -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ @ENABLE_GTK_DOC_TRUE@ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ @ENABLE_GTK_DOC_TRUE@ if test "x$$files" != "x" ; then \ @ENABLE_GTK_DOC_TRUE@ for file in $$files ; do \ @ENABLE_GTK_DOC_TRUE@ test -f $(abs_srcdir)/$$file && \ -@ENABLE_GTK_DOC_TRUE@ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \ +@ENABLE_GTK_DOC_TRUE@ cp -pu $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ @ENABLE_GTK_DOC_TRUE@ done; \ @ENABLE_GTK_DOC_TRUE@ fi; \ @ENABLE_GTK_DOC_TRUE@ fi -@ENABLE_GTK_DOC_TRUE@ @touch setup-build.stamp - -#### scan #### +@ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch setup-build.stamp @ENABLE_GTK_DOC_TRUE@scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) -@ENABLE_GTK_DOC_TRUE@ @echo ' DOC Scanning header files' -@ENABLE_GTK_DOC_TRUE@ @_source_dir='' ; \ +@ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_SCAN)_source_dir='' ; \ @ENABLE_GTK_DOC_TRUE@ for i in $(DOC_SOURCE_DIR) ; do \ @ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ @ENABLE_GTK_DOC_TRUE@ done ; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) -@ENABLE_GTK_DOC_TRUE@ @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ -@ENABLE_GTK_DOC_TRUE@ echo " DOC Introspecting gobjects"; \ +@ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ @ENABLE_GTK_DOC_TRUE@ scanobj_options=""; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ @ENABLE_GTK_DOC_TRUE@ if test "$(?)" = "0"; then \ @@ -544,32 +596,25 @@ uninstall-am: uninstall-local @ENABLE_GTK_DOC_TRUE@ test -f $$i || touch $$i ; \ @ENABLE_GTK_DOC_TRUE@ done \ @ENABLE_GTK_DOC_TRUE@ fi -@ENABLE_GTK_DOC_TRUE@ @touch scan-build.stamp +@ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch scan-build.stamp @ENABLE_GTK_DOC_TRUE@$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @ENABLE_GTK_DOC_TRUE@ @true -#### xml #### - @ENABLE_GTK_DOC_TRUE@sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) -@ENABLE_GTK_DOC_TRUE@ @echo ' DOC Building XML' -@ENABLE_GTK_DOC_TRUE@ @_source_dir='' ; \ +@ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_XML)_source_dir='' ; \ @ENABLE_GTK_DOC_TRUE@ for i in $(DOC_SOURCE_DIR) ; do \ @ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \ @ENABLE_GTK_DOC_TRUE@ done ; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) -@ENABLE_GTK_DOC_TRUE@ @touch sgml-build.stamp +@ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch sgml-build.stamp @ENABLE_GTK_DOC_TRUE@sgml.stamp: sgml-build.stamp @ENABLE_GTK_DOC_TRUE@ @true -#### html #### - @ENABLE_GTK_DOC_TRUE@html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) -@ENABLE_GTK_DOC_TRUE@ @echo ' DOC Building HTML' -@ENABLE_GTK_DOC_TRUE@ @rm -rf html -@ENABLE_GTK_DOC_TRUE@ @mkdir html -@ENABLE_GTK_DOC_TRUE@ @mkhtml_options=""; \ +@ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ +@ENABLE_GTK_DOC_TRUE@ mkhtml_options=""; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ @ENABLE_GTK_DOC_TRUE@ if test "$(?)" = "0"; then \ @ENABLE_GTK_DOC_TRUE@ if test "x$(V)" = "x1"; then \ @@ -590,16 +635,12 @@ uninstall-am: uninstall-local @ENABLE_GTK_DOC_TRUE@ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ @ENABLE_GTK_DOC_TRUE@ fi; \ @ENABLE_GTK_DOC_TRUE@ done; -@ENABLE_GTK_DOC_TRUE@ @echo ' DOC Fixing cross-references' -@ENABLE_GTK_DOC_TRUE@ @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) -@ENABLE_GTK_DOC_TRUE@ @touch html-build.stamp - -#### pdf #### +@ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) +@ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch html-build.stamp @ENABLE_GTK_DOC_TRUE@pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) -@ENABLE_GTK_DOC_TRUE@ @echo ' DOC Building PDF' -@ENABLE_GTK_DOC_TRUE@ @rm -f $(DOC_MODULE).pdf -@ENABLE_GTK_DOC_TRUE@ @mkpdf_options=""; \ +@ENABLE_GTK_DOC_TRUE@ $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ +@ENABLE_GTK_DOC_TRUE@ mkpdf_options=""; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ @ENABLE_GTK_DOC_TRUE@ if test "$(?)" = "0"; then \ @ENABLE_GTK_DOC_TRUE@ if test "x$(V)" = "x1"; then \ @@ -616,7 +657,7 @@ uninstall-am: uninstall-local @ENABLE_GTK_DOC_TRUE@ done; \ @ENABLE_GTK_DOC_TRUE@ fi; \ @ENABLE_GTK_DOC_TRUE@ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) -@ENABLE_GTK_DOC_TRUE@ @touch pdf-build.stamp +@ENABLE_GTK_DOC_TRUE@ $(AM_V_at)touch pdf-build.stamp ############## @@ -631,7 +672,7 @@ uninstall-am: uninstall-local @ENABLE_GTK_DOC_TRUE@ rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ @ENABLE_GTK_DOC_TRUE@ fi -@ENABLE_GTK_DOC_TRUE@maintainer-clean-local: clean +@ENABLE_GTK_DOC_TRUE@maintainer-clean-local: @ENABLE_GTK_DOC_TRUE@ @rm -rf xml html @ENABLE_GTK_DOC_TRUE@install-data-local: @@ -667,7 +708,7 @@ uninstall-am: uninstall-local # # Require gtk-doc when making dist # -@ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc: +@ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc: docs #dist-check-gtkdoc: # @echo "*** gtk-doc must be installed and enabled in order to make dist" # @false diff --git a/libkmod/docs/gtk-doc.make b/libkmod/docs/gtk-doc.make index 9841de4..104c399 100644 --- a/libkmod/docs/gtk-doc.make +++ b/libkmod/docs/gtk-doc.make @@ -74,31 +74,40 @@ $(REPORT_FILES): sgml-build.stamp #### setup #### +GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) +GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; + setup-build.stamp: - -@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ - echo ' DOC Preparing build'; \ + -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ files=`echo $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types`; \ if test "x$$files" != "x" ; then \ for file in $$files ; do \ test -f $(abs_srcdir)/$$file && \ - cp -pu $(abs_srcdir)/$$file $(abs_builddir)/ || true; \ + cp -pu $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ done; \ fi; \ fi - @touch setup-build.stamp + $(AM_V_at)touch setup-build.stamp #### scan #### +GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) +GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; + +GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) +GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; + scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) - @echo ' DOC Scanning header files' - @_source_dir='' ; \ + $(GTK_DOC_V_SCAN)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) - @if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ - echo " DOC Introspecting gobjects"; \ + $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ scanobj_options=""; \ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ @@ -113,32 +122,41 @@ scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) test -f $$i || touch $$i ; \ done \ fi - @touch scan-build.stamp + $(AM_V_at)touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### xml #### +GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) +GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML_0=@echo " DOC Building XML"; + sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) - @echo ' DOC Building XML' - @_source_dir='' ; \ + $(GTK_DOC_V_XML)_source_dir='' ; \ for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) - @touch sgml-build.stamp + $(AM_V_at)touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### +GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) +GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; + +GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) +GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; + html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) - @echo ' DOC Building HTML' - @rm -rf html - @mkdir html - @mkhtml_options=""; \ + $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ + mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ @@ -159,16 +177,18 @@ html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) cp $(abs_builddir)/$$file $(abs_builddir)/html; \ fi; \ done; - @echo ' DOC Fixing cross-references' - @gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) - @touch html-build.stamp + $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) + $(AM_V_at)touch html-build.stamp #### pdf #### +GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) +GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; + pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) - @echo ' DOC Building PDF' - @rm -f $(DOC_MODULE).pdf - @mkpdf_options=""; \ + $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ + mkpdf_options=""; \ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ if test "$(?)" = "0"; then \ if test "x$(V)" = "x1"; then \ @@ -185,7 +205,7 @@ pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) done; \ fi; \ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) - @touch pdf-build.stamp + $(AM_V_at)touch pdf-build.stamp ############## @@ -200,7 +220,7 @@ distclean-local: rm -f $(SETUP_FILES) $(expand_content_files) $(DOC_MODULE).types; \ fi -maintainer-clean-local: clean +maintainer-clean-local: @rm -rf xml html install-data-local: @@ -237,7 +257,7 @@ uninstall-local: # Require gtk-doc when making dist # if ENABLE_GTK_DOC -dist-check-gtkdoc: +dist-check-gtkdoc: docs else dist-check-gtkdoc: @echo "*** gtk-doc must be installed and enabled in order to make dist" diff --git a/libkmod/docs/html/api-index-full.html b/libkmod/docs/html/api-index-full.html new file mode 100644 index 0000000..b038bd5 --- /dev/null +++ b/libkmod/docs/html/api-index-full.html @@ -0,0 +1,370 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>API Index</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="libkmod Reference Manual"> +<link rel="up" href="index.html" title="libkmod Reference Manual"> +<link rel="prev" href="libkmod-libkmod-loaded.html" title="libkmod-loaded"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="libkmod-libkmod-loaded.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td> </td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">libkmod Reference Manual</th> +<td> </td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a class="shortcut" href="#idxC">C</a> + | + <a class="shortcut" href="#idxD">D</a> + | + <a class="shortcut" href="#idxG">G</a> + | + <a class="shortcut" href="#idxL">L</a> + | + <a class="shortcut" href="#idxM">M</a> + | + <a class="shortcut" href="#idxN">N</a> + | + <a class="shortcut" href="#idxR">R</a> + | + <a class="shortcut" href="#idxS">S</a> + | + <a class="shortcut" href="#idxU">U</a> + | + <a class="shortcut" href="#idxV">V</a> +</td></tr> +</table> +<div class="index"> +<div class="titlepage"><div><div><h1 class="title"> +<a name="api-index-full"></a>API Index</h1></div></div></div> +<a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-get-aliases" title="kmod_config_get_aliases ()">kmod_config_get_aliases</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-get-blacklists" title="kmod_config_get_blacklists ()">kmod_config_get_blacklists</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-get-install-commands" title="kmod_config_get_install_commands ()">kmod_config_get_install_commands</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-get-options" title="kmod_config_get_options ()">kmod_config_get_options</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-get-remove-commands" title="kmod_config_get_remove_commands ()">kmod_config_get_remove_commands</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-get-softdeps" title="kmod_config_get_softdeps ()">kmod_config_get_softdeps</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter">kmod_config_iter</a>, struct in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-free-iter" title="kmod_config_iter_free_iter ()">kmod_config_iter_free_iter</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-key" title="kmod_config_iter_get_key ()">kmod_config_iter_get_key</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-value" title="kmod_config_iter_get_value ()">kmod_config_iter_get_value</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()">kmod_config_iter_next</a>, function in <a class="link" href="libkmod-libkmod-config.html" title="libkmod-config">libkmod-config</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-ctx" title="struct kmod_ctx">kmod_ctx</a>, struct in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<a name="idxD"></a><h3 class="title">D</h3> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-dump-index" title="kmod_dump_index ()">kmod_dump_index</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<a name="idxG"></a><h3 class="title">G</h3> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-get-log-priority" title="kmod_get_log_priority ()">kmod_get_log_priority</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-get-userdata" title="kmod_get_userdata ()">kmod_get_userdata</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<a name="idxL"></a><h3 class="title">L</h3> +<dt> +<a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list">kmod_list</a>, struct in <a class="link" href="libkmod-libkmod-list.html" title="libkmod-list">libkmod-list</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-list.html#kmod-list-foreach" title="kmod_list_foreach()">kmod_list_foreach</a>, macro in <a class="link" href="libkmod-libkmod-list.html" title="libkmod-list">libkmod-list</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-list.html#kmod-list-foreach-reverse" title="kmod_list_foreach_reverse()">kmod_list_foreach_reverse</a>, macro in <a class="link" href="libkmod-libkmod-list.html" title="libkmod-list">libkmod-list</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-list.html#kmod-list-last" title="kmod_list_last ()">kmod_list_last</a>, function in <a class="link" href="libkmod-libkmod-list.html" title="libkmod-list">libkmod-list</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-list.html#kmod-list-next" title="kmod_list_next ()">kmod_list_next</a>, function in <a class="link" href="libkmod-libkmod-list.html" title="libkmod-list">libkmod-list</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-list.html#kmod-list-prev" title="kmod_list_prev ()">kmod_list_prev</a>, function in <a class="link" href="libkmod-libkmod-list.html" title="libkmod-list">libkmod-list</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-load-resources" title="kmod_load_resources ()">kmod_load_resources</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<a name="idxM"></a><h3 class="title">M</h3> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module" title="struct kmod_module">kmod_module</a>, struct in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-apply-filter" title="kmod_module_apply_filter ()">kmod_module_apply_filter</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbols-free-list" title="kmod_module_dependency_symbols_free_list ()">kmod_module_dependency_symbols_free_list</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-bind" title="kmod_module_dependency_symbol_get_bind ()">kmod_module_dependency_symbol_get_bind</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-crc" title="kmod_module_dependency_symbol_get_crc ()">kmod_module_dependency_symbol_get_crc</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-symbol" title="kmod_module_dependency_symbol_get_symbol ()">kmod_module_dependency_symbol_get_symbol</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-dependencies" title="kmod_module_get_dependencies ()">kmod_module_get_dependencies</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-dependency-symbols" title="kmod_module_get_dependency_symbols ()">kmod_module_get_dependency_symbols</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-filtered-blacklist" title="kmod_module_get_filtered_blacklist ()">kmod_module_get_filtered_blacklist</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-holders" title="kmod_module_get_holders ()">kmod_module_get_holders</a>, function in <a class="link" href="libkmod-libkmod-loaded.html" title="libkmod-loaded">libkmod-loaded</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-info" title="kmod_module_get_info ()">kmod_module_get_info</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-initstate" title="kmod_module_get_initstate ()">kmod_module_get_initstate</a>, function in <a class="link" href="libkmod-libkmod-loaded.html" title="libkmod-loaded">libkmod-loaded</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-install-commands" title="kmod_module_get_install_commands ()">kmod_module_get_install_commands</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-module" title="kmod_module_get_module ()">kmod_module_get_module</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-name" title="kmod_module_get_name ()">kmod_module_get_name</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-options" title="kmod_module_get_options ()">kmod_module_get_options</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-path" title="kmod_module_get_path ()">kmod_module_get_path</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-refcnt" title="kmod_module_get_refcnt ()">kmod_module_get_refcnt</a>, function in <a class="link" href="libkmod-libkmod-loaded.html" title="libkmod-loaded">libkmod-loaded</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-remove-commands" title="kmod_module_get_remove_commands ()">kmod_module_get_remove_commands</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-sections" title="kmod_module_get_sections ()">kmod_module_get_sections</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-size" title="kmod_module_get_size ()">kmod_module_get_size</a>, function in <a class="link" href="libkmod-libkmod-loaded.html" title="libkmod-loaded">libkmod-loaded</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-softdeps" title="kmod_module_get_softdeps ()">kmod_module_get_softdeps</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-symbols" title="kmod_module_get_symbols ()">kmod_module_get_symbols</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-get-versions" title="kmod_module_get_versions ()">kmod_module_get_versions</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-info-free-list" title="kmod_module_info_free_list ()">kmod_module_info_free_list</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-info-get-key" title="kmod_module_info_get_key ()">kmod_module_info_get_key</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-info-get-value" title="kmod_module_info_get_value ()">kmod_module_info_get_value</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-loaded.html#kmod-module-initstate-str" title="kmod_module_initstate_str ()">kmod_module_initstate_str</a>, function in <a class="link" href="libkmod-libkmod-loaded.html" title="libkmod-loaded">libkmod-loaded</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-insert-module" title="kmod_module_insert_module ()">kmod_module_insert_module</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-loaded.html#kmod-module-new-from-loaded" title="kmod_module_new_from_loaded ()">kmod_module_new_from_loaded</a>, function in <a class="link" href="libkmod-libkmod-loaded.html" title="libkmod-loaded">libkmod-loaded</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-new-from-lookup" title="kmod_module_new_from_lookup ()">kmod_module_new_from_lookup</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-new-from-name" title="kmod_module_new_from_name ()">kmod_module_new_from_name</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-new-from-path" title="kmod_module_new_from_path ()">kmod_module_new_from_path</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-probe-insert-module" title="kmod_module_probe_insert_module ()">kmod_module_probe_insert_module</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-ref" title="kmod_module_ref ()">kmod_module_ref</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-remove-module" title="kmod_module_remove_module ()">kmod_module_remove_module</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-section-free-list" title="kmod_module_section_free_list ()">kmod_module_section_free_list</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-section-get-address" title="kmod_module_section_get_address ()">kmod_module_section_get_address</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-section-get-name" title="kmod_module_section_get_name ()">kmod_module_section_get_name</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-symbols-free-list" title="kmod_module_symbols_free_list ()">kmod_module_symbols_free_list</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-symbol-get-crc" title="kmod_module_symbol_get_crc ()">kmod_module_symbol_get_crc</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-symbol-get-symbol" title="kmod_module_symbol_get_symbol ()">kmod_module_symbol_get_symbol</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-unref" title="kmod_module_unref ()">kmod_module_unref</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-unref-list" title="kmod_module_unref_list ()">kmod_module_unref_list</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-versions-free-list" title="kmod_module_versions_free_list ()">kmod_module_versions_free_list</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-version-get-crc" title="kmod_module_version_get_crc ()">kmod_module_version_get_crc</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod-module.html#kmod-module-version-get-symbol" title="kmod_module_version_get_symbol ()">kmod_module_version_get_symbol</a>, function in <a class="link" href="libkmod-libkmod-module.html" title="libkmod-module">libkmod-module</a> +</dt> +<dd></dd> +<a name="idxN"></a><h3 class="title">N</h3> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-new" title="kmod_new ()">kmod_new</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<a name="idxR"></a><h3 class="title">R</h3> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-ref" title="kmod_ref ()">kmod_ref</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<a name="idxS"></a><h3 class="title">S</h3> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-set-log-fn" title="kmod_set_log_fn ()">kmod_set_log_fn</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-set-log-priority" title="kmod_set_log_priority ()">kmod_set_log_priority</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-set-userdata" title="kmod_set_userdata ()">kmod_set_userdata</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<a name="idxU"></a><h3 class="title">U</h3> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-unload-resources" title="kmod_unload_resources ()">kmod_unload_resources</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-unref" title="kmod_unref ()">kmod_unref</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +<a name="idxV"></a><h3 class="title">V</h3> +<dt> +<a class="link" href="libkmod-libkmod.html#kmod-validate-resources" title="kmod_validate_resources ()">kmod_validate_resources</a>, function in <a class="link" href="libkmod-libkmod.html" title="libkmod">libkmod</a> +</dt> +<dd></dd> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html>
\ No newline at end of file diff --git a/libkmod/docs/html/ch01.html b/libkmod/docs/html/ch01.html new file mode 100644 index 0000000..37e2f23 --- /dev/null +++ b/libkmod/docs/html/ch01.html @@ -0,0 +1,47 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>libkmod</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="libkmod Reference Manual"> +<link rel="up" href="index.html" title="libkmod Reference Manual"> +<link rel="prev" href="index.html" title="libkmod Reference Manual"> +<link rel="next" href="libkmod-libkmod.html" title="libkmod"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"> +<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td> </td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">libkmod Reference Manual</th> +<td><a accesskey="n" href="libkmod-libkmod.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr></table> +<div class="chapter"> +<div class="titlepage"><div><div><h1 class="title"> +<a name="id-1.2"></a>libkmod</h1></div></div></div> +<div class="toc"><dl class="toc"> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod.html">libkmod</a></span><span class="refpurpose"> — libkmod context</span> +</dt> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod-list.html">libkmod-list</a></span><span class="refpurpose"> — general purpose list</span> +</dt> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod-config.html">libkmod-config</a></span><span class="refpurpose"> — retrieve current libkmod configuration</span> +</dt> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod-module.html">libkmod-module</a></span><span class="refpurpose"> — operate on kernel modules</span> +</dt> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod-loaded.html">libkmod-loaded</a></span><span class="refpurpose"> — currently loaded modules</span> +</dt> +</dl></div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html>
\ No newline at end of file diff --git a/libkmod/docs/html/home.png b/libkmod/docs/html/home.png Binary files differnew file mode 100644 index 0000000..1700361 --- /dev/null +++ b/libkmod/docs/html/home.png diff --git a/libkmod/docs/html/index.html b/libkmod/docs/html/index.html new file mode 100644 index 0000000..f29238e --- /dev/null +++ b/libkmod/docs/html/index.html @@ -0,0 +1,48 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>libkmod Reference Manual</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="libkmod Reference Manual"> +<link rel="next" href="ch01.html" title="libkmod"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<div class="book"> +<div class="titlepage"> +<div> +<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libkmod Reference Manual</p></th></tr></table></div> +<div><p class="releaseinfo">for libkmod version 15 +</p></div> +</div> +<hr> +</div> +<div class="toc"><dl class="toc"> +<dt><span class="chapter"><a href="ch01.html">libkmod</a></span></dt> +<dd><dl> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod.html">libkmod</a></span><span class="refpurpose"> — libkmod context</span> +</dt> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod-list.html">libkmod-list</a></span><span class="refpurpose"> — general purpose list</span> +</dt> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod-config.html">libkmod-config</a></span><span class="refpurpose"> — retrieve current libkmod configuration</span> +</dt> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod-module.html">libkmod-module</a></span><span class="refpurpose"> — operate on kernel modules</span> +</dt> +<dt> +<span class="refentrytitle"><a href="libkmod-libkmod-loaded.html">libkmod-loaded</a></span><span class="refpurpose"> — currently loaded modules</span> +</dt> +</dl></dd> +<dt><span class="index"><a href="api-index-full.html">API Index</a></span></dt> +</dl></div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html>
\ No newline at end of file diff --git a/libkmod/docs/html/index.sgml b/libkmod/docs/html/index.sgml new file mode 100644 index 0000000..165c1dc --- /dev/null +++ b/libkmod/docs/html/index.sgml @@ -0,0 +1,97 @@ +<ANCHOR id="libkmod-libkmod" href="libkmod/libkmod-libkmod.html"> +<ANCHOR id="libkmod-libkmod.synopsis" href="libkmod/libkmod-libkmod.html#libkmod-libkmod.synopsis"> +<ANCHOR id="libkmod-libkmod.description" href="libkmod/libkmod-libkmod.html#libkmod-libkmod.description"> +<ANCHOR id="libkmod-libkmod.details" href="libkmod/libkmod-libkmod.html#libkmod-libkmod.details"> +<ANCHOR id="kmod-ctx" href="libkmod/libkmod-libkmod.html#kmod-ctx"> +<ANCHOR id="kmod-new" href="libkmod/libkmod-libkmod.html#kmod-new"> +<ANCHOR id="kmod-ref" href="libkmod/libkmod-libkmod.html#kmod-ref"> +<ANCHOR id="kmod-unref" href="libkmod/libkmod-libkmod.html#kmod-unref"> +<ANCHOR id="kmod-load-resources" href="libkmod/libkmod-libkmod.html#kmod-load-resources"> +<ANCHOR id="kmod-unload-resources" href="libkmod/libkmod-libkmod.html#kmod-unload-resources"> +<ANCHOR id="kmod-validate-resources" href="libkmod/libkmod-libkmod.html#kmod-validate-resources"> +<ANCHOR id="kmod-dump-index" href="libkmod/libkmod-libkmod.html#kmod-dump-index"> +<ANCHOR id="kmod-set-log-priority" href="libkmod/libkmod-libkmod.html#kmod-set-log-priority"> +<ANCHOR id="kmod-get-log-priority" href="libkmod/libkmod-libkmod.html#kmod-get-log-priority"> +<ANCHOR id="kmod-set-log-fn" href="libkmod/libkmod-libkmod.html#kmod-set-log-fn"> +<ANCHOR id="kmod-get-userdata" href="libkmod/libkmod-libkmod.html#kmod-get-userdata"> +<ANCHOR id="kmod-set-userdata" href="libkmod/libkmod-libkmod.html#kmod-set-userdata"> +<ANCHOR id="libkmod-libkmod-list" href="libkmod/libkmod-libkmod-list.html"> +<ANCHOR id="libkmod-libkmod-list.synopsis" href="libkmod/libkmod-libkmod-list.html#libkmod-libkmod-list.synopsis"> +<ANCHOR id="libkmod-libkmod-list.description" href="libkmod/libkmod-libkmod-list.html#libkmod-libkmod-list.description"> +<ANCHOR id="libkmod-libkmod-list.details" href="libkmod/libkmod-libkmod-list.html#libkmod-libkmod-list.details"> +<ANCHOR id="kmod-list" href="libkmod/libkmod-libkmod-list.html#kmod-list"> +<ANCHOR id="kmod-list-foreach" href="libkmod/libkmod-libkmod-list.html#kmod-list-foreach"> +<ANCHOR id="kmod-list-foreach-reverse" href="libkmod/libkmod-libkmod-list.html#kmod-list-foreach-reverse"> +<ANCHOR id="kmod-list-last" href="libkmod/libkmod-libkmod-list.html#kmod-list-last"> +<ANCHOR id="kmod-list-next" href="libkmod/libkmod-libkmod-list.html#kmod-list-next"> +<ANCHOR id="kmod-list-prev" href="libkmod/libkmod-libkmod-list.html#kmod-list-prev"> +<ANCHOR id="libkmod-libkmod-config" href="libkmod/libkmod-libkmod-config.html"> +<ANCHOR id="libkmod-libkmod-config.synopsis" href="libkmod/libkmod-libkmod-config.html#libkmod-libkmod-config.synopsis"> +<ANCHOR id="libkmod-libkmod-config.description" href="libkmod/libkmod-libkmod-config.html#libkmod-libkmod-config.description"> +<ANCHOR id="libkmod-libkmod-config.details" href="libkmod/libkmod-libkmod-config.html#libkmod-libkmod-config.details"> +<ANCHOR id="kmod-config-iter" href="libkmod/libkmod-libkmod-config.html#kmod-config-iter"> +<ANCHOR id="kmod-config-get-blacklists" href="libkmod/libkmod-libkmod-config.html#kmod-config-get-blacklists"> +<ANCHOR id="kmod-config-get-install-commands" href="libkmod/libkmod-libkmod-config.html#kmod-config-get-install-commands"> +<ANCHOR id="kmod-config-get-remove-commands" href="libkmod/libkmod-libkmod-config.html#kmod-config-get-remove-commands"> +<ANCHOR id="kmod-config-get-aliases" href="libkmod/libkmod-libkmod-config.html#kmod-config-get-aliases"> +<ANCHOR id="kmod-config-get-options" href="libkmod/libkmod-libkmod-config.html#kmod-config-get-options"> +<ANCHOR id="kmod-config-get-softdeps" href="libkmod/libkmod-libkmod-config.html#kmod-config-get-softdeps"> +<ANCHOR id="kmod-config-iter-get-key" href="libkmod/libkmod-libkmod-config.html#kmod-config-iter-get-key"> +<ANCHOR id="kmod-config-iter-get-value" href="libkmod/libkmod-libkmod-config.html#kmod-config-iter-get-value"> +<ANCHOR id="kmod-config-iter-next" href="libkmod/libkmod-libkmod-config.html#kmod-config-iter-next"> +<ANCHOR id="kmod-config-iter-free-iter" href="libkmod/libkmod-libkmod-config.html#kmod-config-iter-free-iter"> +<ANCHOR id="libkmod-libkmod-module" href="libkmod/libkmod-libkmod-module.html"> +<ANCHOR id="libkmod-libkmod-module.synopsis" href="libkmod/libkmod-libkmod-module.html#libkmod-libkmod-module.synopsis"> +<ANCHOR id="libkmod-libkmod-module.description" href="libkmod/libkmod-libkmod-module.html#libkmod-libkmod-module.description"> +<ANCHOR id="libkmod-libkmod-module.details" href="libkmod/libkmod-libkmod-module.html#libkmod-libkmod-module.details"> +<ANCHOR id="kmod-module" href="libkmod/libkmod-libkmod-module.html#kmod-module"> +<ANCHOR id="kmod-module-new-from-lookup" href="libkmod/libkmod-libkmod-module.html#kmod-module-new-from-lookup"> +<ANCHOR id="kmod-module-new-from-name" href="libkmod/libkmod-libkmod-module.html#kmod-module-new-from-name"> +<ANCHOR id="kmod-module-new-from-path" href="libkmod/libkmod-libkmod-module.html#kmod-module-new-from-path"> +<ANCHOR id="kmod-module-ref" href="libkmod/libkmod-libkmod-module.html#kmod-module-ref"> +<ANCHOR id="kmod-module-unref" href="libkmod/libkmod-libkmod-module.html#kmod-module-unref"> +<ANCHOR id="kmod-module-unref-list" href="libkmod/libkmod-libkmod-module.html#kmod-module-unref-list"> +<ANCHOR id="kmod-module-insert-module" href="libkmod/libkmod-libkmod-module.html#kmod-module-insert-module"> +<ANCHOR id="kmod-module-probe-insert-module" href="libkmod/libkmod-libkmod-module.html#kmod-module-probe-insert-module"> +<ANCHOR id="kmod-module-remove-module" href="libkmod/libkmod-libkmod-module.html#kmod-module-remove-module"> +<ANCHOR id="kmod-module-get-module" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-module"> +<ANCHOR id="kmod-module-get-dependencies" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-dependencies"> +<ANCHOR id="kmod-module-get-softdeps" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-softdeps"> +<ANCHOR id="kmod-module-apply-filter" href="libkmod/libkmod-libkmod-module.html#kmod-module-apply-filter"> +<ANCHOR id="kmod-module-get-filtered-blacklist" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-filtered-blacklist"> +<ANCHOR id="kmod-module-get-install-commands" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-install-commands"> +<ANCHOR id="kmod-module-get-remove-commands" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-remove-commands"> +<ANCHOR id="kmod-module-get-name" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-name"> +<ANCHOR id="kmod-module-get-options" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-options"> +<ANCHOR id="kmod-module-get-path" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-path"> +<ANCHOR id="kmod-module-get-dependency-symbols" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-dependency-symbols"> +<ANCHOR id="kmod-module-dependency-symbol-get-bind" href="libkmod/libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-bind"> +<ANCHOR id="kmod-module-dependency-symbol-get-crc" href="libkmod/libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-crc"> +<ANCHOR id="kmod-module-dependency-symbol-get-symbol" href="libkmod/libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-symbol"> +<ANCHOR id="kmod-module-dependency-symbols-free-list" href="libkmod/libkmod-libkmod-module.html#kmod-module-dependency-symbols-free-list"> +<ANCHOR id="kmod-module-get-sections" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-sections"> +<ANCHOR id="kmod-module-section-free-list" href="libkmod/libkmod-libkmod-module.html#kmod-module-section-free-list"> +<ANCHOR id="kmod-module-section-get-address" href="libkmod/libkmod-libkmod-module.html#kmod-module-section-get-address"> +<ANCHOR id="kmod-module-section-get-name" href="libkmod/libkmod-libkmod-module.html#kmod-module-section-get-name"> +<ANCHOR id="kmod-module-get-symbols" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-symbols"> +<ANCHOR id="kmod-module-symbol-get-crc" href="libkmod/libkmod-libkmod-module.html#kmod-module-symbol-get-crc"> +<ANCHOR id="kmod-module-symbol-get-symbol" href="libkmod/libkmod-libkmod-module.html#kmod-module-symbol-get-symbol"> +<ANCHOR id="kmod-module-symbols-free-list" href="libkmod/libkmod-libkmod-module.html#kmod-module-symbols-free-list"> +<ANCHOR id="kmod-module-get-versions" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-versions"> +<ANCHOR id="kmod-module-version-get-crc" href="libkmod/libkmod-libkmod-module.html#kmod-module-version-get-crc"> +<ANCHOR id="kmod-module-version-get-symbol" href="libkmod/libkmod-libkmod-module.html#kmod-module-version-get-symbol"> +<ANCHOR id="kmod-module-versions-free-list" href="libkmod/libkmod-libkmod-module.html#kmod-module-versions-free-list"> +<ANCHOR id="kmod-module-get-info" href="libkmod/libkmod-libkmod-module.html#kmod-module-get-info"> +<ANCHOR id="kmod-module-info-free-list" href="libkmod/libkmod-libkmod-module.html#kmod-module-info-free-list"> +<ANCHOR id="kmod-module-info-get-key" href="libkmod/libkmod-libkmod-module.html#kmod-module-info-get-key"> +<ANCHOR id="kmod-module-info-get-value" href="libkmod/libkmod-libkmod-module.html#kmod-module-info-get-value"> +<ANCHOR id="libkmod-libkmod-loaded" href="libkmod/libkmod-libkmod-loaded.html"> +<ANCHOR id="libkmod-libkmod-loaded.synopsis" href="libkmod/libkmod-libkmod-loaded.html#libkmod-libkmod-loaded.synopsis"> +<ANCHOR id="libkmod-libkmod-loaded.description" href="libkmod/libkmod-libkmod-loaded.html#libkmod-libkmod-loaded.description"> +<ANCHOR id="libkmod-libkmod-loaded.details" href="libkmod/libkmod-libkmod-loaded.html#libkmod-libkmod-loaded.details"> +<ANCHOR id="kmod-module-new-from-loaded" href="libkmod/libkmod-libkmod-loaded.html#kmod-module-new-from-loaded"> +<ANCHOR id="kmod-module-get-initstate" href="libkmod/libkmod-libkmod-loaded.html#kmod-module-get-initstate"> +<ANCHOR id="kmod-module-initstate-str" href="libkmod/libkmod-libkmod-loaded.html#kmod-module-initstate-str"> +<ANCHOR id="kmod-module-get-size" href="libkmod/libkmod-libkmod-loaded.html#kmod-module-get-size"> +<ANCHOR id="kmod-module-get-refcnt" href="libkmod/libkmod-libkmod-loaded.html#kmod-module-get-refcnt"> +<ANCHOR id="kmod-module-get-holders" href="libkmod/libkmod-libkmod-loaded.html#kmod-module-get-holders"> diff --git a/libkmod/docs/html/left.png b/libkmod/docs/html/left.png Binary files differnew file mode 100644 index 0000000..2d05b3d --- /dev/null +++ b/libkmod/docs/html/left.png diff --git a/libkmod/docs/html/libkmod-libkmod-config.html b/libkmod/docs/html/libkmod-libkmod-config.html new file mode 100644 index 0000000..f88935e --- /dev/null +++ b/libkmod/docs/html/libkmod-libkmod-config.html @@ -0,0 +1,338 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>libkmod-config</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="libkmod Reference Manual"> +<link rel="up" href="ch01.html" title="libkmod"> +<link rel="prev" href="libkmod-libkmod-list.html" title="libkmod-list"> +<link rel="next" href="libkmod-libkmod-module.html" title="libkmod-module"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="libkmod-libkmod-list.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">libkmod Reference Manual</th> +<td><a accesskey="n" href="libkmod-libkmod-module.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#libkmod-libkmod-config.synopsis" class="shortcut">Top</a> + | + <a href="#libkmod-libkmod-config.description" class="shortcut">Description</a> +</td></tr> +</table> +<div class="refentry"> +<a name="libkmod-libkmod-config"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="libkmod-libkmod-config.top_of_page"></a>libkmod-config</span></h2> +<p>libkmod-config — retrieve current libkmod configuration</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="libkmod-libkmod-config.synopsis"></a><h2>Synopsis</h2> +<pre class="synopsis">struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter">kmod_config_iter</a>; +struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * <a class="link" href="libkmod-libkmod-config.html#kmod-config-get-blacklists" title="kmod_config_get_blacklists ()">kmod_config_get_blacklists</a> (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>); +struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * <a class="link" href="libkmod-libkmod-config.html#kmod-config-get-install-commands" title="kmod_config_get_install_commands ()">kmod_config_get_install_commands</a> + (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>); +struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * <a class="link" href="libkmod-libkmod-config.html#kmod-config-get-remove-commands" title="kmod_config_get_remove_commands ()">kmod_config_get_remove_commands</a> + (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>); +struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * <a class="link" href="libkmod-libkmod-config.html#kmod-config-get-aliases" title="kmod_config_get_aliases ()">kmod_config_get_aliases</a> (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>); +struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * <a class="link" href="libkmod-libkmod-config.html#kmod-config-get-options" title="kmod_config_get_options ()">kmod_config_get_options</a> (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>); +struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * <a class="link" href="libkmod-libkmod-config.html#kmod-config-get-softdeps" title="kmod_config_get_softdeps ()">kmod_config_get_softdeps</a> (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-key" title="kmod_config_iter_get_key ()">kmod_config_iter_get_key</a> (<em class="parameter"><code>const <span class="type">struct kmod_config_iter</span> *iter</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-value" title="kmod_config_iter_get_value ()">kmod_config_iter_get_value</a> (<em class="parameter"><code>const <span class="type">struct kmod_config_iter</span> *iter</code></em>); +<span class="returnvalue">bool</span> <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()">kmod_config_iter_next</a> (<em class="parameter"><code><span class="type">struct kmod_config_iter</span> *iter</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-free-iter" title="kmod_config_iter_free_iter ()">kmod_config_iter_free_iter</a> (<em class="parameter"><code><span class="type">struct kmod_config_iter</span> *iter</code></em>); +</pre> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod-config.description"></a><h2>Description</h2> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod-config.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="kmod-config-iter"></a><h3>struct kmod_config_iter</h3> +<pre class="programlisting">struct kmod_config_iter;</pre> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-get-blacklists"></a><h3>kmod_config_get_blacklists ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * kmod_config_get_blacklists (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Retrieve an iterator to deal with the blacklist maintained inside the +library. See <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-key" title="kmod_config_iter_get_key ()"><code class="function">kmod_config_iter_get_key()</code></a>, <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-value" title="kmod_config_iter_get_value ()"><code class="function">kmod_config_iter_get_value()</code></a> and +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a>. At least one call to <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a> must +be made to initialize the iterator and check if it's valid. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new iterator over the blacklists or NULL on failure. Free it +with <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-free-iter" title="kmod_config_iter_free_iter ()"><code class="function">kmod_config_iter_free_iter()</code></a>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-get-install-commands"></a><h3>kmod_config_get_install_commands ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * kmod_config_get_install_commands + (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Retrieve an iterator to deal with the install commands maintained inside the +library. See <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-key" title="kmod_config_iter_get_key ()"><code class="function">kmod_config_iter_get_key()</code></a>, <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-value" title="kmod_config_iter_get_value ()"><code class="function">kmod_config_iter_get_value()</code></a> and +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a>. At least one call to <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a> must +be made to initialize the iterator and check if it's valid. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new iterator over the install commands or NULL on failure. Free +it with <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-free-iter" title="kmod_config_iter_free_iter ()"><code class="function">kmod_config_iter_free_iter()</code></a>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-get-remove-commands"></a><h3>kmod_config_get_remove_commands ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * kmod_config_get_remove_commands + (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Retrieve an iterator to deal with the remove commands maintained inside the +library. See <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-key" title="kmod_config_iter_get_key ()"><code class="function">kmod_config_iter_get_key()</code></a>, <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-value" title="kmod_config_iter_get_value ()"><code class="function">kmod_config_iter_get_value()</code></a> and +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a>. At least one call to <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a> must +be made to initialize the iterator and check if it's valid. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new iterator over the remove commands or NULL on failure. Free +it with <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-free-iter" title="kmod_config_iter_free_iter ()"><code class="function">kmod_config_iter_free_iter()</code></a>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-get-aliases"></a><h3>kmod_config_get_aliases ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * kmod_config_get_aliases (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Retrieve an iterator to deal with the aliases maintained inside the +library. See <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-key" title="kmod_config_iter_get_key ()"><code class="function">kmod_config_iter_get_key()</code></a>, <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-value" title="kmod_config_iter_get_value ()"><code class="function">kmod_config_iter_get_value()</code></a> and +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a>. At least one call to <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a> must +be made to initialize the iterator and check if it's valid. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new iterator over the aliases or NULL on failure. Free it with +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-free-iter" title="kmod_config_iter_free_iter ()"><code class="function">kmod_config_iter_free_iter()</code></a>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-get-options"></a><h3>kmod_config_get_options ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * kmod_config_get_options (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Retrieve an iterator to deal with the options maintained inside the +library. See <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-key" title="kmod_config_iter_get_key ()"><code class="function">kmod_config_iter_get_key()</code></a>, <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-value" title="kmod_config_iter_get_value ()"><code class="function">kmod_config_iter_get_value()</code></a> and +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a>. At least one call to <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a> must +be made to initialize the iterator and check if it's valid. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new iterator over the options or NULL on failure. Free it with +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-free-iter" title="kmod_config_iter_free_iter ()"><code class="function">kmod_config_iter_free_iter()</code></a>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-get-softdeps"></a><h3>kmod_config_get_softdeps ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter" title="struct kmod_config_iter"><span class="returnvalue">kmod_config_iter</span></a> * kmod_config_get_softdeps (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Retrieve an iterator to deal with the softdeps maintained inside the +library. See <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-key" title="kmod_config_iter_get_key ()"><code class="function">kmod_config_iter_get_key()</code></a>, <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-get-value" title="kmod_config_iter_get_value ()"><code class="function">kmod_config_iter_get_value()</code></a> and +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a>. At least one call to <a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a> must +be made to initialize the iterator and check if it's valid. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new iterator over the softdeps or NULL on failure. Free it with +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-free-iter" title="kmod_config_iter_free_iter ()"><code class="function">kmod_config_iter_free_iter()</code></a>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-iter-get-key"></a><h3>kmod_config_iter_get_key ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_config_iter_get_key (<em class="parameter"><code>const <span class="type">struct kmod_config_iter</span> *iter</code></em>);</pre> +<p> +When using a new allocated iterator, user must perform a call to +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a> to initialize iterator's position and check if it's +valid. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>iter</code></em> :</span></p></td> +<td>iterator over a certain configuration</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the key of the current configuration pointed by <em class="parameter"><code>iter</code></em>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-iter-get-value"></a><h3>kmod_config_iter_get_value ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_config_iter_get_value (<em class="parameter"><code>const <span class="type">struct kmod_config_iter</span> *iter</code></em>);</pre> +<p> +When using a new allocated iterator, user must perform a call to +<a class="link" href="libkmod-libkmod-config.html#kmod-config-iter-next" title="kmod_config_iter_next ()"><code class="function">kmod_config_iter_next()</code></a> to initialize iterator's position and check if it's +valid. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>iter</code></em> :</span></p></td> +<td>iterator over a certain configuration</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the value of the current configuration pointed by <em class="parameter"><code>iter</code></em>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-iter-next"></a><h3>kmod_config_iter_next ()</h3> +<pre class="programlisting"><span class="returnvalue">bool</span> kmod_config_iter_next (<em class="parameter"><code><span class="type">struct kmod_config_iter</span> *iter</code></em>);</pre> +<p> +Make <em class="parameter"><code>iter</code></em> point to the next item of a certain configuration. It's an +automatically recycling iterator. When it reaches the end, false is +returned; then if user wants to iterate again, it's sufficient to call this +function once more. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>iter</code></em> :</span></p></td> +<td>iterator over a certain configuration</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>true if next position of <em class="parameter"><code>iter</code></em> is valid or false if its end is +reached.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-config-iter-free-iter"></a><h3>kmod_config_iter_free_iter ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_config_iter_free_iter (<em class="parameter"><code><span class="type">struct kmod_config_iter</span> *iter</code></em>);</pre> +<p> +Free resources used by the iterator. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>iter</code></em> :</span></p></td> +<td>iterator over a certain configuration</td> +</tr></tbody> +</table></div> +</div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html>
\ No newline at end of file diff --git a/libkmod/docs/html/libkmod-libkmod-list.html b/libkmod/docs/html/libkmod-libkmod-list.html new file mode 100644 index 0000000..483ac4f --- /dev/null +++ b/libkmod/docs/html/libkmod-libkmod-list.html @@ -0,0 +1,173 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>libkmod-list</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="libkmod Reference Manual"> +<link rel="up" href="ch01.html" title="libkmod"> +<link rel="prev" href="libkmod-libkmod.html" title="libkmod"> +<link rel="next" href="libkmod-libkmod-config.html" title="libkmod-config"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="libkmod-libkmod.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">libkmod Reference Manual</th> +<td><a accesskey="n" href="libkmod-libkmod-config.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#libkmod-libkmod-list.synopsis" class="shortcut">Top</a> + | + <a href="#libkmod-libkmod-list.description" class="shortcut">Description</a> +</td></tr> +</table> +<div class="refentry"> +<a name="libkmod-libkmod-list"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="libkmod-libkmod-list.top_of_page"></a>libkmod-list</span></h2> +<p>libkmod-list — general purpose list</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="libkmod-libkmod-list.synopsis"></a><h2>Synopsis</h2> +<pre class="synopsis">struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list">kmod_list</a>; +#define <a class="link" href="libkmod-libkmod-list.html#kmod-list-foreach" title="kmod_list_foreach()">kmod_list_foreach</a> (list_entry, + first_entry) +#define <a class="link" href="libkmod-libkmod-list.html#kmod-list-foreach-reverse" title="kmod_list_foreach_reverse()">kmod_list_foreach_reverse</a> (list_entry, + first_entry) +struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * <a class="link" href="libkmod-libkmod-list.html#kmod-list-last" title="kmod_list_last ()">kmod_list_last</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *list</code></em>); +struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * <a class="link" href="libkmod-libkmod-list.html#kmod-list-next" title="kmod_list_next ()">kmod_list_next</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *list</code></em>, + <em class="parameter"><code>const <span class="type">struct kmod_list</span> *curr</code></em>); +struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * <a class="link" href="libkmod-libkmod-list.html#kmod-list-prev" title="kmod_list_prev ()">kmod_list_prev</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *list</code></em>, + <em class="parameter"><code>const <span class="type">struct kmod_list</span> *curr</code></em>); +</pre> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod-list.description"></a><h2>Description</h2> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod-list.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="kmod-list"></a><h3>struct kmod_list</h3> +<pre class="programlisting">struct kmod_list;</pre> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-list-foreach"></a><h3>kmod_list_foreach()</h3> +<pre class="programlisting">#define kmod_list_foreach(list_entry, first_entry)</pre> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-list-foreach-reverse"></a><h3>kmod_list_foreach_reverse()</h3> +<pre class="programlisting">#define kmod_list_foreach_reverse(list_entry, first_entry)</pre> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-list-last"></a><h3>kmod_list_last ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * kmod_list_last (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *list</code></em>);</pre> +<p> +Get the last element of the <em class="parameter"><code>list</code></em>. As <em class="parameter"><code>list</code></em> is a circular list, +this is a cheap operation O(1) with the last element being the +previous element. +</p> +<p> +If the list has a single element it will return the list itself (as +expected, and this is what differentiates from <a class="link" href="libkmod-libkmod-list.html#kmod-list-prev" title="kmod_list_prev ()"><code class="function">kmod_list_prev()</code></a>). +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>the head of the list</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>last node at <em class="parameter"><code>list</code></em> or NULL if the list is empty.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-list-next"></a><h3>kmod_list_next ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * kmod_list_next (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *list</code></em>, + <em class="parameter"><code>const <span class="type">struct kmod_list</span> *curr</code></em>);</pre> +<p> +Get the next node in <em class="parameter"><code>list</code></em> relative to <em class="parameter"><code>curr</code></em> as if <em class="parameter"><code>list</code></em> was not a circular +list. I.e. calling this function in the last node of the list returns +NULL.. It can be used to iterate a list by checking for NULL return to know +when all elements were iterated. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>the head of the list</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>curr</code></em> :</span></p></td> +<td>the current node in the list</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>node next to <em class="parameter"><code>curr</code></em> or NULL if either this node is the last of or +list is empty.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-list-prev"></a><h3>kmod_list_prev ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * kmod_list_prev (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *list</code></em>, + <em class="parameter"><code>const <span class="type">struct kmod_list</span> *curr</code></em>);</pre> +<p> +Get the previous node in <em class="parameter"><code>list</code></em> relative to <em class="parameter"><code>curr</code></em> as if <em class="parameter"><code>list</code></em> was not a +circular list. I.e.: the previous of the head is NULL. It can be used to +iterate a list by checking for NULL return to know when all elements were +iterated. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>the head of the list</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>curr</code></em> :</span></p></td> +<td>the current node in the list</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>node previous to <em class="parameter"><code>curr</code></em> or NULL if either this node is the head of +the list or the list is empty.</td> +</tr> +</tbody> +</table></div> +</div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html>
\ No newline at end of file diff --git a/libkmod/docs/html/libkmod-libkmod-loaded.html b/libkmod/docs/html/libkmod-libkmod-loaded.html new file mode 100644 index 0000000..e258c63 --- /dev/null +++ b/libkmod/docs/html/libkmod-libkmod-loaded.html @@ -0,0 +1,236 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>libkmod-loaded</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="libkmod Reference Manual"> +<link rel="up" href="ch01.html" title="libkmod"> +<link rel="prev" href="libkmod-libkmod-module.html" title="libkmod-module"> +<link rel="next" href="api-index-full.html" title="API Index"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="libkmod-libkmod-module.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">libkmod Reference Manual</th> +<td><a accesskey="n" href="api-index-full.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#libkmod-libkmod-loaded.synopsis" class="shortcut">Top</a> + | + <a href="#libkmod-libkmod-loaded.description" class="shortcut">Description</a> +</td></tr> +</table> +<div class="refentry"> +<a name="libkmod-libkmod-loaded"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="libkmod-libkmod-loaded.top_of_page"></a>libkmod-loaded</span></h2> +<p>libkmod-loaded — currently loaded modules</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="libkmod-libkmod-loaded.synopsis"></a><h2>Synopsis</h2> +<pre class="synopsis"><span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-loaded.html#kmod-module-new-from-loaded" title="kmod_module_new_from_loaded ()">kmod_module_new_from_loaded</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-initstate" title="kmod_module_get_initstate ()">kmod_module_get_initstate</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-loaded.html#kmod-module-initstate-str" title="kmod_module_initstate_str ()">kmod_module_initstate_str</a> (<em class="parameter"><code><span class="type">enum kmod_module_initstate</span> state</code></em>); +<span class="returnvalue">long</span> <a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-size" title="kmod_module_get_size ()">kmod_module_get_size</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-refcnt" title="kmod_module_get_refcnt ()">kmod_module_get_refcnt</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * <a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-holders" title="kmod_module_get_holders ()">kmod_module_get_holders</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +</pre> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod-loaded.description"></a><h2>Description</h2> +<p> +Information about currently loaded modules, as reported by Linux kernel. +These information are not cached by libkmod and are always read from /sys +and /proc/modules. +</p> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod-loaded.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="kmod-module-new-from-loaded"></a><h3>kmod_module_new_from_loaded ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_new_from_loaded (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>);</pre> +<p> +Create a new list of kmod modules with all modules currently loaded in +kernel. It uses /proc/modules to get the names of loaded modules and to +create kmod modules by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-new-from-name" title="kmod_module_new_from_name ()"><code class="function">kmod_module_new_from_name()</code></a> in each of them. +They are put in <em class="parameter"><code>list</code></em> in no particular order. +</p> +<p> +The initial refcount is 1, and needs to be decremented to release the +resources of the kmod_module. The returned <em class="parameter"><code>list</code></em> must be released by +calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-unref-list" title="kmod_module_unref_list ()"><code class="function">kmod_module_unref_list()</code></a>. Since libkmod keeps track of all +kmod_modules created, they are all released upon <em class="parameter"><code>ctx</code></em> destruction too. Do +not unref <em class="parameter"><code>ctx</code></em> before all the desired operations with the returned list are +completed. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>where to save the list of loaded modules</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 on error.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-initstate"></a><h3>kmod_module_get_initstate ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_get_initstate (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get the initstate of this <em class="parameter"><code>mod</code></em>, as returned by Linux Kernel, by reading +/sys filesystem. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>< 0 on error or module state if module is found in kernel, valid states are +KMOD_MODULE_BUILTIN: module is builtin; +KMOD_MODULE_LIVE: module is live in kernel; +KMOD_MODULE_COMING: module is being loaded; +KMOD_MODULE_GOING: module is being unloaded.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-initstate-str"></a><h3>kmod_module_initstate_str ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_initstate_str (<em class="parameter"><code><span class="type">enum kmod_module_initstate</span> state</code></em>);</pre> +<p> +Translate a initstate to a string. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>state</code></em> :</span></p></td> +<td>the state as returned by <a class="link" href="libkmod-libkmod-loaded.html#kmod-module-get-initstate" title="kmod_module_get_initstate ()"><code class="function">kmod_module_get_initstate()</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the string associated to the <em class="parameter"><code>state</code></em>. This string is statically +allocated, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-size"></a><h3>kmod_module_get_size ()</h3> +<pre class="programlisting"><span class="returnvalue">long</span> kmod_module_get_size (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get the size of this kmod module as returned by Linux kernel. If supported, +the size is read from the coresize attribute in /sys/module. For older +kernels, this falls back on /proc/modules and searches for the specified +module to get its size. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the size of this kmod module.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-refcnt"></a><h3>kmod_module_get_refcnt ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_get_refcnt (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get the ref count of this <em class="parameter"><code>mod</code></em>, as returned by Linux Kernel, by reading +/sys filesystem. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 on failure.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-holders"></a><h3>kmod_module_get_holders ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * kmod_module_get_holders (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get a list of kmod modules that are holding this <em class="parameter"><code>mod</code></em>, as returned by Linux +Kernel. After use, free the <em class="parameter"><code>list</code></em> by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-unref-list" title="kmod_module_unref_list ()"><code class="function">kmod_module_unref_list()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new list of kmod modules on success or NULL on failure.</td> +</tr> +</tbody> +</table></div> +</div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html>
\ No newline at end of file diff --git a/libkmod/docs/html/libkmod-libkmod-module.html b/libkmod/docs/html/libkmod-libkmod-module.html new file mode 100644 index 0000000..bff06bf --- /dev/null +++ b/libkmod/docs/html/libkmod-libkmod-module.html @@ -0,0 +1,1353 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>libkmod-module</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="libkmod Reference Manual"> +<link rel="up" href="ch01.html" title="libkmod"> +<link rel="prev" href="libkmod-libkmod-config.html" title="libkmod-config"> +<link rel="next" href="libkmod-libkmod-loaded.html" title="libkmod-loaded"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="libkmod-libkmod-config.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">libkmod Reference Manual</th> +<td><a accesskey="n" href="libkmod-libkmod-loaded.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#libkmod-libkmod-module.synopsis" class="shortcut">Top</a> + | + <a href="#libkmod-libkmod-module.description" class="shortcut">Description</a> +</td></tr> +</table> +<div class="refentry"> +<a name="libkmod-libkmod-module"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="libkmod-libkmod-module.top_of_page"></a>libkmod-module</span></h2> +<p>libkmod-module — operate on kernel modules</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="libkmod-libkmod-module.synopsis"></a><h2>Synopsis</h2> +<pre class="synopsis">struct <a class="link" href="libkmod-libkmod-module.html#kmod-module" title="struct kmod_module">kmod_module</a>; +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-new-from-lookup" title="kmod_module_new_from_lookup ()">kmod_module_new_from_lookup</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *given_alias</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-new-from-name" title="kmod_module_new_from_name ()">kmod_module_new_from_name</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code><span class="type">struct kmod_module</span> **mod</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-new-from-path" title="kmod_module_new_from_path ()">kmod_module_new_from_path</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *path</code></em>, + <em class="parameter"><code><span class="type">struct kmod_module</span> **mod</code></em>); +struct <a class="link" href="libkmod-libkmod-module.html#kmod-module" title="struct kmod_module"><span class="returnvalue">kmod_module</span></a> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-ref" title="kmod_module_ref ()">kmod_module_ref</a> (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>); +struct <a class="link" href="libkmod-libkmod-module.html#kmod-module" title="struct kmod_module"><span class="returnvalue">kmod_module</span></a> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-unref" title="kmod_module_unref ()">kmod_module_unref</a> (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-unref-list" title="kmod_module_unref_list ()">kmod_module_unref_list</a> (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-insert-module" title="kmod_module_insert_module ()">kmod_module_insert_module</a> (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *options</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-probe-insert-module" title="kmod_module_probe_insert_module ()">kmod_module_probe_insert_module</a> (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *extra_options</code></em>, + <em class="parameter"><code><span class="type">int</span> (*run_install) (struct kmod_module *m, const char *cmdline, void *data)</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *data</code></em>, + <em class="parameter"><code><span class="type">void</span> (*print_action) (struct kmod_module *m, bool install, const char *options)</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-remove-module" title="kmod_module_remove_module ()">kmod_module_remove_module</a> (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>); +struct <a class="link" href="libkmod-libkmod-module.html#kmod-module" title="struct kmod_module"><span class="returnvalue">kmod_module</span></a> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-module" title="kmod_module_get_module ()">kmod_module_get_module</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-dependencies" title="kmod_module_get_dependencies ()">kmod_module_get_dependencies</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-softdeps" title="kmod_module_get_softdeps ()">kmod_module_get_softdeps</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **pre</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **post</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-apply-filter" title="kmod_module_apply_filter ()">kmod_module_apply_filter</a> (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">enum kmod_filter</span> filter_type</code></em>, + <em class="parameter"><code>const <span class="type">struct kmod_list</span> *input</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **output</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-filtered-blacklist" title="kmod_module_get_filtered_blacklist ()">kmod_module_get_filtered_blacklist</a> (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">struct kmod_list</span> *input</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **output</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-install-commands" title="kmod_module_get_install_commands ()">kmod_module_get_install_commands</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-remove-commands" title="kmod_module_get_remove_commands ()">kmod_module_get_remove_commands</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-name" title="kmod_module_get_name ()">kmod_module_get_name</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-options" title="kmod_module_get_options ()">kmod_module_get_options</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-path" title="kmod_module_get_path ()">kmod_module_get_path</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-dependency-symbols" title="kmod_module_get_dependency_symbols ()">kmod_module_get_dependency_symbols</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-bind" title="kmod_module_dependency_symbol_get_bind ()">kmod_module_dependency_symbol_get_bind</a> + (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +<span class="returnvalue">uint64_t</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-crc" title="kmod_module_dependency_symbol_get_crc ()">kmod_module_dependency_symbol_get_crc</a> + (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-symbol" title="kmod_module_dependency_symbol_get_symbol ()">kmod_module_dependency_symbol_get_symbol</a> + (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbols-free-list" title="kmod_module_dependency_symbols_free_list ()">kmod_module_dependency_symbols_free_list</a> + (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>); +struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-sections" title="kmod_module_get_sections ()">kmod_module_get_sections</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-section-free-list" title="kmod_module_section_free_list ()">kmod_module_section_free_list</a> (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>); +unsigned <span class="returnvalue">long</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-section-get-address" title="kmod_module_section_get_address ()">kmod_module_section_get_address</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-section-get-name" title="kmod_module_section_get_name ()">kmod_module_section_get_name</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-symbols" title="kmod_module_get_symbols ()">kmod_module_get_symbols</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>); +<span class="returnvalue">uint64_t</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-symbol-get-crc" title="kmod_module_symbol_get_crc ()">kmod_module_symbol_get_crc</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-symbol-get-symbol" title="kmod_module_symbol_get_symbol ()">kmod_module_symbol_get_symbol</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-symbols-free-list" title="kmod_module_symbols_free_list ()">kmod_module_symbols_free_list</a> (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-versions" title="kmod_module_get_versions ()">kmod_module_get_versions</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>); +<span class="returnvalue">uint64_t</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-version-get-crc" title="kmod_module_version_get_crc ()">kmod_module_version_get_crc</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-version-get-symbol" title="kmod_module_version_get_symbol ()">kmod_module_version_get_symbol</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-versions-free-list" title="kmod_module_versions_free_list ()">kmod_module_versions_free_list</a> (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-get-info" title="kmod_module_get_info ()">kmod_module_get_info</a> (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod-module.html#kmod-module-info-free-list" title="kmod_module_info_free_list ()">kmod_module_info_free_list</a> (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-info-get-key" title="kmod_module_info_get_key ()">kmod_module_info_get_key</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="libkmod-libkmod-module.html#kmod-module-info-get-value" title="kmod_module_info_get_value ()">kmod_module_info_get_value</a> (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>); +</pre> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod-module.description"></a><h2>Description</h2> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod-module.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="kmod-module"></a><h3>struct kmod_module</h3> +<pre class="programlisting">struct kmod_module;</pre> +<p> +Opaque object representing a module. +</p> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-new-from-lookup"></a><h3>kmod_module_new_from_lookup ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_new_from_lookup (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *given_alias</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>);</pre> +<p> +Create a new list of kmod modules using an alias or module name and lookup +libkmod's configuration files and indexes in order to find the module. +Once it's found in one of the places, it stops searching and create the +list of modules that is saved in <em class="parameter"><code>list</code></em>. +</p> +<p> +The search order is: 1. aliases in configuration file; 2. module names in +modules.dep index; 3. symbol aliases in modules.symbols index; 4. aliases +in modules.alias index. +</p> +<p> +The initial refcount is 1, and needs to be decremented to release the +resources of the kmod_module. The returned <em class="parameter"><code>list</code></em> must be released by +calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-unref-list" title="kmod_module_unref_list ()"><code class="function">kmod_module_unref_list()</code></a>. Since libkmod keeps track of all +kmod_modules created, they are all released upon <em class="parameter"><code>ctx</code></em> destruction too. Do +not unref <em class="parameter"><code>ctx</code></em> before all the desired operations with the returned list are +completed. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>given_alias</code></em> :</span></p></td> +<td>alias to look for</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>an empty list where to save the list of modules matching +<em class="parameter"><code>given_alias</code></em> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise. It fails if any of the lookup +methods failed, which is basically due to memory allocation fail. If module +is not found, it still returns 0, but <em class="parameter"><code>list</code></em> is an empty list.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-new-from-name"></a><h3>kmod_module_new_from_name ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_new_from_name (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>, + <em class="parameter"><code><span class="type">struct kmod_module</span> **mod</code></em>);</pre> +<p> +Create a new struct kmod_module using the module name. <em class="parameter"><code>name</code></em> can not be an +alias, file name or anything else; it must be a module name. There's no +check if the module exists in the system. +</p> +<p> +This function is also used internally by many others that return a new +struct kmod_module or a new list of modules. +</p> +<p> +The initial refcount is 1, and needs to be decremented to release the +resources of the kmod_module. Since libkmod keeps track of all +kmod_modules created, they are all released upon <em class="parameter"><code>ctx</code></em> destruction too. Do +not unref <em class="parameter"><code>ctx</code></em> before all the desired operations with the returned +kmod_module are done. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td> +<td>name of the module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>where to save the created struct kmod_module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise. It fails if name is not a valid +module name or if memory allocation failed.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-new-from-path"></a><h3>kmod_module_new_from_path ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_new_from_path (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *path</code></em>, + <em class="parameter"><code><span class="type">struct kmod_module</span> **mod</code></em>);</pre> +<p> +Create a new struct kmod_module using the module path. <em class="parameter"><code>path</code></em> must be an +existent file with in the filesystem and must be accessible to libkmod. +</p> +<p> +The initial refcount is 1, and needs to be decremented to release the +resources of the kmod_module. Since libkmod keeps track of all +kmod_modules created, they are all released upon <em class="parameter"><code>ctx</code></em> destruction too. Do +not unref <em class="parameter"><code>ctx</code></em> before all the desired operations with the returned +kmod_module are done. +</p> +<p> +If <em class="parameter"><code>path</code></em> is relative, it's treated as relative to the current working +directory. Otherwise, give an absolute path. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td> +<td>path where to find the given module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>where to save the created struct kmod_module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise. It fails if file does not exist, if +it's not a valid file for a kmod_module or if memory allocation failed.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-ref"></a><h3>kmod_module_ref ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-module.html#kmod-module" title="struct kmod_module"><span class="returnvalue">kmod_module</span></a> * kmod_module_ref (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Take a reference of the kmod module, incrementing its refcount. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the passed <em class="parameter"><code>module</code></em> with its refcount incremented.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-unref"></a><h3>kmod_module_unref ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-module.html#kmod-module" title="struct kmod_module"><span class="returnvalue">kmod_module</span></a> * kmod_module_unref (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Drop a reference of the kmod module. If the refcount reaches zero, its +resources are released. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>NULL if <em class="parameter"><code>mod</code></em> is NULL or if the module was released. Otherwise it +returns the passed <em class="parameter"><code>mod</code></em> with its refcount decremented.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-unref-list"></a><h3>kmod_module_unref_list ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_unref_list (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>);</pre> +<p> +Drop a reference of each kmod module in <em class="parameter"><code>list</code></em> and releases the resources +taken by the list itself. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>list of kmod modules</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-insert-module"></a><h3>kmod_module_insert_module ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_insert_module (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *options</code></em>);</pre> +<p> +Insert a module in Linux kernel. It opens the file pointed by <em class="parameter"><code>mod</code></em>, +mmap'ing it and passing to kernel. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td> +<td>flags are not passed to Linux Kernel, but instead they dictate the +behavior of this function, valid flags are +KMOD_INSERT_FORCE_VERMAGIC: ignore kernel version magic; +KMOD_INSERT_FORCE_MODVERSION: ignore symbol version hashes.</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>options</code></em> :</span></p></td> +<td>module's options to pass to Linux Kernel.</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 on failure. If module is already loaded it +returns -EEXIST.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-probe-insert-module"></a><h3>kmod_module_probe_insert_module ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_probe_insert_module (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *extra_options</code></em>, + <em class="parameter"><code><span class="type">int</span> (*run_install) (struct kmod_module *m, const char *cmdline, void *data)</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *data</code></em>, + <em class="parameter"><code><span class="type">void</span> (*print_action) (struct kmod_module *m, bool install, const char *options)</code></em>);</pre> +<p> +Insert a module in Linux kernel resolving dependencies, soft dependencies, +install commands and applying blacklist. +</p> +<p> +If <em class="parameter"><code>run_install</code></em> is NULL, this function will fork and exec by calling +system(3). Don't pass a NULL argument in <em class="parameter"><code>run_install</code></em> if your binary is +setuid/setgid (see warning in system(3)). If you need control over the +execution of an install command, give a callback function instead. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td> +<td>flags are not passed to Linux Kernel, but instead they dictate the +behavior of this function, valid flags are +KMOD_PROBE_FORCE_VERMAGIC: ignore kernel version magic; +KMOD_PROBE_FORCE_MODVERSION: ignore symbol version hashes; +KMOD_PROBE_IGNORE_COMMAND: whether the probe should ignore install +commands and softdeps configured in the system; +KMOD_PROBE_IGNORE_LOADED: do not check whether the module is already +live in kernel or not; +KMOD_PROBE_DRY_RUN: dry run, do not insert module, just call the +associated callback function; +KMOD_PROBE_FAIL_ON_LOADED: if KMOD_PROBE_IGNORE_LOADED is not specified +and the module is already live in kernel, the function will fail if this +flag is specified; +KMOD_PROBE_APPLY_BLACKLIST_ALL: probe will apply KMOD_FILTER_BLACKLIST +filter to this module and its dependencies. If any of the dependencies (or +the module) is blacklisted, the probe will fail, unless the blacklisted +module is already live in kernel; +KMOD_PROBE_APPLY_BLACKLIST: probe will fail if the module is blacklisted; +KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY: probe will fail if the module is an +alias and is blacklisted.</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>extra_options</code></em> :</span></p></td> +<td>module's options to pass to Linux Kernel. It applies only +to <em class="parameter"><code>mod</code></em>, not to its dependencies.</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>run_install</code></em> :</span></p></td> +<td>function to run when <em class="parameter"><code>mod</code></em> is backed by an install command.</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td> +<td>data to give back to <em class="parameter"><code>run_install</code></em> callback</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>print_action</code></em> :</span></p></td> +<td>function to call with the action being taken (install or +insmod). It's useful for tools like modprobe when running with verbose +output or in dry-run mode.</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success, > 0 if stopped by a reason given in <em class="parameter"><code>flags</code></em> or < 0 on +failure.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-remove-module"></a><h3>kmod_module_remove_module ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_remove_module (<em class="parameter"><code><span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code>unsigned <span class="type">int</span> flags</code></em>);</pre> +<p> +Remove a module from Linux kernel. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td> +<td>flags to pass to Linux kernel when removing the module, valid flags are +KMOD_REMOVE_FORCE: force remove module regardless if it's still in +use by a kernel subsystem or other process; +KMOD_REMOVE_NOWAIT: return immediately. It will fail if the module +is in using and KMOD_REMOVE_FORCE is not specified. +If this module is in use by any kernel subsystem or process, not using +this flag will cause the call to block indefinitely, until the module +is not in use anymore. Always use this flag, it's deprecated not using +it and the default behavior might change in future to always set it.</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 on failure.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-module"></a><h3>kmod_module_get_module ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-module.html#kmod-module" title="struct kmod_module"><span class="returnvalue">kmod_module</span></a> * kmod_module_get_module (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the kmod module of this <em class="parameter"><code>entry</code></em> in the list, increasing its refcount. +After it's used, unref it. Since the refcount is incremented upon return, +you still have to call <a class="link" href="libkmod-libkmod-module.html#kmod-module-unref-list" title="kmod_module_unref_list ()"><code class="function">kmod_module_unref_list()</code></a> to release the list of kmod +modules. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>an entry in a list of kmod modules.</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>NULL on failure or the kmod_module contained in this list entry +with its refcount incremented.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-dependencies"></a><h3>kmod_module_get_dependencies ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * kmod_module_get_dependencies (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Search the modules.dep index to find the dependencies of the given <em class="parameter"><code>mod</code></em>. +The result is cached in <em class="parameter"><code>mod</code></em>, so subsequent calls to this function will +return the already searched list of modules. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>NULL on failure. Otherwise it returns a list of kmod modules +that can be released by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-unref-list" title="kmod_module_unref_list ()"><code class="function">kmod_module_unref_list()</code></a>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-softdeps"></a><h3>kmod_module_get_softdeps ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_get_softdeps (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **pre</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **post</code></em>);</pre> +<p> +Get soft dependencies for this kmod module. Soft dependencies come +from configuration file and are not cached in <em class="parameter"><code>mod</code></em> because it may include +dependency cycles that would make we leak kmod_module. Any call +to this function will search for this module in configuration, allocate a +list and return the result. +</p> +<p> +Both <em class="parameter"><code>pre</code></em> and <em class="parameter"><code>post</code></em> are newly created list of kmod_module and +should be unreferenced with <a class="link" href="libkmod-libkmod-module.html#kmod-module-unref-list" title="kmod_module_unref_list ()"><code class="function">kmod_module_unref_list()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>pre</code></em> :</span></p></td> +<td>where to save the list of preceding soft dependencies.</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>post</code></em> :</span></p></td> +<td>where to save the list of post soft dependencies.</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-apply-filter"></a><h3>kmod_module_apply_filter ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_apply_filter (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">enum kmod_filter</span> filter_type</code></em>, + <em class="parameter"><code>const <span class="type">struct kmod_list</span> *input</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **output</code></em>);</pre> +<p> +Given a list <em class="parameter"><code>input</code></em>, this function filter it out by the filter mask +and save it in <em class="parameter"><code>output</code></em>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>filter_type</code></em> :</span></p></td> +<td>bitmask to filter modules out, valid types are +KMOD_FILTER_BLACKLIST: filter modules in blacklist out; +KMOD_FILTER_BUILTIN: filter builtin modules out.</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td> +<td>list of kmod_module to be filtered</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td> +<td>where to save the new list</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise. <em class="parameter"><code>output</code></em> is saved with the updated +list.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-filtered-blacklist"></a><h3>kmod_module_get_filtered_blacklist ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_get_filtered_blacklist (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">struct kmod_list</span> *input</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **output</code></em>);</pre> +<p> +This function should not be used. Use kmod_module_apply_filter instead. +</p> +<p> +Given a list <em class="parameter"><code>input</code></em>, this function filter it out with config's blacklist +and save it in <em class="parameter"><code>output</code></em>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>input</code></em> :</span></p></td> +<td>list of kmod_module to be filtered with blacklist</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>output</code></em> :</span></p></td> +<td>where to save the new list</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise. <em class="parameter"><code>output</code></em> is saved with the updated +list.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-install-commands"></a><h3>kmod_module_get_install_commands ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_get_install_commands (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get install commands for this kmod module. Install commands come from the +configuration file and are cached in <em class="parameter"><code>mod</code></em>. The first call to this function +will search for this module in configuration and subsequent calls return +the cached string. The install commands are returned as they were in the +configuration, concatenated by ';'. No other processing is made in this +string. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a string with all install commands separated by semicolons. This +string is owned by <em class="parameter"><code>mod</code></em>, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-remove-commands"></a><h3>kmod_module_get_remove_commands ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_get_remove_commands (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get remove commands for this kmod module. Remove commands come from the +configuration file and are cached in <em class="parameter"><code>mod</code></em>. The first call to this function +will search for this module in configuration and subsequent calls return +the cached string. The remove commands are returned as they were in the +configuration, concatenated by ';'. No other processing is made in this +string. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a string with all remove commands separated by semicolons. This +string is owned by <em class="parameter"><code>mod</code></em>, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-name"></a><h3>kmod_module_get_name ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_get_name (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get the name of this kmod module. Name is always available, independently +if it was created by <a class="link" href="libkmod-libkmod-module.html#kmod-module-new-from-name" title="kmod_module_new_from_name ()"><code class="function">kmod_module_new_from_name()</code></a> or another function and +it's always normalized (dashes are replaced with underscores). +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the name of this kmod module.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-options"></a><h3>kmod_module_get_options ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_get_options (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get options of this kmod module. Options come from the configuration file +and are cached in <em class="parameter"><code>mod</code></em>. The first call to this function will search for +this module in configuration and subsequent calls return the cached string. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a string with all the options separated by spaces. This string is +owned by <em class="parameter"><code>mod</code></em>, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-path"></a><h3>kmod_module_get_path ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_get_path (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get the path of this kmod module. If this kmod module was not created by +path, it can search the modules.dep index in order to find out the module +under context's dirname. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the path of this kmod module or NULL if such information is not +available.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-dependency-symbols"></a><h3>kmod_module_get_dependency_symbols ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_get_dependency_symbols (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>);</pre> +<p> +Get a list of entries in ELF section ".symtab" or "__ksymtab_strings". +</p> +<p> +After use, free the <em class="parameter"><code>list</code></em> by calling +<a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbols-free-list" title="kmod_module_dependency_symbols_free_list ()"><code class="function">kmod_module_dependency_symbols_free_list()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>where to return list of module dependency_symbols. Use +<a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-symbol" title="kmod_module_dependency_symbol_get_symbol ()"><code class="function">kmod_module_dependency_symbol_get_symbol()</code></a> and +<a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-crc" title="kmod_module_dependency_symbol_get_crc ()"><code class="function">kmod_module_dependency_symbol_get_crc()</code></a>. Release this list with +<a class="link" href="libkmod-libkmod-module.html#kmod-module-dependency-symbols-free-list" title="kmod_module_dependency_symbols_free_list ()"><code class="function">kmod_module_dependency_symbols_free_list()</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-dependency-symbol-get-bind"></a><h3>kmod_module_dependency_symbol_get_bind ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_dependency_symbol_get_bind + (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the bind type of a kmod module dependency_symbol. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module dependency_symbol</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the bind of this kmod module dependency_symbol on success +or < 0 on failure.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-dependency-symbol-get-crc"></a><h3>kmod_module_dependency_symbol_get_crc ()</h3> +<pre class="programlisting"><span class="returnvalue">uint64_t</span> kmod_module_dependency_symbol_get_crc + (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the crc of a kmod module dependency_symbol. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module dependency_symbol</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the crc of this kmod module dependency_symbol on success or NULL on +failure. The string is owned by the dependency_symbol, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-dependency-symbol-get-symbol"></a><h3>kmod_module_dependency_symbol_get_symbol ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_dependency_symbol_get_symbol + (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the dependency symbol of a kmod module +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module dependency_symbols</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the symbol of this kmod module dependency_symbols on success or NULL +on failure. The string is owned by the dependency_symbols, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-dependency-symbols-free-list"></a><h3>kmod_module_dependency_symbols_free_list ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_module_dependency_symbols_free_list + (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>);</pre> +<p> +Release the resources taken by <em class="parameter"><code>list</code></em> +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>kmod module dependency_symbols list</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-sections"></a><h3>kmod_module_get_sections ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod-list.html#kmod-list" title="struct kmod_list"><span class="returnvalue">kmod_list</span></a> * kmod_module_get_sections (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>);</pre> +<p> +Get a list of kmod sections of this <em class="parameter"><code>mod</code></em>, as returned by Linux Kernel. The +structure contained in this list is internal to libkmod and their fields +can be obtained by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-section-get-name" title="kmod_module_section_get_name ()"><code class="function">kmod_module_section_get_name()</code></a> and +<a class="link" href="libkmod-libkmod-module.html#kmod-module-section-get-address" title="kmod_module_section_get_address ()"><code class="function">kmod_module_section_get_address()</code></a>. +</p> +<p> +After use, free the <em class="parameter"><code>list</code></em> by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-section-free-list" title="kmod_module_section_free_list ()"><code class="function">kmod_module_section_free_list()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new list of kmod module sections on success or NULL on failure.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-section-free-list"></a><h3>kmod_module_section_free_list ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_module_section_free_list (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>);</pre> +<p> +Release the resources taken by <em class="parameter"><code>list</code></em> +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>kmod module section list</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-section-get-address"></a><h3>kmod_module_section_get_address ()</h3> +<pre class="programlisting">unsigned <span class="returnvalue">long</span> kmod_module_section_get_address (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the address of a kmod module section. +</p> +<p> +After use, free the <em class="parameter"><code>list</code></em> by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-section-free-list" title="kmod_module_section_free_list ()"><code class="function">kmod_module_section_free_list()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module section</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the address of this kmod module section on success or ULONG_MAX +on failure.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-section-get-name"></a><h3>kmod_module_section_get_name ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_section_get_name (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-symbols"></a><h3>kmod_module_get_symbols ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_get_symbols (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>);</pre> +<p> +Get a list of entries in ELF section ".symtab" or "__ksymtab_strings". +</p> +<p> +After use, free the <em class="parameter"><code>list</code></em> by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-symbols-free-list" title="kmod_module_symbols_free_list ()"><code class="function">kmod_module_symbols_free_list()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>where to return list of module symbols. Use +<a class="link" href="libkmod-libkmod-module.html#kmod-module-symbol-get-symbol" title="kmod_module_symbol_get_symbol ()"><code class="function">kmod_module_symbol_get_symbol()</code></a> and +<a class="link" href="libkmod-libkmod-module.html#kmod-module-symbol-get-crc" title="kmod_module_symbol_get_crc ()"><code class="function">kmod_module_symbol_get_crc()</code></a>. Release this list with +<a class="link" href="libkmod-libkmod-module.html#kmod-module-symbols-free-list" title="kmod_module_symbols_free_list ()"><code class="function">kmod_module_symbols_free_list()</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-symbol-get-crc"></a><h3>kmod_module_symbol_get_crc ()</h3> +<pre class="programlisting"><span class="returnvalue">uint64_t</span> kmod_module_symbol_get_crc (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the crc of a kmod module symbol. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module symbol</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the crc of this kmod module symbol on success or NULL on +failure. The string is owned by the symbol, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-symbol-get-symbol"></a><h3>kmod_module_symbol_get_symbol ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_symbol_get_symbol (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the symbol of a kmod module symbols. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module symbols</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the symbol of this kmod module symbols on success or NULL +on failure. The string is owned by the symbols, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-symbols-free-list"></a><h3>kmod_module_symbols_free_list ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_module_symbols_free_list (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>);</pre> +<p> +Release the resources taken by <em class="parameter"><code>list</code></em> +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>kmod module symbols list</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-versions"></a><h3>kmod_module_get_versions ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_get_versions (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>);</pre> +<p> +Get a list of entries in ELF section "__versions". +</p> +<p> +After use, free the <em class="parameter"><code>list</code></em> by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-versions-free-list" title="kmod_module_versions_free_list ()"><code class="function">kmod_module_versions_free_list()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>where to return list of module versions. Use +<a class="link" href="libkmod-libkmod-module.html#kmod-module-version-get-symbol" title="kmod_module_version_get_symbol ()"><code class="function">kmod_module_version_get_symbol()</code></a> and +<a class="link" href="libkmod-libkmod-module.html#kmod-module-version-get-crc" title="kmod_module_version_get_crc ()"><code class="function">kmod_module_version_get_crc()</code></a>. Release this list with +<a class="link" href="libkmod-libkmod-module.html#kmod-module-versions-free-list" title="kmod_module_versions_free_list ()"><code class="function">kmod_module_versions_free_list()</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-version-get-crc"></a><h3>kmod_module_version_get_crc ()</h3> +<pre class="programlisting"><span class="returnvalue">uint64_t</span> kmod_module_version_get_crc (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the crc of a kmod module version. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module version</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the crc of this kmod module version on success or NULL on +failure. The string is owned by the version, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-version-get-symbol"></a><h3>kmod_module_version_get_symbol ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_version_get_symbol (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the symbol of a kmod module versions. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module versions</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the symbol of this kmod module versions on success or NULL +on failure. The string is owned by the versions, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-versions-free-list"></a><h3>kmod_module_versions_free_list ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_module_versions_free_list (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>);</pre> +<p> +Release the resources taken by <em class="parameter"><code>list</code></em> +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>kmod module versions list</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-get-info"></a><h3>kmod_module_get_info ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_module_get_info (<em class="parameter"><code>const <span class="type">struct kmod_module</span> *mod</code></em>, + <em class="parameter"><code><span class="type">struct kmod_list</span> **list</code></em>);</pre> +<p> +Get a list of entries in ELF section ".modinfo", these contain +alias, license, depends, vermagic and other keys with respective +values. If the module is signed (CONFIG_MODULE_SIG), information +about the module signature is included as well: signer, +sig_key and sig_hashalgo. +</p> +<p> +After use, free the <em class="parameter"><code>list</code></em> by calling <a class="link" href="libkmod-libkmod-module.html#kmod-module-info-free-list" title="kmod_module_info_free_list ()"><code class="function">kmod_module_info_free_list()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>mod</code></em> :</span></p></td> +<td>kmod module</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>where to return list of module information. Use +<a class="link" href="libkmod-libkmod-module.html#kmod-module-info-get-key" title="kmod_module_info_get_key ()"><code class="function">kmod_module_info_get_key()</code></a> and +<a class="link" href="libkmod-libkmod-module.html#kmod-module-info-get-value" title="kmod_module_info_get_value ()"><code class="function">kmod_module_info_get_value()</code></a>. Release this list with +<a class="link" href="libkmod-libkmod-module.html#kmod-module-info-free-list" title="kmod_module_info_free_list ()"><code class="function">kmod_module_info_free_list()</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-info-free-list"></a><h3>kmod_module_info_free_list ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_module_info_free_list (<em class="parameter"><code><span class="type">struct kmod_list</span> *list</code></em>);</pre> +<p> +Release the resources taken by <em class="parameter"><code>list</code></em> +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> +<td>kmod module info list</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-info-get-key"></a><h3>kmod_module_info_get_key ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_info_get_key (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the key of a kmod module info. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module info</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the key of this kmod module info on success or NULL on +failure. The string is owned by the info, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-module-info-get-value"></a><h3>kmod_module_info_get_value ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * kmod_module_info_get_value (<em class="parameter"><code>const <span class="type">struct kmod_list</span> *entry</code></em>);</pre> +<p> +Get the value of a kmod module info. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>entry</code></em> :</span></p></td> +<td>a list entry representing a kmod module info</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the value of this kmod module info on success or NULL on +failure. The string is owned by the info, do not free it.</td> +</tr> +</tbody> +</table></div> +</div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html>
\ No newline at end of file diff --git a/libkmod/docs/html/libkmod-libkmod.html b/libkmod/docs/html/libkmod-libkmod.html new file mode 100644 index 0000000..22b804b --- /dev/null +++ b/libkmod/docs/html/libkmod-libkmod.html @@ -0,0 +1,436 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>libkmod</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.78.1"> +<link rel="home" href="index.html" title="libkmod Reference Manual"> +<link rel="up" href="ch01.html" title="libkmod"> +<link rel="prev" href="ch01.html" title="libkmod"> +<link rel="next" href="libkmod-libkmod-list.html" title="libkmod-list"> +<meta name="generator" content="GTK-Doc V1.19 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="ch01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">libkmod Reference Manual</th> +<td><a accesskey="n" href="libkmod-libkmod-list.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#libkmod-libkmod.synopsis" class="shortcut">Top</a> + | + <a href="#libkmod-libkmod.description" class="shortcut">Description</a> +</td></tr> +</table> +<div class="refentry"> +<a name="libkmod-libkmod"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="libkmod-libkmod.top_of_page"></a>libkmod</span></h2> +<p>libkmod — libkmod context</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="libkmod-libkmod.synopsis"></a><h2>Synopsis</h2> +<pre class="synopsis">struct <a class="link" href="libkmod-libkmod.html#kmod-ctx" title="struct kmod_ctx">kmod_ctx</a>; +struct <a class="link" href="libkmod-libkmod.html#kmod-ctx" title="struct kmod_ctx"><span class="returnvalue">kmod_ctx</span></a> * <a class="link" href="libkmod-libkmod.html#kmod-new" title="kmod_new ()">kmod_new</a> (<em class="parameter"><code>const <span class="type">char</span> *dirname</code></em>, + <em class="parameter"><code>const <span class="type">char</span> * const *config_paths</code></em>); +struct <a class="link" href="libkmod-libkmod.html#kmod-ctx" title="struct kmod_ctx"><span class="returnvalue">kmod_ctx</span></a> * <a class="link" href="libkmod-libkmod.html#kmod-ref" title="kmod_ref ()">kmod_ref</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>); +struct <a class="link" href="libkmod-libkmod.html#kmod-ctx" title="struct kmod_ctx"><span class="returnvalue">kmod_ctx</span></a> * <a class="link" href="libkmod-libkmod.html#kmod-unref" title="kmod_unref ()">kmod_unref</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod.html#kmod-load-resources" title="kmod_load_resources ()">kmod_load_resources</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod.html#kmod-unload-resources" title="kmod_unload_resources ()">kmod_unload_resources</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod.html#kmod-validate-resources" title="kmod_validate_resources ()">kmod_validate_resources</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod.html#kmod-dump-index" title="kmod_dump_index ()">kmod_dump_index</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">enum kmod_index</span> type</code></em>, + <em class="parameter"><code><span class="type">int</span> fd</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod.html#kmod-set-log-priority" title="kmod_set_log_priority ()">kmod_set_log_priority</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">int</span> priority</code></em>); +<span class="returnvalue">int</span> <a class="link" href="libkmod-libkmod.html#kmod-get-log-priority" title="kmod_get_log_priority ()">kmod_get_log_priority</a> (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod.html#kmod-set-log-fn" title="kmod_set_log_fn ()">kmod_set_log_fn</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">void</span> (*log_fn) (void *log_data, int priority, const char *file, int line, const char *fn, const char *format, va_list args)</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *data</code></em>); +<span class="returnvalue">void</span> * <a class="link" href="libkmod-libkmod.html#kmod-get-userdata" title="kmod_get_userdata ()">kmod_get_userdata</a> (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>); +<span class="returnvalue">void</span> <a class="link" href="libkmod-libkmod.html#kmod-set-userdata" title="kmod_set_userdata ()">kmod_set_userdata</a> (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *userdata</code></em>); +</pre> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod.description"></a><h2>Description</h2> +<p> +The context contains the default values for the library user, +and is passed to all library operations. +</p> +</div> +<div class="refsect1"> +<a name="libkmod-libkmod.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="kmod-ctx"></a><h3>struct kmod_ctx</h3> +<pre class="programlisting">struct kmod_ctx;</pre> +<p> +Opaque object representing the library context. +</p> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-new"></a><h3>kmod_new ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod.html#kmod-ctx" title="struct kmod_ctx"><span class="returnvalue">kmod_ctx</span></a> * kmod_new (<em class="parameter"><code>const <span class="type">char</span> *dirname</code></em>, + <em class="parameter"><code>const <span class="type">char</span> * const *config_paths</code></em>);</pre> +<p> +Create kmod library context. This reads the kmod configuration +and fills in the default values. +</p> +<p> +The initial refcount is 1, and needs to be decremented to +release the resources of the kmod library context. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>dirname</code></em> :</span></p></td> +<td>what to consider as linux module's directory, if NULL +defaults to /lib/modules/`uname -r`. If it's relative, +it's treated as relative to the current working directory. +Otherwise, give an absolute dirname.</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>config_paths</code></em> :</span></p></td> +<td>ordered array of paths (directories or files) where +to load from user-defined configuration parameters such as +alias, blacklists, commands (install, remove). If +NULL defaults to /run/modprobe.d, /etc/modprobe.d and +/lib/modprobe.d. Give an empty vector if configuration should +not be read. This array must be null terminated.</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new kmod library context</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-ref"></a><h3>kmod_ref ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod.html#kmod-ctx" title="struct kmod_ctx"><span class="returnvalue">kmod_ctx</span></a> * kmod_ref (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Take a reference of the kmod library context. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the passed kmod library context</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-unref"></a><h3>kmod_unref ()</h3> +<pre class="programlisting">struct <a class="link" href="libkmod-libkmod.html#kmod-ctx" title="struct kmod_ctx"><span class="returnvalue">kmod_ctx</span></a> * kmod_unref (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Drop a reference of the kmod library context. If the refcount +reaches zero, the resources of the context will be released. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the passed kmod library context or NULL if it's freed</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-load-resources"></a><h3>kmod_load_resources ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_load_resources (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Load indexes and keep them open in <em class="parameter"><code>ctx</code></em>. This way it's faster to lookup +information within the indexes. If this function is not called before a +search, the necessary index is always opened and closed. +</p> +<p> +If user will do more than one or two lookups, insertions, deletions, most +likely it's good to call this function first. Particularly in a daemon like +udev that on bootup issues hundreds of calls to lookup the index, calling +this function will speedup the searches. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-unload-resources"></a><h3>kmod_unload_resources ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_unload_resources (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Unload all the indexes. This will free the resources to maintain the index +open and all subsequent searches will need to open and close the index. +</p> +<p> +User is free to call <a class="link" href="libkmod-libkmod.html#kmod-load-resources" title="kmod_load_resources ()"><code class="function">kmod_load_resources()</code></a> and <a class="link" href="libkmod-libkmod.html#kmod-unload-resources" title="kmod_unload_resources ()"><code class="function">kmod_unload_resources()</code></a> as +many times as wanted during the lifecycle of <em class="parameter"><code>ctx</code></em>. For example, if a daemon +knows that when starting up it will lookup a lot of modules, it could call +<a class="link" href="libkmod-libkmod.html#kmod-load-resources" title="kmod_load_resources ()"><code class="function">kmod_load_resources()</code></a> and after the first burst of searches is gone, it +could free the resources by calling <a class="link" href="libkmod-libkmod.html#kmod-unload-resources" title="kmod_unload_resources ()"><code class="function">kmod_unload_resources()</code></a>. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-validate-resources"></a><h3>kmod_validate_resources ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_validate_resources (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Check if indexes and configuration files changed on disk and the current +context is not valid anymore. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>KMOD_RESOURCES_OK if resources are still valid, +KMOD_RESOURCES_MUST_RELOAD if it's sufficient to call +<a class="link" href="libkmod-libkmod.html#kmod-unload-resources" title="kmod_unload_resources ()"><code class="function">kmod_unload_resources()</code></a> and <a class="link" href="libkmod-libkmod.html#kmod-load-resources" title="kmod_load_resources ()"><code class="function">kmod_load_resources()</code></a> or +KMOD_RESOURCES_MUST_RECREATE if <em class="parameter"><code>ctx</code></em> must be re-created.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-dump-index"></a><h3>kmod_dump_index ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_dump_index (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">enum kmod_index</span> type</code></em>, + <em class="parameter"><code><span class="type">int</span> fd</code></em>);</pre> +<p> +Dump index to file descriptor. Note that this function doesn't use stdio.h +so call <code class="function">fflush()</code> before calling this function to be sure data is written in +order. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>type</code></em> :</span></p></td> +<td>index to dump, valid indexes are +KMOD_INDEX_MODULES_DEP: index of module dependencies; +KMOD_INDEX_MODULES_ALIAS: index of module aliases; +KMOD_INDEX_MODULES_SYMBOL: index of symbol aliases; +KMOD_INDEX_MODULES_BUILTIN: index of builtin module.</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>fd</code></em> :</span></p></td> +<td>file descriptor to dump index to</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>0 on success or < 0 otherwise.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-set-log-priority"></a><h3>kmod_set_log_priority ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_set_log_priority (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">int</span> priority</code></em>);</pre> +<p> +Set the current logging priority. The value controls which messages +are logged. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>priority</code></em> :</span></p></td> +<td>the new logging priority</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-get-log-priority"></a><h3>kmod_get_log_priority ()</h3> +<pre class="programlisting"><span class="returnvalue">int</span> kmod_get_log_priority (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the current logging priority</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-set-log-fn"></a><h3>kmod_set_log_fn ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_set_log_fn (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code><span class="type">void</span> (*log_fn) (void *log_data, int priority, const char *file, int line, const char *fn, const char *format, va_list args)</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *data</code></em>);</pre> +<p> +The built-in logging writes to stderr. It can be +overridden by a custom function, to plug log messages +into the user's logging functionality. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>log_fn</code></em> :</span></p></td> +<td>function to be called for logging messages</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td> +<td>data to pass to log function</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-get-userdata"></a><h3>kmod_get_userdata ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> * kmod_get_userdata (<em class="parameter"><code>const <span class="type">struct kmod_ctx</span> *ctx</code></em>);</pre> +<p> +Retrieve stored data pointer from library context. This might be useful +to access from callbacks. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>stored userdata</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="kmod-set-userdata"></a><h3>kmod_set_userdata ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> kmod_set_userdata (<em class="parameter"><code><span class="type">struct kmod_ctx</span> *ctx</code></em>, + <em class="parameter"><code>const <span class="type">void</span> *userdata</code></em>);</pre> +<p> +Store custom <em class="parameter"><code>userdata</code></em> in the library context. +</p> +<div class="variablelist"><table border="0" class="variablelist"> +<colgroup> +<col align="left" valign="top"> +<col> +</colgroup> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>ctx</code></em> :</span></p></td> +<td>kmod library context</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>userdata</code></em> :</span></p></td> +<td>data pointer</td> +</tr> +</tbody> +</table></div> +</div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.19</div> +</body> +</html>
\ No newline at end of file diff --git a/libkmod/docs/html/libkmod.devhelp2 b/libkmod/docs/html/libkmod.devhelp2 new file mode 100644 index 0000000..b2dca73 --- /dev/null +++ b/libkmod/docs/html/libkmod.devhelp2 @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> +<book xmlns="http://www.devhelp.net/book" title="libkmod Reference Manual" link="index.html" author="" name="libkmod" version="2" language="c"> + <chapters> + <sub name="libkmod" link="ch01.html"> + <sub name="libkmod" link="libkmod-libkmod.html"/> + <sub name="libkmod-list" link="libkmod-libkmod-list.html"/> + <sub name="libkmod-config" link="libkmod-libkmod-config.html"/> + <sub name="libkmod-module" link="libkmod-libkmod-module.html"/> + <sub name="libkmod-loaded" link="libkmod-libkmod-loaded.html"/> + </sub> + <sub name="API Index" link="api-index-full.html"/> + </chapters> + <functions> + <keyword type="struct" name="struct kmod_ctx" link="libkmod-libkmod.html#kmod-ctx"/> + <keyword type="function" name="kmod_new ()" link="libkmod-libkmod.html#kmod-new"/> + <keyword type="function" name="kmod_ref ()" link="libkmod-libkmod.html#kmod-ref"/> + <keyword type="function" name="kmod_unref ()" link="libkmod-libkmod.html#kmod-unref"/> + <keyword type="function" name="kmod_load_resources ()" link="libkmod-libkmod.html#kmod-load-resources"/> + <keyword type="function" name="kmod_unload_resources ()" link="libkmod-libkmod.html#kmod-unload-resources"/> + <keyword type="function" name="kmod_validate_resources ()" link="libkmod-libkmod.html#kmod-validate-resources"/> + <keyword type="function" name="kmod_dump_index ()" link="libkmod-libkmod.html#kmod-dump-index"/> + <keyword type="function" name="kmod_set_log_priority ()" link="libkmod-libkmod.html#kmod-set-log-priority"/> + <keyword type="function" name="kmod_get_log_priority ()" link="libkmod-libkmod.html#kmod-get-log-priority"/> + <keyword type="function" name="kmod_set_log_fn ()" link="libkmod-libkmod.html#kmod-set-log-fn"/> + <keyword type="function" name="kmod_get_userdata ()" link="libkmod-libkmod.html#kmod-get-userdata"/> + <keyword type="function" name="kmod_set_userdata ()" link="libkmod-libkmod.html#kmod-set-userdata"/> + <keyword type="struct" name="struct kmod_list" link="libkmod-libkmod-list.html#kmod-list"/> + <keyword type="macro" name="kmod_list_foreach()" link="libkmod-libkmod-list.html#kmod-list-foreach"/> + <keyword type="macro" name="kmod_list_foreach_reverse()" link="libkmod-libkmod-list.html#kmod-list-foreach-reverse"/> + <keyword type="function" name="kmod_list_last ()" link="libkmod-libkmod-list.html#kmod-list-last"/> + <keyword type="function" name="kmod_list_next ()" link="libkmod-libkmod-list.html#kmod-list-next"/> + <keyword type="function" name="kmod_list_prev ()" link="libkmod-libkmod-list.html#kmod-list-prev"/> + <keyword type="struct" name="struct kmod_config_iter" link="libkmod-libkmod-config.html#kmod-config-iter"/> + <keyword type="function" name="kmod_config_get_blacklists ()" link="libkmod-libkmod-config.html#kmod-config-get-blacklists"/> + <keyword type="function" name="kmod_config_get_install_commands ()" link="libkmod-libkmod-config.html#kmod-config-get-install-commands"/> + <keyword type="function" name="kmod_config_get_remove_commands ()" link="libkmod-libkmod-config.html#kmod-config-get-remove-commands"/> + <keyword type="function" name="kmod_config_get_aliases ()" link="libkmod-libkmod-config.html#kmod-config-get-aliases"/> + <keyword type="function" name="kmod_config_get_options ()" link="libkmod-libkmod-config.html#kmod-config-get-options"/> + <keyword type="function" name="kmod_config_get_softdeps ()" link="libkmod-libkmod-config.html#kmod-config-get-softdeps"/> + <keyword type="function" name="kmod_config_iter_get_key ()" link="libkmod-libkmod-config.html#kmod-config-iter-get-key"/> + <keyword type="function" name="kmod_config_iter_get_value ()" link="libkmod-libkmod-config.html#kmod-config-iter-get-value"/> + <keyword type="function" name="kmod_config_iter_next ()" link="libkmod-libkmod-config.html#kmod-config-iter-next"/> + <keyword type="function" name="kmod_config_iter_free_iter ()" link="libkmod-libkmod-config.html#kmod-config-iter-free-iter"/> + <keyword type="struct" name="struct kmod_module" link="libkmod-libkmod-module.html#kmod-module"/> + <keyword type="function" name="kmod_module_new_from_lookup ()" link="libkmod-libkmod-module.html#kmod-module-new-from-lookup"/> + <keyword type="function" name="kmod_module_new_from_name ()" link="libkmod-libkmod-module.html#kmod-module-new-from-name"/> + <keyword type="function" name="kmod_module_new_from_path ()" link="libkmod-libkmod-module.html#kmod-module-new-from-path"/> + <keyword type="function" name="kmod_module_ref ()" link="libkmod-libkmod-module.html#kmod-module-ref"/> + <keyword type="function" name="kmod_module_unref ()" link="libkmod-libkmod-module.html#kmod-module-unref"/> + <keyword type="function" name="kmod_module_unref_list ()" link="libkmod-libkmod-module.html#kmod-module-unref-list"/> + <keyword type="function" name="kmod_module_insert_module ()" link="libkmod-libkmod-module.html#kmod-module-insert-module"/> + <keyword type="function" name="kmod_module_probe_insert_module ()" link="libkmod-libkmod-module.html#kmod-module-probe-insert-module"/> + <keyword type="function" name="kmod_module_remove_module ()" link="libkmod-libkmod-module.html#kmod-module-remove-module"/> + <keyword type="function" name="kmod_module_get_module ()" link="libkmod-libkmod-module.html#kmod-module-get-module"/> + <keyword type="function" name="kmod_module_get_dependencies ()" link="libkmod-libkmod-module.html#kmod-module-get-dependencies"/> + <keyword type="function" name="kmod_module_get_softdeps ()" link="libkmod-libkmod-module.html#kmod-module-get-softdeps"/> + <keyword type="function" name="kmod_module_apply_filter ()" link="libkmod-libkmod-module.html#kmod-module-apply-filter"/> + <keyword type="function" name="kmod_module_get_filtered_blacklist ()" link="libkmod-libkmod-module.html#kmod-module-get-filtered-blacklist"/> + <keyword type="function" name="kmod_module_get_install_commands ()" link="libkmod-libkmod-module.html#kmod-module-get-install-commands"/> + <keyword type="function" name="kmod_module_get_remove_commands ()" link="libkmod-libkmod-module.html#kmod-module-get-remove-commands"/> + <keyword type="function" name="kmod_module_get_name ()" link="libkmod-libkmod-module.html#kmod-module-get-name"/> + <keyword type="function" name="kmod_module_get_options ()" link="libkmod-libkmod-module.html#kmod-module-get-options"/> + <keyword type="function" name="kmod_module_get_path ()" link="libkmod-libkmod-module.html#kmod-module-get-path"/> + <keyword type="function" name="kmod_module_get_dependency_symbols ()" link="libkmod-libkmod-module.html#kmod-module-get-dependency-symbols"/> + <keyword type="function" name="kmod_module_dependency_symbol_get_bind ()" link="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-bind"/> + <keyword type="function" name="kmod_module_dependency_symbol_get_crc ()" link="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-crc"/> + <keyword type="function" name="kmod_module_dependency_symbol_get_symbol ()" link="libkmod-libkmod-module.html#kmod-module-dependency-symbol-get-symbol"/> + <keyword type="function" name="kmod_module_dependency_symbols_free_list ()" link="libkmod-libkmod-module.html#kmod-module-dependency-symbols-free-list"/> + <keyword type="function" name="kmod_module_get_sections ()" link="libkmod-libkmod-module.html#kmod-module-get-sections"/> + <keyword type="function" name="kmod_module_section_free_list ()" link="libkmod-libkmod-module.html#kmod-module-section-free-list"/> + <keyword type="function" name="kmod_module_section_get_address ()" link="libkmod-libkmod-module.html#kmod-module-section-get-address"/> + <keyword type="function" name="kmod_module_section_get_name ()" link="libkmod-libkmod-module.html#kmod-module-section-get-name"/> + <keyword type="function" name="kmod_module_get_symbols ()" link="libkmod-libkmod-module.html#kmod-module-get-symbols"/> + <keyword type="function" name="kmod_module_symbol_get_crc ()" link="libkmod-libkmod-module.html#kmod-module-symbol-get-crc"/> + <keyword type="function" name="kmod_module_symbol_get_symbol ()" link="libkmod-libkmod-module.html#kmod-module-symbol-get-symbol"/> + <keyword type="function" name="kmod_module_symbols_free_list ()" link="libkmod-libkmod-module.html#kmod-module-symbols-free-list"/> + <keyword type="function" name="kmod_module_get_versions ()" link="libkmod-libkmod-module.html#kmod-module-get-versions"/> + <keyword type="function" name="kmod_module_version_get_crc ()" link="libkmod-libkmod-module.html#kmod-module-version-get-crc"/> + <keyword type="function" name="kmod_module_version_get_symbol ()" link="libkmod-libkmod-module.html#kmod-module-version-get-symbol"/> + <keyword type="function" name="kmod_module_versions_free_list ()" link="libkmod-libkmod-module.html#kmod-module-versions-free-list"/> + <keyword type="function" name="kmod_module_get_info ()" link="libkmod-libkmod-module.html#kmod-module-get-info"/> + <keyword type="function" name="kmod_module_info_free_list ()" link="libkmod-libkmod-module.html#kmod-module-info-free-list"/> + <keyword type="function" name="kmod_module_info_get_key ()" link="libkmod-libkmod-module.html#kmod-module-info-get-key"/> + <keyword type="function" name="kmod_module_info_get_value ()" link="libkmod-libkmod-module.html#kmod-module-info-get-value"/> + <keyword type="function" name="kmod_module_new_from_loaded ()" link="libkmod-libkmod-loaded.html#kmod-module-new-from-loaded"/> + <keyword type="function" name="kmod_module_get_initstate ()" link="libkmod-libkmod-loaded.html#kmod-module-get-initstate"/> + <keyword type="function" name="kmod_module_initstate_str ()" link="libkmod-libkmod-loaded.html#kmod-module-initstate-str"/> + <keyword type="function" name="kmod_module_get_size ()" link="libkmod-libkmod-loaded.html#kmod-module-get-size"/> + <keyword type="function" name="kmod_module_get_refcnt ()" link="libkmod-libkmod-loaded.html#kmod-module-get-refcnt"/> + <keyword type="function" name="kmod_module_get_holders ()" link="libkmod-libkmod-loaded.html#kmod-module-get-holders"/> + </functions> +</book> diff --git a/libkmod/docs/html/right.png b/libkmod/docs/html/right.png Binary files differnew file mode 100644 index 0000000..92832e3 --- /dev/null +++ b/libkmod/docs/html/right.png diff --git a/libkmod/docs/html/style.css b/libkmod/docs/html/style.css new file mode 100644 index 0000000..d6f6c26 --- /dev/null +++ b/libkmod/docs/html/style.css @@ -0,0 +1,266 @@ +.synopsis, .classsynopsis +{ + /* tango:aluminium 1/2 */ + background: #eeeeec; + border: solid 1px #d3d7cf; + padding: 0.5em; +} +.programlisting +{ + /* tango:sky blue 0/1 */ + background: #e6f3ff; + border: solid 1px #729fcf; + padding: 0.5em; +} +.variablelist +{ + padding: 4px; + margin-left: 3em; +} +.variablelist td:first-child +{ + vertical-align: top; +} + +@media screen { + sup a.footnote + { + position: relative; + top: 0em ! important; + + } + /* this is needed so that the local anchors are displayed below the naviagtion */ + div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] + { + display: inline-block; + position: relative; + top:-5em; + } + /* this seems to be a bug in the xsl style sheets when generating indexes */ + div.index div.index + { + top: 0em; + } + /* make space for the fixed navigation bar and add space at the bottom so that + * link targets appear somewhat close to top + */ + body + { + padding-top: 3.2em; + padding-bottom: 20em; + } + /* style and size the navigation bar */ + table.navigation#top + { + position: fixed; + /* tango:scarlet red 0/1 */ + background: #ffe6e6; + border: solid 1px #ef2929; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + height: 3em; + z-index: 10; + } + .navigation a, .navigation a:visited + { + /* tango:scarlet red 3 */ + color: #a40000; + } + .navigation a:hover + { + /* tango:scarlet red 1 */ + color: #ef2929; + } + td.shortcuts + { + /* tango:scarlet red 1 */ + color: #ef2929; + font-size: 80%; + white-space: nowrap; + } +} +@media print { + table.navigation { + visibility: collapse; + display: none; + } + div.titlepage table.navigation { + visibility: visible; + display: table; + /* tango:scarlet red 0/1 */ + background: #ffe6e6; + border: solid 1px #ef2929; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + height: 3em; + } +} + +.navigation .title +{ + font-size: 200%; +} + +div.gallery-float +{ + float: left; + padding: 10px; +} +div.gallery-float img +{ + border-style: none; +} +div.gallery-spacer +{ + clear: both; +} + +a, a:visited +{ + text-decoration: none; + /* tango:sky blue 2 */ + color: #3465a4; +} +a:hover +{ + text-decoration: underline; + /* tango:sky blue 1 */ + color: #729fcf; +} + +div.table table +{ + border-collapse: collapse; + border-spacing: 0px; + /* tango:aluminium 3 */ + border: solid 1px #babdb6; +} + +div.table table td, div.table table th +{ + /* tango:aluminium 3 */ + border: solid 1px #babdb6; + padding: 3px; + vertical-align: top; +} + +div.table table th +{ + /* tango:aluminium 2 */ + background-color: #d3d7cf; +} + +hr +{ + /* tango:aluminium 3 */ + color: #babdb6; + background: #babdb6; + border: none 0px; + height: 1px; + clear: both; +} + +.footer +{ + padding-top: 3.5em; + /* tango:aluminium 3 */ + color: #babdb6; + text-align: center; + font-size: 80%; +} + +.warning +{ + /* tango:orange 0/1 */ + background: #ffeed9; + border-color: #ffb04f; +} +.note +{ + /* tango:chameleon 0/0.5 */ + background: #d8ffb2; + border-color: #abf562; +} +.note, .warning +{ + padding: 0.5em; + border-width: 1px; + border-style: solid; +} +.note h3, .warning h3 +{ + margin-top: 0.0em +} +.note p, .warning p +{ + margin-bottom: 0.0em +} + +/* blob links */ +h2 .extralinks, h3 .extralinks +{ + float: right; + /* tango:aluminium 3 */ + color: #babdb6; + font-size: 80%; + font-weight: normal; +} + +.annotation +{ + /* tango:aluminium 5 */ + color: #555753; + font-size: 80%; + font-weight: normal; +} + +/* code listings */ + +.listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */ +.listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */ +.listing_code .programlisting .function { color: #000000; font-weight: bold; } +.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */ +.listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */ +.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ +.listing_code .programlisting .normal { color: #000000; } +.listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */ +.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ +.listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */ +.listing_code .programlisting .type { color: #000000; } +.listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */ +.listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */ + +.listing_frame { + /* tango:sky blue 1 */ + border: solid 1px #729fcf; + padding: 0px; +} + +.listing_lines, .listing_code { + margin-top: 0px; + margin-bottom: 0px; + padding: 0.5em; +} +.listing_lines { + /* tango:sky blue 0.5 */ + background: #a6c5e3; + /* tango:aluminium 6 */ + color: #2e3436; +} +.listing_code { + /* tango:sky blue 0 */ + background: #e6f3ff; +} +.listing_code .programlisting { + /* override from previous */ + border: none 0px; + padding: 0px; +} +.listing_lines pre, .listing_code pre { + margin: 0px; +} + diff --git a/libkmod/docs/html/up.png b/libkmod/docs/html/up.png Binary files differnew file mode 100644 index 0000000..85b3e2a --- /dev/null +++ b/libkmod/docs/html/up.png diff --git a/libkmod/docs/libkmod-overrides.txt b/libkmod/docs/libkmod-overrides.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/libkmod/docs/libkmod-overrides.txt diff --git a/libkmod/docs/version.xml b/libkmod/docs/version.xml new file mode 100644 index 0000000..60d3b2f --- /dev/null +++ b/libkmod/docs/version.xml @@ -0,0 +1 @@ +15 diff --git a/libkmod/libkmod-array.c b/libkmod/libkmod-array.c index f9ca5cf..8417f9a 100644 --- a/libkmod/libkmod-array.c +++ b/libkmod/libkmod-array.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c index 398468e..24978c1 100644 --- a/libkmod/libkmod-config.c +++ b/libkmod/libkmod-config.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -31,7 +31,7 @@ #include <dirent.h> #include "libkmod.h" -#include "libkmod-private.h" +#include "libkmod-internal.h" struct kmod_alias { char *name; @@ -518,7 +518,7 @@ static void kmod_config_free_softdep(struct kmod_config *config, static void kcmdline_parse_result(struct kmod_config *config, char *modname, char *param, char *value) { - if (modname == NULL || param == NULL || value == NULL) + if (modname == NULL || param == NULL) return; DBG(config->ctx, "%s %s\n", modname, param); @@ -833,7 +833,7 @@ static int conf_files_list(struct kmod_ctx *ctx, struct kmod_list **list, if (S_ISREG(st.st_mode)) { conf_files_insert_sorted(ctx, list, path, NULL); return 0; - } if (!S_ISDIR(st.st_mode)) { + } else if (!S_ISDIR(st.st_mode)) { ERR(ctx, "unsupported file mode %s: %#x\n", path, st.st_mode); return -EINVAL; diff --git a/libkmod/libkmod-elf.c b/libkmod/libkmod-elf.c index ef6bd2a..1c11a24 100644 --- a/libkmod/libkmod-elf.c +++ b/libkmod/libkmod-elf.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -25,7 +25,7 @@ #include <errno.h> #include "libkmod.h" -#include "libkmod-private.h" +#include "libkmod-internal.h" enum kmod_elf_class { KMOD_ELF_32 = (1 << 1), @@ -280,10 +280,10 @@ struct kmod_elf *kmod_elf_new(const void *memory, off_t size) size_t hdr_size, shdr_size, min_size; int class; - assert(sizeof(uint16_t) == sizeof(Elf32_Half)); - assert(sizeof(uint16_t) == sizeof(Elf64_Half)); - assert(sizeof(uint32_t) == sizeof(Elf32_Word)); - assert(sizeof(uint32_t) == sizeof(Elf64_Word)); + assert_cc(sizeof(uint16_t) == sizeof(Elf32_Half)); + assert_cc(sizeof(uint16_t) == sizeof(Elf64_Half)); + assert_cc(sizeof(uint32_t) == sizeof(Elf32_Word)); + assert_cc(sizeof(uint32_t) == sizeof(Elf64_Word)); class = elf_identify(memory, size); if (class < 0) { @@ -513,7 +513,7 @@ int kmod_elf_get_modversions(const struct kmod_elf *elf, struct kmod_modversion int i, count, err; #define MODVERSION_SEC_SIZE (sizeof(struct kmod_modversion64)) - assert(sizeof(struct kmod_modversion64) == + assert_cc(sizeof(struct kmod_modversion64) == sizeof(struct kmod_modversion32)); if (elf->class == KMOD_ELF_32) diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c index 679edef..390f018 100644 --- a/libkmod/libkmod-file.c +++ b/libkmod/libkmod-file.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -29,7 +29,7 @@ #include <unistd.h> #include "libkmod.h" -#include "libkmod-private.h" +#include "libkmod-internal.h" #ifdef ENABLE_XZ #include <lzma.h> @@ -52,6 +52,7 @@ struct kmod_file { gzFile gzf; #endif int fd; + bool direct; off_t size; void *memory; const struct file_ops *ops; @@ -254,9 +255,11 @@ static int load_reg(struct kmod_file *file) return -errno; file->size = st.st_size; - file->memory = mmap(0, file->size, PROT_READ, MAP_PRIVATE, file->fd, 0); + file->memory = mmap(NULL, file->size, PROT_READ, MAP_PRIVATE, + file->fd, 0); if (file->memory == MAP_FAILED) return -errno; + file->direct = true; return 0; } @@ -300,6 +303,7 @@ struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, magic_size_max = itr->magic_size; } + file->direct = false; if (magic_size_max > 0) { char *buf = alloca(magic_size_max + 1); ssize_t sz; @@ -353,6 +357,16 @@ off_t kmod_file_get_size(const struct kmod_file *file) return file->size; } +bool kmod_file_get_direct(const struct kmod_file *file) +{ + return file->direct; +} + +int kmod_file_get_fd(const struct kmod_file *file) +{ + return file->fd; +} + void kmod_file_unref(struct kmod_file *file) { if (file->elf) diff --git a/libkmod/libkmod-hash.c b/libkmod/libkmod-hash.c index dc9910b..57f475c 100644 --- a/libkmod/libkmod-hash.c +++ b/libkmod/libkmod-hash.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/libkmod/libkmod-index.c b/libkmod/libkmod-index.c index a5933e2..fa7db41 100644 --- a/libkmod/libkmod-index.c +++ b/libkmod/libkmod-index.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -27,7 +27,7 @@ #include <assert.h> #include <inttypes.h> -#include "libkmod-private.h" +#include "libkmod-internal.h" #include "libkmod-index.h" #include "macro.h" @@ -432,9 +432,12 @@ void index_dump(struct index_file *in, int fd, const char *prefix) struct index_node_f *root; struct buffer buf; + root = index_readroot(in); + if (root == NULL) + return; + buf_init(&buf); buf_pushchars(&buf, prefix); - root = index_readroot(in); index_dump_node(root, &buf, fd); buf_release(&buf); } @@ -801,9 +804,9 @@ struct index_mm *index_mm_open(struct kmod_ctx *ctx, const char *filename, if ((size_t) st.st_size < sizeof(hdr)) goto fail_nommap; - if ((idx->mm = mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) + if ((idx->mm = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == MAP_FAILED) { - ERR(ctx, "mmap(0, %"PRIu64", PROT_READ, %d, MAP_PRIVATE, 0): %m\n", + ERR(ctx, "mmap(NULL, %"PRIu64", PROT_READ, %d, MAP_PRIVATE, 0): %m\n", st.st_size, fd); goto fail_nommap; } @@ -902,9 +905,12 @@ void index_mm_dump(struct index_mm *idx, int fd, const char *prefix) struct index_mm_node *root; struct buffer buf; + root = index_mm_readroot(idx); + if (root == NULL) + return; + buf_init(&buf); buf_pushchars(&buf, prefix); - root = index_mm_readroot(idx); index_mm_dump_node(root, &buf, fd); buf_release(&buf); } diff --git a/libkmod/libkmod-index.h b/libkmod/libkmod-index.h index 6eb77b9..ad63e15 100644 --- a/libkmod/libkmod-index.h +++ b/libkmod/libkmod-index.h @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/libkmod/libkmod-private.h b/libkmod/libkmod-internal.h index 4760733..0180124 100644 --- a/libkmod/libkmod-private.h +++ b/libkmod/libkmod-internal.h @@ -5,6 +5,7 @@ #include <syslog.h> #include <limits.h> +#include "missing.h" #include "macro.h" #include "libkmod.h" @@ -35,6 +36,15 @@ static _always_inline_ _printf_format_(2, 3) void #define KCMD_LINE_SIZE 4096 +#ifndef HAVE_SECURE_GETENV +# ifdef HAVE___SECURE_GETENV +# define secure_getenv __secure_getenv +# else +# warning neither secure_getenv nor __secure_getenv is available +# define secure_getenv getenv +# endif +#endif + void kmod_log(const struct kmod_ctx *ctx, int priority, const char *file, int line, const char *fn, const char *format, ...) __attribute__((format(printf, 6, 7))) __attribute__((nonnull(1, 3, 5))); @@ -87,8 +97,8 @@ void kmod_set_modules_visited(struct kmod_ctx *ctx, bool visited) __attribute__( char *kmod_search_moddep(struct kmod_ctx *ctx, const char *name) __attribute__((nonnull(1,2))); struct kmod_module *kmod_pool_get_module(struct kmod_ctx *ctx, const char *key) __attribute__((nonnull(1,2))); -void kmod_pool_add_module(struct kmod_ctx *ctx, struct kmod_module *mod, const char *key) __attribute__((nonnull(1,2, 3))); -void kmod_pool_del_module(struct kmod_ctx *ctx, struct kmod_module *mod, const char *key) __attribute__((nonnull(1,2, 3))); +void kmod_pool_add_module(struct kmod_ctx *ctx, struct kmod_module *mod, const char *key) __attribute__((nonnull(1, 2, 3))); +void kmod_pool_del_module(struct kmod_ctx *ctx, struct kmod_module *mod, const char *key) __attribute__((nonnull(1, 2, 3))); const struct kmod_config *kmod_get_config(const struct kmod_ctx *ctx) __attribute__((nonnull(1))); @@ -142,6 +152,8 @@ struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, const char *filenam struct kmod_elf *kmod_file_get_elf(struct kmod_file *file) __attribute__((nonnull(1))); void *kmod_file_get_contents(const struct kmod_file *file) _must_check_ __attribute__((nonnull(1))); off_t kmod_file_get_size(const struct kmod_file *file) _must_check_ __attribute__((nonnull(1))); +bool kmod_file_get_direct(const struct kmod_file *file) _must_check_ __attribute__((nonnull(1))); +int kmod_file_get_fd(const struct kmod_file *file) _must_check_ __attribute__((nonnull(1))); void kmod_file_unref(struct kmod_file *file) __attribute__((nonnull(1))); /* libkmod-elf.c */ @@ -168,5 +180,14 @@ int kmod_elf_strip_vermagic(struct kmod_elf *elf) _must_check_ __attribute__((no */ int kmod_elf_get_section(const struct kmod_elf *elf, const char *section, const void **buf, uint64_t *buf_size) _must_check_ __attribute__((nonnull(1,2,3,4))); +/* libkmod-signature.c */ +struct kmod_signature_info { + const char *signer; + size_t signer_len; + const char *key_id; + size_t key_id_len; + const char *algo, *hash_algo, *id_type; +}; +bool kmod_module_signature_info(const struct kmod_file *file, struct kmod_signature_info *sig_info) _must_check_ __attribute__((nonnull(1, 2))); /* util functions */ #include "libkmod-util.h" diff --git a/libkmod/libkmod-list.c b/libkmod/libkmod-list.c index 982c4ab..45f512a 100644 --- a/libkmod/libkmod-list.c +++ b/libkmod/libkmod-list.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,7 +21,7 @@ #include <stdlib.h> #include "libkmod.h" -#include "libkmod-private.h" +#include "libkmod-internal.h" /** * SECTION:libkmod-list diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c index 0d87ce1..0fc1101 100644 --- a/libkmod/libkmod-module.c +++ b/libkmod/libkmod-module.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -33,12 +33,17 @@ #include <sys/stat.h> #include <sys/types.h> #include <sys/mman.h> +#include <sys/syscall.h> #include <sys/wait.h> #include <string.h> #include <fnmatch.h> +#ifdef HAVE_LINUX_MODULE_H +#include <linux/module.h> +#endif + #include "libkmod.h" -#include "libkmod-private.h" +#include "libkmod-internal.h" /** * SECTION:libkmod-module @@ -565,8 +570,7 @@ fail: * Drop a reference of each kmod module in @list and releases the resources * taken by the list itself. * - * Returns: NULL if @mod is NULL or if the module was released. Otherwise it - * returns the passed @mod with its refcount decremented. + * Returns: 0 */ KMOD_EXPORT int kmod_module_unref_list(struct kmod_list *list) { @@ -624,9 +628,8 @@ static const struct kmod_list *module_get_dependencies_noref(const struct kmod_m * The result is cached in @mod, so subsequent calls to this function will * return the already searched list of modules. * - * Returns: NULL on failure or if there are any dependencies. Otherwise it - * returns a list of kmod modules that can be released by calling - * kmod_module_unref_list(). + * Returns: NULL on failure. Otherwise it returns a list of kmod modules + * that can be released by calling kmod_module_unref_list(). */ KMOD_EXPORT struct kmod_list *kmod_module_get_dependencies(const struct kmod_module *mod) { @@ -735,7 +738,15 @@ extern long delete_module(const char *name, unsigned int flags); /** * kmod_module_remove_module: * @mod: kmod module - * @flags: flags to pass to Linux kernel when removing the module + * @flags: flags to pass to Linux kernel when removing the module, valid flags are + * KMOD_REMOVE_FORCE: force remove module regardless if it's still in + * use by a kernel subsystem or other process; + * KMOD_REMOVE_NOWAIT: return immediately. It will fail if the module + * is in using and KMOD_REMOVE_FORCE is not specified. + * If this module is in use by any kernel subsystem or process, not using + * this flag will cause the call to block indefinitely, until the module + * is not in use anymore. Always use this flag, it's deprecated not using + * it and the default behavior might change in future to always set it. * * Remove a module from Linux kernel. * @@ -767,7 +778,9 @@ extern long init_module(const void *mem, unsigned long len, const char *args); * kmod_module_insert_module: * @mod: kmod module * @flags: flags are not passed to Linux Kernel, but instead they dictate the - * behavior of this function. + * behavior of this function, valid flags are + * KMOD_INSERT_FORCE_VERMAGIC: ignore kernel version magic; + * KMOD_INSERT_FORCE_MODVERSION: ignore symbol version hashes. * @options: module's options to pass to Linux Kernel. * * Insert a module in Linux kernel. It opens the file pointed by @mod, @@ -803,6 +816,19 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod, return err; } + if (kmod_file_get_direct(file)) { + unsigned int kernel_flags = 0; + + if (flags & KMOD_INSERT_FORCE_VERMAGIC) + kernel_flags |= MODULE_INIT_IGNORE_VERMAGIC; + if (flags & KMOD_INSERT_FORCE_MODVERSION) + kernel_flags |= MODULE_INIT_IGNORE_MODVERSIONS; + + err = finit_module(kmod_file_get_fd(file), args, kernel_flags); + if (err == 0 || errno != ENOSYS) + goto init_finished; + } + size = kmod_file_get_size(file); mem = kmod_file_get_contents(file); @@ -829,6 +855,7 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod, } err = init_module(mem, size, args); +init_finished: if (err < 0) { err = -errno; INFO(mod->ctx, "Failed to insert module '%s': %m\n", path); @@ -862,7 +889,9 @@ static bool module_is_blacklisted(struct kmod_module *mod) /** * kmod_module_apply_filter * @ctx: kmod library context - * @filter_type: bitmask to filter modules on + * @filter_type: bitmask to filter modules out, valid types are + * KMOD_FILTER_BLACKLIST: filter modules in blacklist out; + * KMOD_FILTER_BUILTIN: filter builtin modules out. * @input: list of kmod_module to be filtered * @output: where to save the new list * @@ -1133,7 +1162,25 @@ static int kmod_module_get_probe_list(struct kmod_module *mod, * kmod_module_probe_insert_module: * @mod: kmod module * @flags: flags are not passed to Linux Kernel, but instead they dictate the - * behavior of this function. + * behavior of this function, valid flags are + * KMOD_PROBE_FORCE_VERMAGIC: ignore kernel version magic; + * KMOD_PROBE_FORCE_MODVERSION: ignore symbol version hashes; + * KMOD_PROBE_IGNORE_COMMAND: whether the probe should ignore install + * commands and softdeps configured in the system; + * KMOD_PROBE_IGNORE_LOADED: do not check whether the module is already + * live in kernel or not; + * KMOD_PROBE_DRY_RUN: dry run, do not insert module, just call the + * associated callback function; + * KMOD_PROBE_FAIL_ON_LOADED: if KMOD_PROBE_IGNORE_LOADED is not specified + * and the module is already live in kernel, the function will fail if this + * flag is specified; + * KMOD_PROBE_APPLY_BLACKLIST_ALL: probe will apply KMOD_FILTER_BLACKLIST + * filter to this module and its dependencies. If any of the dependencies (or + * the module) is blacklisted, the probe will fail, unless the blacklisted + * module is already live in kernel; + * KMOD_PROBE_APPLY_BLACKLIST: probe will fail if the module is blacklisted; + * KMOD_PROBE_APPLY_BLACKLIST_ALIAS_ONLY: probe will fail if the module is an + * alias and is blacklisted. * @extra_options: module's options to pass to Linux Kernel. It applies only * to @mod, not to its dependencies. * @run_install: function to run when @mod is backed by an install command. @@ -1545,7 +1592,7 @@ void kmod_module_set_remove_commands(struct kmod_module *mod, const char *cmd) * Create a new list of kmod modules with all modules currently loaded in * kernel. It uses /proc/modules to get the names of loaded modules and to * create kmod modules by calling kmod_module_new_from_name() in each of them. - * They are put are put in @list in no particular order. + * They are put in @list in no particular order. * * The initial refcount is 1, and needs to be decremented to release the * resources of the kmod_module. The returned @list must be released by @@ -1633,7 +1680,11 @@ KMOD_EXPORT const char *kmod_module_initstate_str(enum kmod_module_initstate sta * Get the initstate of this @mod, as returned by Linux Kernel, by reading * /sys filesystem. * - * Returns: < 0 on error or enum kmod_initstate if module is found in kernel. + * Returns: < 0 on error or module state if module is found in kernel, valid states are + * KMOD_MODULE_BUILTIN: module is builtin; + * KMOD_MODULE_LIVE: module is live in kernel; + * KMOD_MODULE_COMING: module is being loaded; + * KMOD_MODULE_GOING: module is being unloaded. */ KMOD_EXPORT int kmod_module_get_initstate(const struct kmod_module *mod) { @@ -1820,7 +1871,7 @@ KMOD_EXPORT struct kmod_list *kmod_module_get_holders(const struct kmod_module * struct kmod_list *list = NULL; DIR *d; - if (mod == NULL) + if (mod == NULL || mod->ctx == NULL) return NULL; snprintf(dname, sizeof(dname), "/sys/module/%s/holders", mod->name); @@ -2081,7 +2132,7 @@ static struct kmod_module_info *kmod_module_info_new(const char *key, size_t key return NULL; info->key = (char *)info + sizeof(struct kmod_module_info) - + valuelen + 1; + + valuelen + 1; memcpy(info->key, key, keylen); info->key[keylen] = '\0'; memcpy(info->value, value, valuelen); @@ -2094,6 +2145,22 @@ static void kmod_module_info_free(struct kmod_module_info *info) free(info); } +static struct kmod_list *kmod_module_info_append(struct kmod_list **list, const char *key, size_t keylen, const char *value, size_t valuelen) +{ + struct kmod_module_info *info; + struct kmod_list *n; + + info = kmod_module_info_new(key, keylen, value, valuelen); + if (info == NULL) + return NULL; + n = kmod_list_append(*list, info); + if (n != NULL) + *list = n; + else + kmod_module_info_free(info); + return n; +} + /** * kmod_module_get_info: * @mod: kmod module @@ -2104,7 +2171,9 @@ static void kmod_module_info_free(struct kmod_module_info *info) * * Get a list of entries in ELF section ".modinfo", these contain * alias, license, depends, vermagic and other keys with respective - * values. + * values. If the module is signed (CONFIG_MODULE_SIG), information + * about the module signature is included as well: signer, + * sig_key and sig_hashalgo. * * After use, free the @list by calling kmod_module_info_free_list(). * @@ -2114,7 +2183,8 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_ { struct kmod_elf *elf; char **strings; - int i, count, ret = 0; + int i, count, ret = -ENOMEM; + struct kmod_signature_info sig_info; if (mod == NULL || list == NULL) return -ENOENT; @@ -2130,7 +2200,6 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_ return count; for (i = 0; i < count; i++) { - struct kmod_module_info *info; struct kmod_list *n; const char *key, *value; size_t keylen, valuelen; @@ -2140,34 +2209,64 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_ if (value == NULL) { keylen = strlen(key); valuelen = 0; + value = key; } else { keylen = value - key; value++; valuelen = strlen(value); } - info = kmod_module_info_new(key, keylen, value, valuelen); - if (info == NULL) { - ret = -errno; - kmod_module_info_free_list(*list); - *list = NULL; + n = kmod_module_info_append(list, key, keylen, value, valuelen); + if (n == NULL) goto list_error; - } + } - n = kmod_list_append(*list, info); - if (n != NULL) - *list = n; - else { - kmod_module_info_free(info); - kmod_module_info_free_list(*list); - *list = NULL; - ret = -ENOMEM; + if (kmod_module_signature_info(mod->file, &sig_info)) { + struct kmod_list *n; + char *key_hex; + + n = kmod_module_info_append(list, "signer", strlen("signer"), + sig_info.signer, sig_info.signer_len); + if (n == NULL) goto list_error; + count++; + + /* Display the key id as 01:12:DE:AD:BE:EF:... */ + key_hex = malloc(sig_info.key_id_len * 3); + if (key_hex == NULL) + goto list_error; + for (i = 0; i < (int)sig_info.key_id_len; i++) { + sprintf(key_hex + i * 3, "%02X", + (unsigned char)sig_info.key_id[i]); + if (i < (int)sig_info.key_id_len - 1) + key_hex[i * 3 + 2] = ':'; } + n = kmod_module_info_append(list, "sig_key", strlen("sig_key"), + key_hex, sig_info.key_id_len * 3 - 1); + free(key_hex); + if (n == NULL) + goto list_error; + count++; + + n = kmod_module_info_append(list, + "sig_hashalgo", strlen("sig_hashalgo"), + sig_info.hash_algo, strlen(sig_info.hash_algo)); + if (n == NULL) + goto list_error; + count++; + + /* + * Omit sig_info.id_type and sig_info.algo for now, as these + * are currently constant. + */ } ret = count; list_error: + if (ret < 0) { + kmod_module_info_free_list(*list); + *list = NULL; + } free(strings); return ret; } @@ -2314,7 +2413,7 @@ list_error: } /** - * kmod_module_versions_get_symbol: + * kmod_module_version_get_symbol: * @entry: a list entry representing a kmod module versions * * Get the symbol of a kmod module versions. diff --git a/libkmod/libkmod-signature.c b/libkmod/libkmod-signature.c new file mode 100644 index 0000000..6237ab7 --- /dev/null +++ b/libkmod/libkmod-signature.c @@ -0,0 +1,141 @@ +/* + * libkmod - module signature display + * + * Copyright (C) 2013 Michal Marek, SUSE + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <endian.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <stdio.h> + +#include "libkmod-internal.h" + +/* These types and tables were copied from the 3.7 kernel sources. + * As this is just description of the signature format, it should not be + * considered derived work (so libkmod can use the LGPL license). + */ +enum pkey_algo { + PKEY_ALGO_DSA, + PKEY_ALGO_RSA, + PKEY_ALGO__LAST +}; + +static const char *const pkey_algo[PKEY_ALGO__LAST] = { + [PKEY_ALGO_DSA] = "DSA", + [PKEY_ALGO_RSA] = "RSA", +}; + +enum pkey_hash_algo { + PKEY_HASH_MD4, + PKEY_HASH_MD5, + PKEY_HASH_SHA1, + PKEY_HASH_RIPE_MD_160, + PKEY_HASH_SHA256, + PKEY_HASH_SHA384, + PKEY_HASH_SHA512, + PKEY_HASH_SHA224, + PKEY_HASH__LAST +}; + +const char *const pkey_hash_algo[PKEY_HASH__LAST] = { + [PKEY_HASH_MD4] = "md4", + [PKEY_HASH_MD5] = "md5", + [PKEY_HASH_SHA1] = "sha1", + [PKEY_HASH_RIPE_MD_160] = "rmd160", + [PKEY_HASH_SHA256] = "sha256", + [PKEY_HASH_SHA384] = "sha384", + [PKEY_HASH_SHA512] = "sha512", + [PKEY_HASH_SHA224] = "sha224", +}; + +enum pkey_id_type { + PKEY_ID_PGP, /* OpenPGP generated key ID */ + PKEY_ID_X509, /* X.509 arbitrary subjectKeyIdentifier */ + PKEY_ID_TYPE__LAST +}; + +const char *const pkey_id_type[PKEY_ID_TYPE__LAST] = { + [PKEY_ID_PGP] = "PGP", + [PKEY_ID_X509] = "X509", +}; + +/* + * Module signature information block. + * + * The constituents of the signature section are, in order: + * + * - Signer's name + * - Key identifier + * - Signature data + * - Information block + */ +struct module_signature { + uint8_t algo; /* Public-key crypto algorithm [enum pkey_algo] */ + uint8_t hash; /* Digest algorithm [enum pkey_hash_algo] */ + uint8_t id_type; /* Key identifier type [enum pkey_id_type] */ + uint8_t signer_len; /* Length of signer's name */ + uint8_t key_id_len; /* Length of key identifier */ + uint8_t __pad[3]; + uint32_t sig_len; /* Length of signature data (big endian) */ +}; + +#define SIG_MAGIC "~Module signature appended~\n" + +bool kmod_module_signature_info(const struct kmod_file *file, struct kmod_signature_info *sig_info) +{ + const char *mem; + off_t size; + const struct module_signature *modsig; + size_t sig_len; + + + size = kmod_file_get_size(file); + mem = kmod_file_get_contents(file); + if (size < (off_t)strlen(SIG_MAGIC)) + return false; + size -= strlen(SIG_MAGIC); + if (memcmp(SIG_MAGIC, mem + size, strlen(SIG_MAGIC)) != 0) + return false; + + if (size < (off_t)sizeof(struct module_signature)) + return false; + size -= sizeof(struct module_signature); + modsig = (struct module_signature *)(mem + size); + if (modsig->algo >= PKEY_ALGO__LAST || + modsig->hash >= PKEY_HASH__LAST || + modsig->id_type >= PKEY_ID_TYPE__LAST) + return false; + sig_len = be32toh(modsig->sig_len); + if (size < (off_t)(modsig->signer_len + modsig->key_id_len + sig_len)) + return false; + + size -= modsig->key_id_len + sig_len; + sig_info->key_id = mem + size; + sig_info->key_id_len = modsig->key_id_len; + + size -= modsig->signer_len; + sig_info->signer = mem + size; + sig_info->signer_len = modsig->signer_len; + + sig_info->algo = pkey_algo[modsig->algo]; + sig_info->hash_algo = pkey_hash_algo[modsig->hash]; + sig_info->id_type = pkey_id_type[modsig->id_type]; + + return true; +} diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c index 71bf51d..d686250 100644 --- a/libkmod/libkmod-util.c +++ b/libkmod/libkmod-util.c @@ -1,7 +1,9 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems + * Copyright (C) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com> + * Copyright (C) 2013 Intel Corporation. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -29,7 +31,7 @@ #include <ctype.h> #include "libkmod.h" -#include "libkmod-private.h" +#include "libkmod-internal.h" /* * Read one logical line from a configuration file. @@ -308,6 +310,77 @@ char *path_make_absolute_cwd(const char *p) return r; } +static inline int is_dir(const char *path) +{ + struct stat st; + + if (stat(path, &st) >= 0) + return S_ISDIR(st.st_mode); + + return -errno; +} + +int mkdir_p(const char *path, int len, mode_t mode) +{ + char *start, *end; + + start = strndupa(path, len); + end = start + len; + + /* + * scan backwards, replacing '/' with '\0' while the component doesn't + * exist + */ + for (;;) { + int r = is_dir(start); + if (r > 0) { + end += strlen(end); + + if (end == start + len) + return 0; + + /* end != start, since it would be caught on the first + * iteration */ + *end = '/'; + break; + } else if (r == 0) + return -ENOTDIR; + + if (end == start) + break; + + *end = '\0'; + + /* Find the next component, backwards, discarding extra '/'*/ + while (end > start && *end != '/') + end--; + + while (end > start && *(end - 1) == '/') + end--; + } + + for (; end < start + len;) { + if (mkdir(start, mode) < 0 && errno != EEXIST) + return -errno; + + end += strlen(end); + *end = '/'; + } + + return 0; +} + +int mkdir_parents(const char *path, mode_t mode) +{ + char *end = strrchr(path, '/'); + + /* no parent directories */ + if (end == NULL) + return 0; + + return mkdir_p(path, end - path, mode); +} + const struct kmod_ext kmod_exts[] = { {".ko", sizeof(".ko") - 1}, #ifdef ENABLE_ZLIB diff --git a/libkmod/libkmod-util.h b/libkmod/libkmod-util.h index 258184d..f7f3e90 100644 --- a/libkmod/libkmod-util.h +++ b/libkmod/libkmod-util.h @@ -5,6 +5,7 @@ #include <stdbool.h> #include <stdio.h> #include <sys/types.h> +#include <sys/stat.h> char *getline_wrapped(FILE *fp, unsigned int *linenum) __attribute__((nonnull(1))); @@ -19,6 +20,8 @@ int read_str_ulong(int fd, unsigned long *value, int base) _must_check_ __attrib char *strchr_replace(char *s, int c, char r); bool path_is_absolute(const char *p) _must_check_ __attribute__((nonnull(1))); char *path_make_absolute_cwd(const char *p) _must_check_ __attribute__((nonnull(1))); +int mkdir_p(const char *path, int len, mode_t mode); +int mkdir_parents(const char *path, mode_t mode); int alias_normalize(const char *alias, char buf[PATH_MAX], size_t *len) _must_check_ __attribute__((nonnull(1,2))); char *modname_normalize(const char *modname, char buf[PATH_MAX], size_t *len) __attribute__((nonnull(1, 2))); char *path_to_modname(const char *path, char buf[PATH_MAX], size_t *len) __attribute__((nonnull(2))); diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c index f898438..ef83e31 100644 --- a/libkmod/libkmod.c +++ b/libkmod/libkmod.c @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -33,7 +33,7 @@ #include <sys/stat.h> #include "libkmod.h" -#include "libkmod-private.h" +#include "libkmod-internal.h" #include "libkmod-index.h" #define KMOD_HASH_SIZE (256) @@ -99,6 +99,7 @@ void kmod_log(const struct kmod_ctx *ctx, va_end(args); } +_printf_format_(6, 0) static void log_filep(void *data, int priority, const char *file, int line, const char *fn, const char *format, va_list args) @@ -218,8 +219,8 @@ static char *get_kernel_release(const char *dirname) * kmod_new: * @dirname: what to consider as linux module's directory, if NULL * defaults to /lib/modules/`uname -r`. If it's relative, - * it's treated as relative to current the current working - * directory. Otherwise, give an absolute dirname. + * it's treated as relative to the current working directory. + * Otherwise, give an absolute dirname. * @config_paths: ordered array of paths (directories or files) where * to load from user-defined configuration parameters such as * alias, blacklists, commands (install, remove). If @@ -254,7 +255,7 @@ KMOD_EXPORT struct kmod_ctx *kmod_new(const char *dirname, ctx->dirname = get_kernel_release(dirname); /* environment overwrites config */ - env = getenv("KMOD_LOG"); + env = secure_getenv("KMOD_LOG"); if (env != NULL) kmod_set_log_priority(ctx, log_priority(env)); @@ -306,6 +307,8 @@ KMOD_EXPORT struct kmod_ctx *kmod_ref(struct kmod_ctx *ctx) * * Drop a reference of the kmod library context. If the refcount * reaches zero, the resources of the context will be released. + * + * Returns: the passed kmod library context or NULL if it's freed */ KMOD_EXPORT struct kmod_ctx *kmod_unref(struct kmod_ctx *ctx) { @@ -853,7 +856,11 @@ KMOD_EXPORT void kmod_unload_resources(struct kmod_ctx *ctx) /** * kmod_dump_index: * @ctx: kmod library context - * @type: index to dump + * @type: index to dump, valid indexes are + * KMOD_INDEX_MODULES_DEP: index of module dependencies; + * KMOD_INDEX_MODULES_ALIAS: index of module aliases; + * KMOD_INDEX_MODULES_SYMBOL: index of symbol aliases; + * KMOD_INDEX_MODULES_BUILTIN: index of builtin module. * @fd: file descriptor to dump index to * * Dump index to file descriptor. Note that this function doesn't use stdio.h diff --git a/libkmod/libkmod.h b/libkmod/libkmod.h index d03ab19..3397f87 100644 --- a/libkmod/libkmod.h +++ b/libkmod/libkmod.h @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/libkmod/macro.h b/libkmod/macro.h index 689c57a..c6ba855 100644 --- a/libkmod/macro.h +++ b/libkmod/macro.h @@ -1,7 +1,7 @@ /* * libkmod - interface to kernel module operations * - * Copyright (C) 2011-2012 ProFUSION embedded systems + * Copyright (C) 2011-2013 ProFUSION embedded systems * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,25 +21,16 @@ #include <stddef.h> -#define BUILD_ASSERT(cond) \ - do { (void) sizeof(char [1 - 2*!(cond)]); } while(0) - -#define EXPR_BUILD_ASSERT(cond) \ - (sizeof(char [1 - 2*!(cond)]) - 1) +#define assert_cc(expr) \ + _Static_assert((expr), #expr) #if HAVE_TYPEOF -#define check_type(expr, type) \ - ((typeof(expr) *)0 != (type *)0) - #define check_types_match(expr1, expr2) \ ((typeof(expr1) *)0 != (typeof(expr2) *)0) #else /* Without typeof, we can only test the sizes. */ -#define check_type(expr, type) \ - EXPR_BUILD_ASSERT(sizeof(expr) == sizeof(type)) - #define check_types_match(expr1, expr2) \ - EXPR_BUILD_ASSERT(sizeof(expr1) == sizeof(expr2)) + assert_cc(sizeof(expr1) == sizeof(expr2)) #endif /* HAVE_TYPEOF */ #define container_of(member_ptr, containing_type, member) \ @@ -47,26 +38,13 @@ ((char *)(member_ptr) - offsetof(containing_type, member)) \ - check_types_match(*(member_ptr), ((containing_type *)0)->member)) -/* - * BUILD_ASSERT_OR_ZERO - assert a build-time dependency, as an expression. - * @cond: the compile-time condition which must be true. - * - * Your compile will fail if the condition isn't true, or can't be evaluated - * by the compiler. This can be used in an expression: its value is "0". - * - * Example: - * #define foo_to_char(foo) \ - * ((char *)(foo) \ - * + BUILD_ASSERT_OR_ZERO(offsetof(struct foo, string) == 0)) - */ -#define BUILD_ASSERT_OR_ZERO(cond) \ - (sizeof(char [1 - 2*!(cond)]) - 1) /* Two gcc extensions. * &a[0] degrades to a pointer: a different type from an array */ -#define _array_size_chk(arr) \ - BUILD_ASSERT_OR_ZERO(!__builtin_types_compatible_p(typeof(arr), \ - typeof(&(arr)[0]))) +#define _array_size_chk(arr) ({ \ + assert_cc(!__builtin_types_compatible_p(typeof(arr), typeof(&(arr)[0]))); \ + 0; \ + }) #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + _array_size_chk(arr)) diff --git a/libkmod/missing.h b/libkmod/missing.h new file mode 100644 index 0000000..b45bbe2 --- /dev/null +++ b/libkmod/missing.h @@ -0,0 +1,34 @@ +#pragma once + +#include <unistd.h> +#include <sys/syscall.h> + +#ifdef HAVE_LINUX_MODULE_H +#include <linux/module.h> +#endif + +#ifndef MODULE_INIT_IGNORE_MODVERSIONS +# define MODULE_INIT_IGNORE_MODVERSIONS 1 +#endif + +#ifndef MODULE_INIT_IGNORE_VERMAGIC +# define MODULE_INIT_IGNORE_VERMAGIC 2 +#endif + +#ifndef __NR_finit_module +# define __NR_finit_module -1 +#endif + +#ifndef HAVE_FINIT_MODULE +#include <errno.h> + +static inline int finit_module(int fd, const char *uargs, int flags) +{ + if (__NR_finit_module == -1) { + errno = ENOSYS; + return -1; + } + + return syscall(__NR_finit_module, fd, uargs, flags); +} +#endif |