ramdisk: Use rtems_blkdev_create()

Update #3358.
This commit is contained in:
Sebastian Huber
2018-07-30 06:39:09 +02:00
parent d56e68bb8b
commit 24b94c4771
13 changed files with 181 additions and 236 deletions

View File

@@ -23,7 +23,7 @@
rtems_device_driver
ramdisk_initialize(
rtems_device_major_number major,
rtems_device_major_number major RTEMS_UNUSED,
rtems_device_minor_number minor RTEMS_UNUSED,
void *arg RTEMS_UNUSED)
{
@@ -32,10 +32,6 @@ ramdisk_initialize(
struct ramdisk *r;
rtems_status_code rc;
rc = rtems_disk_io_initialize();
if (rc != RTEMS_SUCCESSFUL)
return rc;
/*
* Coverity Id 27 notes that this calloc() is a resource leak.
*
@@ -48,7 +44,6 @@ ramdisk_initialize(
r->trace = false;
for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)
{
dev_t dev = rtems_filesystem_make_dev_t(major, i);
char name [] = RAMDISK_DEVICE_BASE_NAME "a";
name [sizeof(RAMDISK_DEVICE_BASE_NAME) - 1] += i;
r->block_size = c->block_size;
@@ -73,8 +68,8 @@ ramdisk_initialize(
r->initialized = true;
r->area = c->location;
}
rc = rtems_disk_create_phys(dev, c->block_size, c->block_num,
ramdisk_ioctl, r, name);
rc = rtems_blkdev_create(name, c->block_size, c->block_num,
ramdisk_ioctl, r);
if (rc != RTEMS_SUCCESSFUL)
{
if (r->malloced)

View File

@@ -24,57 +24,35 @@
#include "config.h"
#endif
#include <rtems.h>
#include <rtems/ramdisk.h>
const rtems_driver_address_table ramdisk_ops = {
.initialization_entry = NULL,
RTEMS_GENERIC_BLOCK_DEVICE_DRIVER_ENTRIES
};
rtems_status_code ramdisk_register(
uint32_t media_block_size,
rtems_blkdev_bnum media_block_count,
bool trace,
const char *disk,
dev_t *dev_ptr
const char *disk
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_device_major_number major = 0;
ramdisk *rd = NULL;
dev_t dev = 0;
sc = rtems_io_register_driver(0, &ramdisk_ops, &major);
if (sc != RTEMS_SUCCESSFUL) {
return RTEMS_UNSATISFIED;
}
rd = ramdisk_allocate(NULL, media_block_size, media_block_count, trace);
if (rd == NULL) {
rtems_io_unregister_driver(major);
return RTEMS_UNSATISFIED;
}
dev = rtems_filesystem_make_dev_t(major, 0);
sc = rtems_disk_create_phys(
dev,
sc = rtems_blkdev_create(
disk,
media_block_size,
media_block_count,
ramdisk_ioctl,
rd,
disk
rd
);
if (sc != RTEMS_SUCCESSFUL) {
ramdisk_free(rd);
rtems_io_unregister_driver(major);
return RTEMS_UNSATISFIED;
}
*dev_ptr = dev;
return RTEMS_SUCCESSFUL;
}