static int nvram_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
    switch(cmd) {
#ifdef CONFIG_PPC_PMAC
    case OBSOLETE_PMAC_NVRAM_GET_OFFSET:
        printk(KERN_WARNING "nvram: Using obsolete PMAC_NVRAM_GET_OFFSET ioctl\n");
    case IOC_NVRAM_GET_OFFSET: {
        int part, offset;

        if (!machine_is(powermac))
            return -EINVAL;
        if (copy_from_user(&part, (void __user*)arg, sizeof(part)) != 0)
            return -EFAULT;
        if (part < pmac_nvram_OF || part > pmac_nvram_NR)
            return -EINVAL;
        offset = pmac_get_partition(part);
        if (copy_to_user((void __user*)arg, &offset, sizeof(offset)) != 0)
            return -EFAULT;
        break;
    }
#endif /* CONFIG_PPC_PMAC */
    case IOC_NVRAM_SYNC:
        nvram_sync();
        break;
    default:
        return -EINVAL;
    }

    return 0;
}
Пример #2
0
void machine_power_off(void)
{
#ifdef CONFIG_NVRAM
	nvram_sync();
#endif
	ppc_md.power_off();
}
Пример #3
0
void machine_halt(void)
{
#ifdef CONFIG_NVRAM
	nvram_sync();
#endif
	ppc_md.halt();
}
Пример #4
0
void machine_restart(char *cmd)
{
#ifdef CONFIG_NVRAM
	nvram_sync();
#endif
	ppc_md.restart(cmd);
}