15dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#include <fcntl.h>
25dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#include <stdint.h>
35dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#include <stdio.h>
45dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#include <string.h>
55dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#include <termios.h>
65dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#include <unistd.h>
75dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#include <sys/ioctl.h>
85dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#include <mtd/ubi-user.h>
95dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
105dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes#define zero(x) memset(&x, 0, sizeof(x))
115dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
125dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughesint main() {
135dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	int fd = open("/dev/null", 0);
145dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	struct ubi_mkvol_req mkvol = {
155dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.vol_id = 3,
165dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.alignment = 124,
175dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.bytes = 1125899906842624ULL,
185dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.vol_type = 3,
195dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.name_len = 7,
205dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.name = "foobar",
215dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	};
225dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	struct ubi_rsvol_req rsvol = {
235dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.bytes = 1125899906842624ULL,
245dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.vol_id = -3,
255dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	};
265dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	struct ubi_rnvol_req rnvol = {
275dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.count = 300,
285dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	};
295dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	struct ubi_attach_req attach;
305dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	struct ubi_map_req map;
315dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	struct ubi_set_vol_prop_req prop = {
325dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.property = 1,
335dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes		.value = 1125899906842624ULL,
345dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	};
355dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	uint64_t bytes = ((uint64_t)1 << 50) | 0x123;
365dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
375dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCMKVOL, &mkvol);
385dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCRSVOL, &rsvol);
395dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCRNVOL, &rnvol);
405dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCATT, &attach);
415dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCVOLUP, &bytes);
425dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCEBMAP, &map);
435dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCSETVOLPROP, &prop);
445dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	zero(prop);
455dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCSETVOLPROP, &prop);
465dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCRMVOL, 1);
475dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCDET, 2);
485dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCEBER, 3);
495dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCEBCH, 4);
505dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCEBUNMAP, 5);
515dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	ioctl(fd, UBI_IOCEBISMAP, 6);
525dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes
535dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes	return 0;
545dec78d0c2663930cd1bbcecbbcee47f68bc52f3Elliott Hughes}
55