[PATCH 04/18] libio: Simplify rtems_libio_iop()

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Sep 13 13:39:37 UTC 2017


Remove the file descriptor validation.  This is the job of
rtems_libio_check_fd().  Use an inline function instread of a macro.

Update #3132.
---
 cpukit/libcsupport/include/rtems/libio_.h | 20 +++++++++++++-------
 cpukit/libcsupport/src/fstat.c            |  2 +-
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/cpukit/libcsupport/include/rtems/libio_.h b/cpukit/libcsupport/include/rtems/libio_.h
index c2fb975bf7..85f9c8e0a5 100644
--- a/cpukit/libcsupport/include/rtems/libio_.h
+++ b/cpukit/libcsupport/include/rtems/libio_.h
@@ -89,15 +89,21 @@ extern rtems_filesystem_mount_table_entry_t rtems_filesystem_null_mt_entry;
  */
 extern rtems_filesystem_global_location_t rtems_filesystem_global_location_null;
 
-/*
- *  rtems_libio_iop
+/**
+ * @brief Maps a file descriptor to the iop.
+ *
+ * The file descriptor must be a valid index into the iop table.
+ *
+ * @param[in] fd The file descriptor.
  *
- *  Macro to return the file descriptor pointer.
+ * @return The iop corresponding to the specified file descriptor.
+ *
+ * @see rtems_libio_check_fd().
  */
-
-#define rtems_libio_iop(_fd) \
-  ((((uint32_t)(_fd)) < rtems_libio_number_iops) ? \
-         &rtems_libio_iops[_fd] : 0)
+static inline rtems_libio_t *rtems_libio_iop( int fd )
+{
+  return &rtems_libio_iops[ fd ];
+}
 
 /*
  *  rtems_libio_iop_to_descriptor
diff --git a/cpukit/libcsupport/src/fstat.c b/cpukit/libcsupport/src/fstat.c
index 8b39c438f4..4c284bd408 100644
--- a/cpukit/libcsupport/src/fstat.c
+++ b/cpukit/libcsupport/src/fstat.c
@@ -36,8 +36,8 @@ int fstat(
   /*
    *  Now process the stat() request.
    */
-  iop = rtems_libio_iop( fd );
   rtems_libio_check_fd( fd );
+  iop = rtems_libio_iop( fd );
   rtems_libio_check_is_open(iop);
 
   /*
-- 
2.12.3




More information about the devel mailing list