int __init vsyscall_init(void) { printk("VSYSCALL: consistency checks..."); if ((unsigned long) &vgettimeofday != VSYSCALL_ADDR(__NR_vgettimeofday)) { printk("vgettimeofday link addr broken\n"); printk("VSYSCALL: vsyscall_init failed!\n"); return -EFAULT; } if ((unsigned long) &vtime != VSYSCALL_ADDR(__NR_vtime)) { printk("vtime link addr broken\n"); printk("VSYSCALL: vsyscall_init failed!\n"); return -EFAULT; } if (VSYSCALL_ADDR(0) != __fix_to_virt(FIX_VSYSCALL_GTOD_FIRST_PAGE)) { printk("fixmap first vsyscall 0x%lx should be 0x%x\n", __fix_to_virt(FIX_VSYSCALL_GTOD_FIRST_PAGE), VSYSCALL_ADDR(0)); printk("VSYSCALL: vsyscall_init failed!\n"); return -EFAULT; } printk("passed...mapping..."); map_vsyscall(); printk("done.\n"); vsyscall_mapped = 1; printk("VSYSCALL: fixmap virt addr: 0x%lx\n", __fix_to_virt(FIX_VSYSCALL_GTOD_FIRST_PAGE)); return 0; }
static int __init vsyscall_init(void) { if ((unsigned long) &vgettimeofday != VSYSCALL_ADDR(__NR_vgettimeofday)) panic("vgettimeofday link addr broken"); if ((unsigned long) &vtime != VSYSCALL_ADDR(__NR_vtime)) panic("vtime link addr broken"); if (VSYSCALL_ADDR(0) != __fix_to_virt(VSYSCALL_FIRST_PAGE)) panic("fixmap first vsyscall %lx should be %lx", __fix_to_virt(VSYSCALL_FIRST_PAGE), VSYSCALL_ADDR(0)); map_vsyscall(); return 0; }