Esempio n. 1
0
SNAPSHOT_LOAD_MEMBER(lviv_state, lviv)
{
	std::vector<uint8_t> snapshot_data(LVIV_SNAPSHOT_SIZE);

	image.fread(&snapshot_data[0], LVIV_SNAPSHOT_SIZE);

	if (verify_snapshot(&snapshot_data[0], snapshot_size) != image_verify_result::PASS)
	{
		return image_init_result::FAIL;
	}

	setup_snapshot(&snapshot_data[0]);

	dump_registers();

	logerror("Snapshot file loaded\n");
	return image_init_result::PASS;
}
Esempio n. 2
0
static int handle_setup_snap(int argc, char **argv){
	int ret, c;
	unsigned int minor;
	unsigned long cache_size = 0, fallocated_space = 0;
	char *bdev, *cow;

	//get cache size and fallocated space params, if given
	while((c = getopt(argc, argv, "c:f:")) != -1){
		switch(c){
		case 'c':
			ret = parse_ul(optarg, &cache_size);
			if(ret) goto handle_setup_snap_error;
			break;
		case 'f':
			ret = parse_ul(optarg, &fallocated_space);
			if(ret) goto handle_setup_snap_error;
			break;
		default:
			errno = EINVAL;
			goto handle_setup_snap_error;
		}
	}

	if(argc - optind != 3){
		errno = EINVAL;
		goto handle_setup_snap_error;
	}

	bdev = argv[optind];
	cow = argv[optind + 1];

	ret = parse_ui(argv[optind + 2], &minor);
	if(ret) goto handle_setup_snap_error;

	return setup_snapshot(minor, bdev, cow, fallocated_space, cache_size);

handle_setup_snap_error:
	perror("error interpreting setup snapshot parameters");
	print_help(-1);
	return 0;
}