genode/repos/libports/src/test/libc_block/main.cc
Norman Feske ca971bbfd8 Move repositories to 'repos/' subdirectory
This patch changes the top-level directory layout as a preparatory
step for improving the tools for managing 3rd-party source codes.
The rationale is described in the issue referenced below.

Issue #1082
2014-05-14 16:08:00 +02:00

79 lines
1.6 KiB
C++

/*
* \brief libc_block test
* \author Josef Soentgen
* \date 2013-11-04
*/
/*
* Copyright (C) 2013 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
/* Genode includes */
#include <os/config.h>
/* libc includes */
#include <dirent.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/uio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
static char buf[16384];
static char str[] = "deadbeef";
int main(int argc, char *argv[])
{
int fd;
ssize_t n;
off_t offset;
printf("--- start test ---\n");
fd = open("/dev/blkdev", O_RDWR);
if (fd == -1) {
perror("open");
return 1;
}
offset = lseek(fd, 8193, SEEK_SET);
printf("offset: %lld\n", (long long)offset);
n = write(fd, str, sizeof (str));
offset = lseek(fd, 8193, SEEK_SET);
printf("offset: %lld\n", (long long)offset);
n = read(fd, buf, sizeof (str));
printf("bytes: %zd\n", n);
for (size_t i = 0; i < sizeof (str); i++)
printf("%c ", buf[i]);
printf("\n");
offset = lseek(fd, 16384, SEEK_SET);
n = write(fd, buf, sizeof (buf));
if (n != sizeof (buf))
printf("error write mismatch: %zd != %zu\n", n, sizeof (buf));
offset = lseek(fd, 4060, SEEK_SET);
n = write(fd, buf, sizeof (buf) / 2);
if (n != sizeof (buf)/2)
printf("error write mismatch: %zd != %zu\n", n, sizeof (buf)/2);
offset = lseek(fd, 2342, SEEK_SET);
n = read(fd, buf, sizeof (buf));
if (n != sizeof (buf))
printf("error read mismatch: %zd != %zu\n", n, sizeof (buf));
close(fd);
printf("--- test finished ---\n");
return 0;
}