#include #include #include char nombreModulo[] = "dirpag"; int my_get_info(char *buf, char **start, off_t off, int count) { unsigned long cr3, *dirpag; int len = 0; // cr3 = read_cr3(); asm("mov %%cr3, %%eax \n mov %%eax, %0 " : "=m" (cr3) :: "ax"); dirpag = phys_to_virt(cr3); len += sprintf(buf+len, "CR3 = %08lX", cr3); //len += sprintf(buf+len, "\n"); //len += sprintf(buf+len, "dirpag = 0X%lX", dirpag); len += sprintf(buf+len, "\n"); return len; } int init_module(void) { printk("\nEntrando en modulo \'%s\'\n", nombreModulo); create_proc_info_entry(nombreModulo, 0, NULL, my_get_info); return 0; } void cleanup_module(void) { remove_proc_entry(nombreModulo, NULL); printk("Saliendo del modulo \'%s\'\n", nombreModulo); } MODULE_LICENSE("GPL");