[lttng-dev] [RFC PATCH lttng-tools 4/5] Add comments to kmod functions
Michael Jeanson
mjeanson at efficios.com
Fri Feb 12 16:31:47 EST 2016
Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
---
src/bin/lttng-sessiond/modprobe.c | 52 +++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/src/bin/lttng-sessiond/modprobe.c b/src/bin/lttng-sessiond/modprobe.c
index 90fec71..3e41f5c 100644
--- a/src/bin/lttng-sessiond/modprobe.c
+++ b/src/bin/lttng-sessiond/modprobe.c
@@ -16,6 +16,13 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+/**
+ * @file modprobe.c
+ *
+ * @brief modprobe related functions.
+ *
+ */
+
#define _LGPL_SOURCE
#include <assert.h>
#include <stdio.h>
@@ -93,6 +100,9 @@ static int probes_capacity;
#if HAVE_KMOD
#include <libkmod.h>
+/**
+ * @brief Logging function for libkmod integration.
+ */
static void log_kmod(void *data, int priority, const char *file, int line,
const char *fn, const char *format, va_list args)
{
@@ -106,6 +116,15 @@ static void log_kmod(void *data, int priority, const char *file, int line,
free(str);
}
+/**
+ * @brief Setup the libkmod context.
+ *
+ * Create the context, add a custom logging function and preload the
+ * ressources for faster operation.
+ *
+ * @returns \c 0 on success
+ * \c < 0 on error
+ */
static int setup_kmod_ctx(struct kmod_ctx **ctx)
{
int ret = 0;
@@ -128,6 +147,19 @@ error:
return ret;
}
+/**
+ * @brief Loads the kernel modules in \p modules
+ *
+ * @param modules List of modules to load
+ * @param entries Number of modules in the list
+ * @param required Are the modules required or optionnal
+ *
+ * If the modules are required, we will return with error after the
+ * first failed module load, otherwise we continue loading.
+ *
+ * @returns \c 0 on success
+ * \c < 0 on error
+ */
static int modprobe_lttng(struct kern_modules_param *modules,
int entries, int required)
{
@@ -174,6 +206,18 @@ error:
return ret;
}
+/**
+ * @brief Recursively unload modules.
+ *
+ * This function implements the same modules unloading behavior as
+ * 'modprobe -r' or rmmod, it will recursevily go trought the \p module
+ * dependencies and unload modules with a refcount of 0.
+ *
+ * @param mod The module to unload
+ *
+ * @returns \c 0 on success
+ * \c < 0 on error
+ */
static int rmmod_recurse(struct kmod_module *mod) {
int ret = 0;
struct kmod_list *deps, *itr;
@@ -202,6 +246,14 @@ static int rmmod_recurse(struct kmod_module *mod) {
return ret;
}
+/**
+ * @brief Unloads the kernel modules in \p modules
+ *
+ * @param modules List of modules to unload
+ * @param entries Number of modules in the list
+ * @param required Are the modules required or optionnal
+ *
+ */
static void modprobe_remove_lttng(const struct kern_modules_param *modules,
int entries, int required)
{
--
2.7.0
More information about the lttng-dev
mailing list