summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-03-03 13:24:42 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-05-18 10:44:18 +0200
commit30c389849d1fecec4b2940b0f1e9101ae3ae04a8 (patch)
tree002bf3ec46f311fb41ad2d6e3fc936aa3bc7a3a5
parent9d62874193262f7f3953e45e85f87712953528d0 (diff)
downloadrtems-30c389849d1fecec4b2940b0f1e9101ae3ae04a8.tar.bz2
libblock: Init deps in rtems_blkdev_create()
Update #3358.
-rw-r--r--cpukit/include/rtems/blkdev.h1
-rw-r--r--cpukit/libblock/src/blkdev-imfs.c14
-rw-r--r--testsuites/libtests/block17/init.c10
3 files changed, 19 insertions, 6 deletions
diff --git a/cpukit/include/rtems/blkdev.h b/cpukit/include/rtems/blkdev.h
index 3f829e6068..929cf4fc24 100644
--- a/cpukit/include/rtems/blkdev.h
+++ b/cpukit/include/rtems/blkdev.h
@@ -296,6 +296,7 @@ rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp);
* @retval RTEMS_INVALID_NUMBER Media block size or count is not positive.
* @retval RTEMS_NO_MEMORY Not enough memory.
* @retval RTEMS_UNSATISFIED Cannot create generic device node.
+ * @retval RTEMS_INCORRECT_STATE Cannot initialize bdbuf.
*
* @see rtems_blkdev_create_partition(), rtems_bdbuf_set_block_size(), and
* rtems_blkdev_request.
diff --git a/cpukit/libblock/src/blkdev-imfs.c b/cpukit/libblock/src/blkdev-imfs.c
index ebe6ebb1d7..a46babb593 100644
--- a/cpukit/libblock/src/blkdev-imfs.c
+++ b/cpukit/libblock/src/blkdev-imfs.c
@@ -6,10 +6,10 @@
*/
/*
- * Copyright (c) 2012 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2012, 2018 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
- * Obere Lagerstr. 30
+ * Dornierstr. 4
* 82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
@@ -279,9 +279,15 @@ rtems_status_code rtems_blkdev_create(
void *driver_data
)
{
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- rtems_blkdev_imfs_context *ctx = malloc(sizeof(*ctx));
+ rtems_status_code sc;
+ rtems_blkdev_imfs_context *ctx;
+
+ sc = rtems_bdbuf_init();
+ if (sc != RTEMS_SUCCESSFUL) {
+ return RTEMS_INCORRECT_STATE;
+ }
+ ctx = malloc(sizeof(*ctx));
if (ctx != NULL) {
sc = rtems_disk_init_phys(
&ctx->dd,
diff --git a/testsuites/libtests/block17/init.c b/testsuites/libtests/block17/init.c
index d916c738d5..3346c7cf17 100644
--- a/testsuites/libtests/block17/init.c
+++ b/testsuites/libtests/block17/init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013 embedded brains GmbH. All rights reserved.
+ * Copyright (c) 2013, 2018 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
@@ -17,6 +17,7 @@
#endif
#include <rtems/bdbuf.h>
+#include <rtems/blkdev.h>
#include "tmacros.h"
@@ -24,8 +25,13 @@ const char rtems_test_name[] = "BLOCK 17";
static void test(void)
{
- rtems_status_code sc = rtems_bdbuf_init();
+ rtems_status_code sc;
+
+ sc = rtems_bdbuf_init();
rtems_test_assert(sc == RTEMS_INVALID_NUMBER);
+
+ sc = rtems_blkdev_create(NULL, 0, 0, NULL, NULL);
+ rtems_test_assert(sc == RTEMS_INCORRECT_STATE);
}
static void Init(rtems_task_argument arg)