From 8dce37226bdb657f8d38f0641f6e48e4f55287f9 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 26 Mar 2012 10:19:30 +0200 Subject: [PATCH] Use new block device API --- rtemsbsd/src/rtems-bsd-cam.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/rtemsbsd/src/rtems-bsd-cam.c b/rtemsbsd/src/rtems-bsd-cam.c index db6deb9b..65337394 100644 --- a/rtemsbsd/src/rtems-bsd-cam.c +++ b/rtemsbsd/src/rtems-bsd-cam.c @@ -7,7 +7,7 @@ */ /* - * Copyright (c) 2009, 2010 embedded brains GmbH. All rights reserved. + * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Obere Lagerstr. 30 @@ -284,7 +284,7 @@ static int rtems_bsd_sim_disk_ioctl(rtems_disk_device *dd, uint32_t req, void *a return 0; } else { - return -1; + return rtems_blkdev_ioctl(dd, req, arg); } } @@ -303,34 +303,26 @@ static rtems_status_code rtems_bsd_sim_attach_worker(rtems_media_state state, const char *src, char **dest, void *arg) { rtems_status_code sc = RTEMS_SUCCESSFUL; - rtems_device_major_number major = UINT32_MAX; struct cam_sim *sim = arg; char *disk = NULL; if (state == RTEMS_MEDIA_STATE_READY) { - dev_t dev = 0; unsigned retries = 0; struct scsi_inquiry_data inq_data; uint32_t block_count = 0; uint32_t block_size = 0; - sc = rtems_io_register_driver(0, &rtems_blkdev_generic_ops, &major); - if (sc != RTEMS_SUCCESSFUL) { - BSD_PRINTF("OOPS: register driver failed\n"); - goto error; - } - - disk = rtems_media_create_path("/dev", src, major); + disk = rtems_media_create_path("/dev", src, cam_sim_unit(sim)); if (disk == NULL) { BSD_PRINTF("OOPS: create path failed\n"); - goto unregister_and_error; + goto error; } sc = rtems_bsd_scsi_inquiry(&sim->ccb, &inq_data); if (sc != RTEMS_SUCCESSFUL) { BSD_PRINTF("OOPS: inquiry failed\n"); - goto unregister_and_error; + goto error; } scsi_print_inquiry(&inq_data); @@ -342,22 +334,20 @@ rtems_bsd_sim_attach_worker(rtems_media_state state, const char *src, char **des } if (sc != RTEMS_SUCCESSFUL) { BSD_PRINTF("OOPS: test unit ready failed\n"); - goto unregister_and_error; + goto error; } sc = rtems_bsd_scsi_read_capacity(&sim->ccb, &block_count, &block_size); if (sc != RTEMS_SUCCESSFUL) { BSD_PRINTF("OOPS: read capacity failed\n"); - goto unregister_and_error; + goto error; } BSD_PRINTF("read capacity: block count %u, block size %u\n", block_count, block_size); - dev = rtems_filesystem_make_dev_t(major, 0); - - sc = rtems_disk_create_phys(dev, block_size, block_count, rtems_bsd_sim_disk_ioctl, sim, disk); + sc = rtems_blkdev_create(disk, block_size, block_count, rtems_bsd_sim_disk_ioctl, sim); if (sc != RTEMS_SUCCESSFUL) { - goto unregister_and_error; + goto error; } /* FIXME */ @@ -374,10 +364,6 @@ rtems_bsd_sim_attach_worker(rtems_media_state state, const char *src, char **des return RTEMS_SUCCESSFUL; -unregister_and_error: - - rtems_io_unregister_driver(major); - error: free(disk, M_RTEMS_HEAP);