#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/sched/signal.h>

static inline void print_processus_info(void);

static int __init basic_module_init(void)
{
	pr_info("Bonjour! Le module est chargé.\n");

	print_processus_info();
	return 0;
}

static void __exit basic_module_exit(void)
{
	pr_info("Au revoir! Le module est déchargé.\n");
}

static inline void print_processus_info(void)
{
	struct task_struct *task;

	for_each_process(task) {
		pr_info("PID: %d, COMM: %s, ON CPU: %d\n", task->pid,
			task->comm, task->on_cpu);
	}
}

module_init(basic_module_init);
module_exit(basic_module_exit);

MODULE_LICENSE("MIT License");
MODULE_AUTHOR("Florian RICHER <florian.richer@protonmail.com>");
MODULE_DESCRIPTION("Un module noyau qui affiche les processus en cours");
MODULE_VERSION("1.0");