/* Set new wakeup time. */
				write_alarm_file(since_epoch + wake_delay);
			}
		}
	}

	__toi_power_down(toi_poweroff_method);

	toi_check_resleep();
}
EXPORT_SYMBOL_GPL(toi_power_down);

static struct toi_sysfs_data sysfs_params[] = {
#if defined(CONFIG_ACPI)
	SYSFS_STRING("lid_file", SYSFS_RW, lid_state_file, 256, 0, NULL),
	SYSFS_INT("wake_delay", SYSFS_RW, &wake_delay, 0, INT_MAX, 0, NULL),
	SYSFS_STRING("wake_alarm_dir", SYSFS_RW, wake_alarm_dir, 256, 0, NULL),
	SYSFS_INT("post_wake_state", SYSFS_RW, &post_wake_state, -1, 5, 0,
			NULL),
#endif
	SYSFS_UL("powerdown_method", SYSFS_RW, &toi_poweroff_method, 0, 5, 0),
	SYSFS_INT("did_suspend_to_both", SYSFS_READONLY, &did_suspend_to_both,
		0, 0, 0, NULL)
};

static struct toi_module_ops powerdown_ops = {
	.type				= MISC_HIDDEN_MODULE,
	.name				= "poweroff",
	.initialise			= powerdown_init,
	.cleanup			= powerdown_cleanup,
	if (storage_manager_action)
		toi_prepare_usm();
	else
		toi_cleanup_usm();

	storage_manager_last_action = storage_manager_action;
}

/*
 * User interface specific /sys/power/tuxonice entries.
 */

static struct toi_sysfs_data sysfs_params[] = {
	SYSFS_NONE("simulate_atomic_copy", storage_manager_simulate),
	SYSFS_INT("enabled", SYSFS_RW, &usm_ops.enabled, 0, 1, 0, NULL),
	SYSFS_STRING("program", SYSFS_RW, usm_helper_data.program, 254, 0,
		     NULL),
	SYSFS_INT("activate_storage", SYSFS_RW, &storage_manager_action, 0, 1,
		  0, storage_manager_activate)
};

static struct toi_module_ops usm_ops = {
	.type = MISC_MODULE,
	.name = "usm",
	.directory = "storage_manager",
	.module = THIS_MODULE,
	.storage_needed = usm_storage_needed,
	.save_config_info = usm_save_config_info,
	.load_config_info = usm_load_config_info,
	.memory_needed = usm_memory_needed,

	.sysfs_data = sysfs_params,