mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-13 20:12:26 +00:00
32 lines
706 B
C
32 lines
706 B
C
/* https://cirosantilli.com/linux-kernel-module-cheat#floating-point-in-kernel-modules */
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
#include <asm/fpu/api.h> /* kernel_fpu_begin, kernel_fpu_end */
|
|
|
|
/* float params are not supported, so we just go with int. */
|
|
static int myfloat = 1;
|
|
static int enable_fpu = 1;
|
|
module_param(myfloat, int, S_IRUSR | S_IWUSR);
|
|
module_param(enable_fpu, int, S_IRUSR | S_IWUSR);
|
|
|
|
static int myinit(void)
|
|
{
|
|
if (enable_fpu) {
|
|
kernel_fpu_begin();
|
|
}
|
|
if ((float)myfloat + 1.5f == 2.5f) {
|
|
pr_info("magic value\n");
|
|
}
|
|
if (enable_fpu) {
|
|
kernel_fpu_end();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static void myexit(void) {}
|
|
|
|
module_init(myinit)
|
|
module_exit(myexit)
|
|
MODULE_LICENSE("GPL");
|