[PATCH 4/4] Filesystem: Statically initialize rtems_libio_iops

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Feb 2 14:25:26 UTC 2015


---
 cpukit/libcsupport/include/rtems/libio_.h  |  2 +-
 cpukit/libcsupport/src/libio_init.c        |  8 +-------
 cpukit/sapi/include/confdefs.h             |  6 ++++--
 testsuites/sptests/Makefile.am             |  2 +-
 testsuites/sptests/configure.ac            |  1 -
 testsuites/sptests/spfatal22/Makefile.am   | 21 ---------------------
 testsuites/sptests/spfatal22/spfatal22.doc | 19 -------------------
 testsuites/sptests/spfatal22/spfatal22.scn |  4 ----
 testsuites/sptests/spfatal22/testcase.h    | 24 ------------------------
 9 files changed, 7 insertions(+), 80 deletions(-)
 delete mode 100644 testsuites/sptests/spfatal22/Makefile.am
 delete mode 100644 testsuites/sptests/spfatal22/spfatal22.doc
 delete mode 100644 testsuites/sptests/spfatal22/spfatal22.scn
 delete mode 100644 testsuites/sptests/spfatal22/testcase.h

diff --git a/cpukit/libcsupport/include/rtems/libio_.h b/cpukit/libcsupport/include/rtems/libio_.h
index 1300d39..c26782e 100644
--- a/cpukit/libcsupport/include/rtems/libio_.h
+++ b/cpukit/libcsupport/include/rtems/libio_.h
@@ -65,7 +65,7 @@ extern rtems_id                          rtems_libio_semaphore;
  */
 
 extern const uint32_t rtems_libio_number_iops;
-extern rtems_libio_t  *rtems_libio_iops;
+extern rtems_libio_t rtems_libio_iops[];
 extern rtems_libio_t *rtems_libio_iop_freelist;
 
 extern const rtems_filesystem_file_handlers_r rtems_filesystem_null_handlers;
diff --git a/cpukit/libcsupport/src/libio_init.c b/cpukit/libcsupport/src/libio_init.c
index e64ddd6..a14fe86 100644
--- a/cpukit/libcsupport/src/libio_init.c
+++ b/cpukit/libcsupport/src/libio_init.c
@@ -38,7 +38,6 @@
  */
 
 rtems_id           rtems_libio_semaphore;
-rtems_libio_t     *rtems_libio_iops;
 rtems_libio_t     *rtems_libio_iop_freelist;
 
 void rtems_libio_init( void )
@@ -50,12 +49,7 @@ void rtems_libio_init( void )
 
     if (rtems_libio_number_iops > 0)
     {
-        rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
-                                                    sizeof(rtems_libio_t));
-        if (rtems_libio_iops == NULL)
-            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);
-
-        iop = rtems_libio_iop_freelist = rtems_libio_iops;
+        iop = rtems_libio_iop_freelist = &rtems_libio_iops[0];
         for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)
           iop->data1 = iop + 1;
         iop->data1 = NULL;
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h
index 569f136..65d07fa 100644
--- a/cpukit/sapi/include/confdefs.h
+++ b/cpukit/sapi/include/confdefs.h
@@ -92,7 +92,7 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
 #endif
 
 #ifndef RTEMS_SCHEDSIM
-#include <rtems/libio.h>
+#include <rtems/libio_.h>
 
 #ifdef CONFIGURE_INIT
 const rtems_libio_helper rtems_libio_init_helper =
@@ -153,11 +153,13 @@ const rtems_libio_helper rtems_fs_init_helper =
 #define CONFIGURE_LIBIO_POSIX_KEYS 1
 
 #ifdef CONFIGURE_INIT
+  rtems_libio_t rtems_libio_iops[CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS];
+
   /**
    * When instantiating the configuration tables, this variable is
    * initialized to specify the maximum number of file descriptors.
    */
-  const uint32_t rtems_libio_number_iops = CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS;
+  const uint32_t rtems_libio_number_iops = RTEMS_ARRAY_SIZE(rtems_libio_iops);
 #endif
 
 /**
diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am
index a71c024..2bbe661 100644
--- a/testsuites/sptests/Makefile.am
+++ b/testsuites/sptests/Makefile.am
@@ -18,7 +18,7 @@ _SUBDIRS = \
     spfatal01 spfatal02 spfatal03 spfatal04 spfatal05 spfatal06 spfatal07 \
     spfatal08 spfatal09 spfatal10 spfatal11 spfatal12 spfatal13 spfatal14 \
     spfatal15 spfatal16 spfatal17 spfatal18 spfatal19 spfatal20 \
-    spfatal22 spfatal24 spfatal25 spfatal27\
+    spfatal24 spfatal25 spfatal27\
     spfifo01 spfifo02 spfifo03 spfifo04 spfifo05 \
     spfreechain01 \
     spintrcritical01 spintrcritical02 spintrcritical03 spintrcritical04 \
diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac
index 79a0b2d..47a9d3f 100644
--- a/testsuites/sptests/configure.ac
+++ b/testsuites/sptests/configure.ac
@@ -175,7 +175,6 @@ spfatal17/Makefile
 spfatal18/Makefile
 spfatal19/Makefile
 spfatal20/Makefile
-spfatal22/Makefile
 spfatal24/Makefile
 spfatal25/Makefile
 spfatal27/Makefile
diff --git a/testsuites/sptests/spfatal22/Makefile.am b/testsuites/sptests/spfatal22/Makefile.am
deleted file mode 100644
index f41b836..0000000
--- a/testsuites/sptests/spfatal22/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-rtems_tests_PROGRAMS = spfatal22
-spfatal22_SOURCES = ../spfatal_support/init.c \
-    ../spfatal_support/system.h ../../support/src/test_support.c testcase.h
-
-dist_rtems_tests_DATA = spfatal22.scn
-dist_rtems_tests_DATA += spfatal22.doc
-
-include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
-include $(top_srcdir)/../automake/compile.am
-include $(top_srcdir)/../automake/leaf.am
-
-AM_CPPFLAGS += -I$(top_srcdir)/../support/include
-
-LINK_OBJS = $(spfatal22_OBJECTS)
-LINK_LIBS = $(spfatal22_LDLIBS)
-
-spfatal22$(EXEEXT): $(spfatal22_OBJECTS) $(spfatal22_DEPENDENCIES)
-	@rm -f spfatal22$(EXEEXT)
-	$(make-exe)
-
-include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spfatal22/spfatal22.doc b/testsuites/sptests/spfatal22/spfatal22.doc
deleted file mode 100644
index 02abfef..0000000
--- a/testsuites/sptests/spfatal22/spfatal22.doc
+++ /dev/null
@@ -1,19 +0,0 @@
-#  COPYRIGHT (c) 1989-2010.
-#  On-Line Applications Research Corporation (OAR).
-#
-#  The license and distribution terms for this file may be
-#  found in the file LICENSE in this distribution or at
-#  http://www.rtems.org/license/LICENSE.
-#
-
-This file describes the directives and concepts tested by this test set.
-
-test set name:  spfatal22
-
-directives:
-
-  rtems_libio_init
-
-concepts:
-
-+ Exercise path when unable to allocate memory.
diff --git a/testsuites/sptests/spfatal22/spfatal22.scn b/testsuites/sptests/spfatal22/spfatal22.scn
deleted file mode 100644
index b4239e6..0000000
--- a/testsuites/sptests/spfatal22/spfatal22.scn
+++ /dev/null
@@ -1,4 +0,0 @@
-*** TEST FATAL FATAL 22 ***
-Allocate_majority_of_heap: 
-Fatal error (libio init out of memory) hit
-*** END OF TEST FATAL 22 ***
diff --git a/testsuites/sptests/spfatal22/testcase.h b/testsuites/sptests/spfatal22/testcase.h
deleted file mode 100644
index 195b7ec..0000000
--- a/testsuites/sptests/spfatal22/testcase.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- *  COPYRIGHT (c) 1989-2010.
- *  On-Line Applications Research Corporation (OAR).
- *
- *  The license and distribution terms for this file may be
- *  found in the file LICENSE in this distribution or at
- *  http://www.rtems.org/license/LICENSE.
- */
-
-#define FATAL_ERROR_TEST_NAME            "22"
-#define FATAL_ERROR_DESCRIPTION          "libio init out of memory"
-#define FATAL_ERROR_EXPECTED_SOURCE      INTERNAL_ERROR_RTEMS_API
-#define FATAL_ERROR_EXPECTED_IS_INTERNAL FALSE
-#define FATAL_ERROR_EXPECTED_ERROR       RTEMS_NO_MEMORY
-
-#include <rtems/libio.h>
-#include <rtems/malloc.h>
-
-void force_error()
-{
-  rtems_heap_greedy_allocate( NULL, 0 );
-
-  rtems_libio_init();
-}
-- 
1.8.4.5




More information about the devel mailing list