Files
solutions/06-subroutines-interruptions/fuck-system.c

33 lines
704 B
C

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <asm/desc.h>
extern void store_idt(struct desc_ptr *storage);
static int __init fuck_system(void)
{
pr_info("start to fuck system");
struct desc_ptr newidtreg;
struct desc_ptr oldidtreg;
gate_desc *oldidt, *newidt;
store_idt(&oldidtreg);
newidtreg.address = oldidtreg.address;
newidtreg.size = oldidtreg.size;
newidt = (gate_desc *)newidtreg.adress;
memcpy(newidt, oldidt, newidtreg.size);
pr_info("idt register stored");
return 0;
}
static void __exit unfuck_system(void)
{
pr_info("start to unfuck system");
}
module_init(fuck_system);
module_exit(unfuck_system);
MODULE_LICENSE("GPL");