feat: добавил логирование
This commit is contained in:
@ -22,17 +22,22 @@ static int __init fuck_system(void)
|
||||
struct desc_ptr newidtreg;
|
||||
struct desc_ptr oldidtreg;
|
||||
gate_desc *oldidt, *newidt;
|
||||
|
||||
pr_info("nessesary variables created");
|
||||
// Выделяем память под 256 прерываний
|
||||
unsigned long new_page = __get_free_page(GFP_KERNEL);
|
||||
if (!new_page)
|
||||
{
|
||||
return -ENOMEM;
|
||||
}
|
||||
pr_info("new page allocated");
|
||||
store_idt(&oldidtreg);
|
||||
pr_info("IDT register stored");
|
||||
newidtreg.address = new_page;
|
||||
newidtreg.size = oldidtreg.size;
|
||||
newidt = (gate_desc *)newidtreg.address;
|
||||
memcpy(newidt, oldidt, newidtreg.size);
|
||||
pr_info("IDT register saved in backup");
|
||||
|
||||
pack_gate(
|
||||
(newidt + ZERODIV_NR),
|
||||
@ -42,11 +47,15 @@ static int __init fuck_system(void)
|
||||
0,
|
||||
__KERNEL_CS
|
||||
);
|
||||
pr_info("packed new gate");
|
||||
|
||||
load_idt(&newidtreg);
|
||||
pr_info("loaded new interrupts");
|
||||
int x = 1 / 0; // триггерим прерывание деления на ноль
|
||||
pr_info("return from interrupt");
|
||||
load_idt(&oldidtreg);
|
||||
free_page(new_page);
|
||||
pr_info("Unloaded everything");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user