forked from Imagelibrary/rtems
@@ -236,7 +236,7 @@ disk_test_set_block_size (rtems_disk_device *dd, size_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
disk_test_write_blocks (dev_t dev, int start, int count, size_t size)
|
disk_test_write_blocks (const char *name, int start, int count, size_t size)
|
||||||
{
|
{
|
||||||
int block;
|
int block;
|
||||||
uint32_t* ip;
|
uint32_t* ip;
|
||||||
@@ -246,14 +246,26 @@ disk_test_write_blocks (dev_t dev, int start, int count, size_t size)
|
|||||||
rtems_status_code sc;
|
rtems_status_code sc;
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
rtems_disk_device* dd;
|
rtems_disk_device* dd;
|
||||||
|
int fd;
|
||||||
|
|
||||||
dd = rtems_disk_obtain (dev);
|
fd = open(name, O_RDWR);
|
||||||
if (!dd)
|
if (fd < 0) {
|
||||||
|
printf ("error: cannot open disk\n");
|
||||||
|
rv = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rv == 0 && rtems_disk_fd_get_disk_device(fd, &dd) != 0)
|
||||||
{
|
{
|
||||||
printf ("error: cannot obtain disk\n");
|
printf ("error: cannot obtain disk\n");
|
||||||
rv = 1;
|
rv = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fd >= 0 && close (fd) != 0)
|
||||||
|
{
|
||||||
|
printf ("error: close disk failed\n");
|
||||||
|
rv = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (rv == 0 && disk_test_set_block_size (dd, size) < 0)
|
if (rv == 0 && disk_test_set_block_size (dd, size) < 0)
|
||||||
{
|
{
|
||||||
printf ("error: set block size failed: %s\n", strerror (errno));
|
printf ("error: set block size failed: %s\n", strerror (errno));
|
||||||
@@ -285,15 +297,12 @@ disk_test_write_blocks (dev_t dev, int start, int count, size_t size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rtems_disk_release (dd);
|
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
disk_test_block_sizes (int argc, char *argv[])
|
disk_test_block_sizes (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
struct stat st;
|
|
||||||
char* name;
|
char* name;
|
||||||
int start;
|
int start;
|
||||||
int count;
|
int count;
|
||||||
@@ -307,17 +316,11 @@ disk_test_block_sizes (int argc, char *argv[])
|
|||||||
|
|
||||||
name = argv[1];
|
name = argv[1];
|
||||||
|
|
||||||
if (stat (name, &st) < 0)
|
|
||||||
{
|
|
||||||
printf ("error: stat '%s' failed: %s\n", name, strerror (errno));
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
start = strtoul (argv[2], 0, 0);
|
start = strtoul (argv[2], 0, 0);
|
||||||
count = strtoul (argv[3], 0, 0);
|
count = strtoul (argv[3], 0, 0);
|
||||||
size = strtoul (argv[4], 0, 0);
|
size = strtoul (argv[4], 0, 0);
|
||||||
|
|
||||||
return disk_test_write_blocks (st.st_rdev, start, count, size);
|
return disk_test_write_blocks (name, start, count, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t
|
static uint32_t
|
||||||
|
|||||||
Reference in New Issue
Block a user