root/samples/livepatch/livepatch-callbacks-busymod.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. busymod_work_func
  2. livepatch_callbacks_mod_init
  3. livepatch_callbacks_mod_exit

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  * Copyright (C) 2017 Joe Lawrence <joe.lawrence@redhat.com>
   4  */
   5 
   6 /*
   7  * livepatch-callbacks-busymod.c - (un)patching callbacks demo support module
   8  *
   9  *
  10  * Purpose
  11  * -------
  12  *
  13  * Simple module to demonstrate livepatch (un)patching callbacks.
  14  *
  15  *
  16  * Usage
  17  * -----
  18  *
  19  * This module is not intended to be standalone.  See the "Usage"
  20  * section of livepatch-callbacks-mod.c.
  21  */
  22 
  23 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
  24 
  25 #include <linux/module.h>
  26 #include <linux/kernel.h>
  27 #include <linux/workqueue.h>
  28 #include <linux/delay.h>
  29 
  30 static int sleep_secs;
  31 module_param(sleep_secs, int, 0644);
  32 MODULE_PARM_DESC(sleep_secs, "sleep_secs (default=0)");
  33 
  34 static void busymod_work_func(struct work_struct *work);
  35 static DECLARE_DELAYED_WORK(work, busymod_work_func);
  36 
  37 static void busymod_work_func(struct work_struct *work)
  38 {
  39         pr_info("%s, sleeping %d seconds ...\n", __func__, sleep_secs);
  40         msleep(sleep_secs * 1000);
  41         pr_info("%s exit\n", __func__);
  42 }
  43 
  44 static int livepatch_callbacks_mod_init(void)
  45 {
  46         pr_info("%s\n", __func__);
  47         schedule_delayed_work(&work,
  48                 msecs_to_jiffies(1000 * 0));
  49         return 0;
  50 }
  51 
  52 static void livepatch_callbacks_mod_exit(void)
  53 {
  54         cancel_delayed_work_sync(&work);
  55         pr_info("%s\n", __func__);
  56 }
  57 
  58 module_init(livepatch_callbacks_mod_init);
  59 module_exit(livepatch_callbacks_mod_exit);
  60 MODULE_LICENSE("GPL");

/* [<][>][^][v][top][bottom][index][help] */