]> granicus.if.org Git - strace/blob - test/ubi.c
tests: check decoding of prctl PR_GET_TID_ADDRESS operation
[strace] / test / ubi.c
1 #include <fcntl.h>
2 #include <stdint.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include <termios.h>
6 #include <unistd.h>
7 #include <sys/ioctl.h>
8 #include <mtd/ubi-user.h>
9
10 #define zero(x) memset(&x, 0, sizeof(x))
11
12 int main() {
13         int fd = open("/dev/null", 0);
14         struct ubi_mkvol_req mkvol = {
15                 .vol_id = 3,
16                 .alignment = 124,
17                 .bytes = 1125899906842624ULL,
18                 .vol_type = 3,
19                 .name_len = 7,
20                 .name = "foobar",
21         };
22         struct ubi_rsvol_req rsvol = {
23                 .bytes = 1125899906842624ULL,
24                 .vol_id = -3,
25         };
26         struct ubi_rnvol_req rnvol = {
27                 .count = 300,
28         };
29         struct ubi_attach_req attach;
30         struct ubi_map_req map;
31         struct ubi_set_vol_prop_req prop = {
32                 .property = 1,
33                 .value = 1125899906842624ULL,
34         };
35         uint64_t bytes = ((uint64_t)1 << 50) | 0x123;
36
37         ioctl(fd, UBI_IOCMKVOL, &mkvol);
38         ioctl(fd, UBI_IOCRSVOL, &rsvol);
39         ioctl(fd, UBI_IOCRNVOL, &rnvol);
40         ioctl(fd, UBI_IOCATT, &attach);
41         ioctl(fd, UBI_IOCVOLUP, &bytes);
42         ioctl(fd, UBI_IOCEBMAP, &map);
43         ioctl(fd, UBI_IOCSETVOLPROP, &prop);
44         zero(prop);
45         ioctl(fd, UBI_IOCSETVOLPROP, &prop);
46         ioctl(fd, UBI_IOCRMVOL, 1);
47         ioctl(fd, UBI_IOCDET, 2);
48         ioctl(fd, UBI_IOCEBER, 3);
49         ioctl(fd, UBI_IOCEBCH, 4);
50         ioctl(fd, UBI_IOCEBUNMAP, 5);
51         ioctl(fd, UBI_IOCEBISMAP, 6);
52
53         return 0;
54 }