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