Beispiel #1
0
int main(int argc, char *argv[]) {
	int opt;
	const char *blockname = NULL;
	const char *partname  = NULL;
	int blockoffset = -1;
	int blocklen = -1;
	node_t *bdevnode = NULL;
	node_t *root;

	getopt_init();

	while (-1 != (opt = getopt(argc, argv, "b:n:o:l:"))) {
		switch(opt) {
		case 'b':
			blockname = optarg;
			break;
		case 'n':
			partname = optarg;
			break;
		case 'o':
			blockoffset = atoi(optarg);
			break;
		case 'l':
			blocklen = atoi(optarg);
			break;
		default:
			break;
		}
	}

	if (!blockname || !partname || blockoffset < 0 || blocklen < 0) {
		return -1;
	}

	root = vfs_get_root();
	assert(root);
	if (NULL == (bdevnode = vfs_subtree_lookup(root, blockname))) {
		printf("blockdev not found\n");
		return -1;
	}

	part.bdev = bdevnode->nas->fi->privdata;
	part.start = blockoffset;
	part.len = blocklen;

	partbdev = block_dev_create("/dev/hda0", bdev_driver_part, &part);
	partbdev->size = BSIZE * blocklen;

	return 0;

}
Beispiel #2
0
int flash_emu_dev_init (void *arg) {
	struct node *bdev_node;
	char **argv;

	argv = (char **) arg;

	if(NULL == arg) {
		return 0;
	}

	if(NULL == (bdev_node = vfs_subtree_lookup(NULL, argv[1]))) {
		return -ENOENT;
	}

	return flash_emu_dev_create(bdev_node, argv[2]);
}