12 int fail(const char *msg)
18 int main(int argc, char **argv)
23 long segsize, oldsize;
26 printf("Usage: ./segtest <segsize in kB>\n");
30 segsize = atol(argv[1]) * 1024;
34 fd = open("/dev/segdev", O_RDWR);
36 return fail("/dev/segdev");
38 oldsize = ioctl(fd, SEGDEV_IOC_SEGSIZE, 0);
41 printf("No segment found. Creating...\n");
43 if (ioctl(fd, SEGDEV_IOC_CREATESEG, segsize))
44 return fail("CREATESEG");
46 } else if (segsize != oldsize) {
48 printf("Destroying old segment...\n");
50 if (ioctl(fd, SEGDEV_IOC_DESTROYSEG, 0))
51 return fail("DESTROYSEG");
53 if (ioctl(fd, SEGDEV_IOC_CREATESEG, segsize))
54 return fail("CREATESEG");
57 segment = mmap( NULL, segsize,
58 PROT_READ | PROT_WRITE,
62 if (segment == MAP_FAILED)
65 for (i = 0; i < segsize; i++)
66 segment[i] = (char)(i & 0xff);
68 for (i = 0; i < segsize; i++)
69 if (segment[i] != (char)(i & 0xff))
70 printf("%lu: %d vs %ld\n", i, segment[i], (i & 0xff));