forked from Imagelibrary/rtems
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user