change log for rtems (2010-06-08)

rtems-vc at rtems.org rtems-vc at rtems.org
Tue Jun 8 09:12:42 UTC 2010


 *sh*:
2010-06-08	Sebastian Huber <sebastian.huber at embedded-brains.de>

	* libfs/src/devfs/devclose.c, libfs/src/devfs/devopen.c,
	libfs/src/imfs/deviceerrno.c, libfs/src/imfs/deviceio.c,
	libfs/src/rfs/rtems-rfs-rtems-dev.c: Changed rtems_deviceio_errno() to
	cope with a status code of RTEMS_SUCCESSFUL.  Removed dependency on
	association framework.

M 1.2352  cpukit/ChangeLog
M    1.4  cpukit/libfs/src/devfs/devclose.c
M    1.4  cpukit/libfs/src/devfs/devopen.c
M    1.2  cpukit/libfs/src/imfs/deviceerrno.c
M   1.22  cpukit/libfs/src/imfs/deviceio.c
M    1.3  cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c

diff -u rtems/cpukit/ChangeLog:1.2351 rtems/cpukit/ChangeLog:1.2352
--- rtems/cpukit/ChangeLog:1.2351	Mon Jun  7 14:33:37 2010
+++ rtems/cpukit/ChangeLog	Tue Jun  8 03:30:03 2010
@@ -1,3 +1,11 @@
+2010-06-08	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
+	* libfs/src/devfs/devclose.c, libfs/src/devfs/devopen.c,
+	libfs/src/imfs/deviceerrno.c, libfs/src/imfs/deviceio.c,
+	libfs/src/rfs/rtems-rfs-rtems-dev.c: Changed rtems_deviceio_errno() to
+	cope with a status code of RTEMS_SUCCESSFUL.  Removed dependency on
+	association framework.
+
 2010-06-07	Ralf Corsépius <ralf.corsepius at rtems.org>
 
 	* aclocal/version.m4: Bump RTEMS_API to 4.11.

diff -u rtems/cpukit/libfs/src/devfs/devclose.c:1.3 rtems/cpukit/libfs/src/devfs/devclose.c:1.4
--- rtems/cpukit/libfs/src/devfs/devclose.c:1.3	Thu Sep 18 08:21:49 2008
+++ rtems/cpukit/libfs/src/devfs/devclose.c	Tue Jun  8 03:30:04 2010
@@ -34,10 +34,8 @@
     np->minor,
     (void *) &args
   );
-  if ( status ) {
-    return rtems_deviceio_errno(status);
-  }
-  return 0;
+
+  return rtems_deviceio_errno(status);
 }
 
 

diff -u rtems/cpukit/libfs/src/devfs/devopen.c:1.3 rtems/cpukit/libfs/src/devfs/devopen.c:1.4
--- rtems/cpukit/libfs/src/devfs/devopen.c:1.3	Thu Sep 18 08:21:49 2008
+++ rtems/cpukit/libfs/src/devfs/devopen.c	Tue Jun  8 03:30:04 2010
@@ -37,8 +37,6 @@
     np->minor,
     (void *) &args
   );
-  if ( status )
-    return rtems_deviceio_errno(status);
 
-  return 0;
+  return rtems_deviceio_errno(status);
 }

diff -u rtems/cpukit/libfs/src/imfs/deviceerrno.c:1.1 rtems/cpukit/libfs/src/imfs/deviceerrno.c:1.2
--- rtems/cpukit/libfs/src/imfs/deviceerrno.c:1.1	Wed Sep 17 11:12:04 2008
+++ rtems/cpukit/libfs/src/imfs/deviceerrno.c	Tue Jun  8 03:30:04 2010
@@ -18,40 +18,53 @@
 #include "config.h"
 #endif
 
+#include <errno.h>
+
 #include <rtems.h>
 #include <rtems/libio.h>
-#include <rtems/assoc.h>                /* assoc.h not included by rtems.h */
-#include <errno.h>
 
-/*
- * Convert RTEMS status to a UNIX errno
- */
-
-const rtems_assoc_t errno_assoc[] = {
-    { "OK",                 RTEMS_SUCCESSFUL,                0 },
-    { "BUSY",               RTEMS_RESOURCE_IN_USE,           EBUSY },
-    { "INVALID NAME",       RTEMS_INVALID_NAME,              EINVAL },
-    { "NOT IMPLEMENTED",    RTEMS_NOT_IMPLEMENTED,           ENOSYS },
-    { "TIMEOUT",            RTEMS_TIMEOUT,                   ETIMEDOUT },
-    { "NO MEMORY",          RTEMS_NO_MEMORY,                 ENOMEM },
-    { "NO DEVICE",          RTEMS_UNSATISFIED,               ENODEV },
-    { "INVALID NUMBER",     RTEMS_INVALID_NUMBER,            EBADF},
-    { "NOT RESOURCE OWNER", RTEMS_NOT_OWNER_OF_RESOURCE,     EPERM},
-    { "IO ERROR",           RTEMS_IO_ERROR,                  EIO},
-    { 0, 0, 0 },
+static const int status_code_to_errno [RTEMS_STATUS_CODES_LAST + 1] = {
+  [RTEMS_SUCCESSFUL]               = 0,
+  [RTEMS_TASK_EXITTED]             = EIO,
+  [RTEMS_MP_NOT_CONFIGURED]        = EIO,
+  [RTEMS_INVALID_NAME]             = EINVAL,
+  [RTEMS_INVALID_ID]               = EIO,
+  [RTEMS_TOO_MANY]                 = EIO,
+  [RTEMS_TIMEOUT]                  = ETIMEDOUT,
+  [RTEMS_OBJECT_WAS_DELETED]       = EIO,
+  [RTEMS_INVALID_SIZE]             = EIO,
+  [RTEMS_INVALID_ADDRESS]          = EIO,
+  [RTEMS_INVALID_NUMBER]           = EBADF,
+  [RTEMS_NOT_DEFINED]              = EIO,
+  [RTEMS_RESOURCE_IN_USE]          = EBUSY,
+  [RTEMS_UNSATISFIED]              = ENODEV,
+  [RTEMS_INCORRECT_STATE]          = EIO,
+  [RTEMS_ALREADY_SUSPENDED]        = EIO,
+  [RTEMS_ILLEGAL_ON_SELF]          = EIO,
+  [RTEMS_ILLEGAL_ON_REMOTE_OBJECT] = EIO,
+  [RTEMS_CALLED_FROM_ISR]          = EIO,
+  [RTEMS_INVALID_PRIORITY]         = EIO,
+  [RTEMS_NOT_OWNER_OF_RESOURCE]    = EPERM,
+  [RTEMS_NOT_IMPLEMENTED]          = ENOSYS,
+  [RTEMS_INTERNAL_ERROR]           = EIO,
+  [RTEMS_NO_MEMORY]                = ENOMEM,
+  [RTEMS_IO_ERROR]                 = EIO,
+  [RTEMS_PROXY_BLOCKING]           = EIO
 };
 
-int
-rtems_deviceio_errno(rtems_status_code code)
+int rtems_deviceio_errno(rtems_status_code sc)
 {
-    int rc;
+  if (sc == RTEMS_SUCCESSFUL) {
+    return 0;
+  } else {
+    int eno = EINVAL;
 
-    if ((rc = rtems_assoc_remote_by_local(errno_assoc, (uint32_t  ) code)))
-    {
-        errno = rc;
-        return -1;
+    if ((unsigned) sc <= RTEMS_STATUS_CODES_LAST) {
+      eno = status_code_to_errno [sc];
     }
-    return -1;
-}
 
+    errno = eno;
 
+    return -1;
+  }
+}

diff -u rtems/cpukit/libfs/src/imfs/deviceio.c:1.21 rtems/cpukit/libfs/src/imfs/deviceio.c:1.22
--- rtems/cpukit/libfs/src/imfs/deviceio.c:1.21	Wed Apr 29 03:31:27 2009
+++ rtems/cpukit/libfs/src/imfs/deviceio.c	Tue Jun  8 03:30:04 2010
@@ -20,17 +20,11 @@
 
 #include <rtems.h>
 #include <rtems/libio.h>
-#include <rtems/assoc.h>                /* assoc.h not included by rtems.h */
-#include <errno.h>
+#include <rtems/devfs.h>
 
 #include "imfs.h"
 
 /*
- * Convert RTEMS status to a UNIX errno
- */
-extern int rtems_deviceio_errno(rtems_status_code code);
-
-/*
  *  device_open
  *
  *  This handler maps an open() operation onto rtems_io_open().
@@ -58,10 +52,8 @@
     the_jnode->info.device.minor,
     (void *) &args
   );
-  if ( status )
-    return rtems_deviceio_errno(status);
 
-  return 0;
+  return rtems_deviceio_errno( status );
 }
 
 /*
@@ -89,10 +81,8 @@
     the_jnode->info.device.minor,
     (void *) &args
   );
-  if ( status ) {
-    return rtems_deviceio_errno(status);
-  }
-  return 0;
+
+  return rtems_deviceio_errno( status );
 }
 
 /*

diff -u rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c:1.2 rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c:1.3
--- rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c:1.2	Fri Mar 26 23:04:40 2010
+++ rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems-dev.c	Tue Jun  8 03:30:04 2010
@@ -83,10 +83,8 @@
   args.mode  = mode;
 
   status = rtems_io_open (major, minor, (void *) &args);
-  if (status)
-    return rtems_deviceio_errno(status);
 
-  return 0;
+  return rtems_deviceio_errno (status);
 }
 
 /**
@@ -112,10 +110,8 @@
   args.mode  = 0;
 
   status = rtems_io_close (major, minor, (void *) &args);
-  if (status)
-    return rtems_deviceio_errno (status);
 
-  return 0;
+  return rtems_deviceio_errno (status);
 }
 
 /**


 *sh*:
2010-06-08	Sebastian Huber <sebastian.huber at embedded-brains.de>

	* libfs/src/imfs/imfs.h, libfs/src/imfs/imfs_rmnod.c: Added and use
	IMFS_create_orphan() and IMFS_check_node_remove().
	* libfs/src/imfs/deviceio.c, libfs/src/imfs/imfs_directory.c,
	libfs/src/imfs/imfs_fifo.c: Use IMFS_create_orphan() and
	IMFS_check_node_remove().
	* libfs/src/imfs/imfs_handlers_memfile.c, libfs/src/imfs/memfile.c:
	Use IMFS_rmnod() and IMFS_check_node_remove() instead of
	memfile_rmnod() and memfile_check_rmnod().

M 1.2353  cpukit/ChangeLog
M   1.23  cpukit/libfs/src/imfs/deviceio.c
M   1.42  cpukit/libfs/src/imfs/imfs.h
M   1.25  cpukit/libfs/src/imfs/imfs_directory.c
M    1.4  cpukit/libfs/src/imfs/imfs_fifo.c
M   1.12  cpukit/libfs/src/imfs/imfs_handlers_memfile.c
M   1.17  cpukit/libfs/src/imfs/imfs_rmnod.c
M   1.33  cpukit/libfs/src/imfs/memfile.c

diff -u rtems/cpukit/ChangeLog:1.2352 rtems/cpukit/ChangeLog:1.2353
--- rtems/cpukit/ChangeLog:1.2352	Tue Jun  8 03:30:03 2010
+++ rtems/cpukit/ChangeLog	Tue Jun  8 03:50:57 2010
@@ -1,5 +1,16 @@
 2010-06-08	Sebastian Huber <sebastian.huber at embedded-brains.de>
 
+	* libfs/src/imfs/imfs.h, libfs/src/imfs/imfs_rmnod.c: Added and use
+	IMFS_create_orphan() and IMFS_check_node_remove().
+	* libfs/src/imfs/deviceio.c, libfs/src/imfs/imfs_directory.c,
+	libfs/src/imfs/imfs_fifo.c: Use IMFS_create_orphan() and
+	IMFS_check_node_remove().
+	* libfs/src/imfs/imfs_handlers_memfile.c, libfs/src/imfs/memfile.c:
+	Use IMFS_rmnod() and IMFS_check_node_remove() instead of
+	memfile_rmnod() and memfile_check_rmnod().
+
+2010-06-08	Sebastian Huber <sebastian.huber at embedded-brains.de>
+
 	* libfs/src/devfs/devclose.c, libfs/src/devfs/devopen.c,
 	libfs/src/imfs/deviceerrno.c, libfs/src/imfs/deviceio.c,
 	libfs/src/rfs/rtems-rfs-rtems-dev.c: Changed rtems_deviceio_errno() to

diff -u rtems/cpukit/libfs/src/imfs/deviceio.c:1.22 rtems/cpukit/libfs/src/imfs/deviceio.c:1.23
--- rtems/cpukit/libfs/src/imfs/deviceio.c:1.22	Tue Jun  8 03:30:04 2010
+++ rtems/cpukit/libfs/src/imfs/deviceio.c	Tue Jun  8 03:50:56 2010
@@ -82,6 +82,8 @@
     (void *) &args
   );
 
+  IMFS_check_node_remove( the_jnode );
+
   return rtems_deviceio_errno( status );
 }
 

diff -u rtems/cpukit/libfs/src/imfs/imfs.h:1.41 rtems/cpukit/libfs/src/imfs/imfs.h:1.42
--- rtems/cpukit/libfs/src/imfs/imfs.h:1.41	Mon May 31 08:56:36 2010
+++ rtems/cpukit/libfs/src/imfs/imfs.h	Tue Jun  8 03:50:54 2010
@@ -470,11 +470,6 @@
   int                   whence      /* IN  */
 );
 
-extern int memfile_rmnod(
-  rtems_filesystem_location_info_t  *parent_pathloc, /* IN */
-  rtems_filesystem_location_info_t  *pathloc         /* IN */
-);
-
 extern int device_open(
   rtems_libio_t *iop,            /* IN  */
   const char    *pathname,       /* IN  */
@@ -554,6 +549,14 @@
   rtems_libio_t *iop
 );
 
+extern void IMFS_create_orphan(
+  IMFS_jnode_t *jnode
+);
+
+extern void IMFS_check_node_remove(
+  IMFS_jnode_t *jnode
+);
+
 extern int IMFS_rmnod(
   rtems_filesystem_location_info_t  *parent_pathloc, /* IN */
   rtems_filesystem_location_info_t  *pathloc         /* IN */

diff -u rtems/cpukit/libfs/src/imfs/imfs_directory.c:1.24 rtems/cpukit/libfs/src/imfs/imfs_directory.c:1.25
--- rtems/cpukit/libfs/src/imfs/imfs_directory.c:1.24	Thu Jun 11 20:53:33 2009
+++ rtems/cpukit/libfs/src/imfs/imfs_directory.c	Tue Jun  8 03:50:56 2010
@@ -311,42 +311,8 @@
    if ( the_jnode->info.directory.mt_fs != NULL )
      rtems_set_errno_and_return_minus_one( EBUSY );
 
-  /*
-   * Take the node out of the parent's chain that contains this node
-   */
-
-  if ( the_jnode->Parent != NULL ) {
-    rtems_chain_extract( (rtems_chain_node *) the_jnode );
-    the_jnode->Parent = NULL;
-  }
-
-  /*
-   * Decrement the link counter and see if we can free the space.
-   */
-
-  the_jnode->st_nlink--;
-  IMFS_update_ctime( the_jnode );
-
-  /*
-   * The file cannot be open and the link must be less than 1 to free.
-   */
-
-  if ( !rtems_libio_is_file_open( the_jnode ) && (the_jnode->st_nlink < 1) ) {
-
-    /*
-     * Is the rtems_filesystem_current is this node?
-     */
-
-    if ( rtems_filesystem_current.node_access == pathloc->node_access )
-       rtems_filesystem_current.node_access = NULL;
-
-    /*
-     * Free memory associated with a memory file.
-     */
-
-    free( the_jnode );
-  }
+  IMFS_create_orphan( the_jnode );
+  IMFS_check_node_remove( the_jnode );
 
   return 0;
-
 }

diff -u rtems/cpukit/libfs/src/imfs/imfs_fifo.c:1.3 rtems/cpukit/libfs/src/imfs/imfs_fifo.c:1.4
--- rtems/cpukit/libfs/src/imfs/imfs_fifo.c:1.3	Wed Apr 29 03:31:27 2009
+++ rtems/cpukit/libfs/src/imfs/imfs_fifo.c	Tue Jun  8 03:50:56 2010
@@ -53,11 +53,9 @@
 
   int err = pipe_release(&JNODE2PIPE(jnode), iop);
 
-  if (! err) {
+  if (err == 0) {
     iop->flags &= ~LIBIO_FLAGS_OPEN;
-    /* Free jnode if file is already unlinked and no one opens it */
-    if (! rtems_libio_is_file_open(jnode) && jnode->st_nlink < 1)
-      free(jnode);
+    IMFS_check_node_remove(jnode);
   }
 
   IMFS_FIFO_RETURN(err);

diff -u rtems/cpukit/libfs/src/imfs/imfs_handlers_memfile.c:1.11 rtems/cpukit/libfs/src/imfs/imfs_handlers_memfile.c:1.12
--- rtems/cpukit/libfs/src/imfs/imfs_handlers_memfile.c:1.11	Tue May 27 05:34:14 2008
+++ rtems/cpukit/libfs/src/imfs/imfs_handlers_memfile.c	Tue Jun  8 03:50:56 2010
@@ -37,5 +37,5 @@
   IMFS_fdatasync,      /* fsync */
   IMFS_fdatasync,
   IMFS_fcntl,
-  memfile_rmnod
+  IMFS_rmnod
 };

diff -u rtems/cpukit/libfs/src/imfs/imfs_rmnod.c:1.16 rtems/cpukit/libfs/src/imfs/imfs_rmnod.c:1.17
--- rtems/cpukit/libfs/src/imfs/imfs_rmnod.c:1.16	Thu Jun 11 20:53:33 2009
+++ rtems/cpukit/libfs/src/imfs/imfs_rmnod.c	Tue Jun  8 03:50:56 2010
@@ -26,6 +26,39 @@
 
 #include "imfs.h"
 
+void IMFS_create_orphan( IMFS_jnode_t *jnode )
+{
+  if ( jnode->Parent != NULL ) {
+    rtems_chain_extract( &jnode->Node );
+    jnode->Parent = NULL;
+  }
+
+  --jnode->st_nlink;
+
+  IMFS_update_ctime( jnode );
+}
+
+void IMFS_check_node_remove( IMFS_jnode_t *jnode )
+{
+  if ( !rtems_libio_is_file_open( jnode ) && jnode->st_nlink < 1 ) {
+    if ( rtems_filesystem_current.node_access == jnode )
+       rtems_filesystem_current.node_access = NULL;
+
+    switch ( jnode->type ) {
+      case IMFS_MEMORY_FILE:
+        IMFS_memfile_remove( jnode );
+        break;
+      case IMFS_SYM_LINK:
+        free( jnode->info.sym_link.name );
+        break;
+      default:
+        break;
+    }
+
+    free( jnode );
+  }
+}
+
 /*
  *  IMFS_rmnod
  */
@@ -35,50 +68,10 @@
   rtems_filesystem_location_info_t  *pathloc         /* IN */
 )
 {
-  IMFS_jnode_t *the_jnode;
+  IMFS_jnode_t *jnode = (IMFS_jnode_t *) pathloc->node_access;
 
-  the_jnode = (IMFS_jnode_t *) pathloc->node_access;
-
-  /*
-   * Take the node out of the parent's chain that contains this node
-   */
-
-  if ( the_jnode->Parent != NULL ) {
-    rtems_chain_extract( (rtems_chain_node *) the_jnode );
-    the_jnode->Parent = NULL;
-  }
-
-  /*
-   * Decrement the link counter and see if we can free the space.
-   */
-
-  the_jnode->st_nlink--;
-  IMFS_update_ctime( the_jnode );
-
-  /*
-   * The file cannot be open and the link must be less than 1 to free.
-   */
-
-  if ( !rtems_libio_is_file_open( the_jnode ) && (the_jnode->st_nlink < 1) ) {
-
-    /*
-     * Is rtems_filesystem_current this node?
-     */
-
-    if ( rtems_filesystem_current.node_access == pathloc->node_access )
-       rtems_filesystem_current.node_access = NULL;
-
-    /*
-     * Free memory associated with a memory file.
-     */
-
-    if ( the_jnode->type == IMFS_SYM_LINK ) {
-      if ( the_jnode->info.sym_link.name )
-        free( (void*) the_jnode->info.sym_link.name );
-    }
-    free( the_jnode );
-  }
+  IMFS_create_orphan( jnode );
+  IMFS_check_node_remove( jnode );
 
   return 0;
-
 }

diff -u rtems/cpukit/libfs/src/imfs/memfile.c:1.32 rtems/cpukit/libfs/src/imfs/memfile.c:1.33
--- rtems/cpukit/libfs/src/imfs/memfile.c:1.32	Mon Jan 18 19:55:28 2010
+++ rtems/cpukit/libfs/src/imfs/memfile.c	Tue Jun  8 03:50:56 2010
@@ -73,8 +73,6 @@
    unsigned int           length
 );
 
-int  memfile_check_rmnod( IMFS_jnode_t *the_jnode );
-
 void *memfile_alloc_block(void);
 
 void memfile_free_block(
@@ -141,7 +139,8 @@
   if (iop->flags & LIBIO_FLAGS_APPEND)
     iop->offset = the_jnode->info.file.size;
 
-  memfile_check_rmnod( the_jnode );
+  IMFS_check_node_remove( the_jnode );
+
   return 0;
 }
 
@@ -1097,67 +1096,3 @@
   free(memory);
   memfile_blocks_allocated--;
 }
-
-
-/*
- *  memfile_rmnod
- *
- *  This routine is available from the optable to remove a node
- *  from the IMFS file system.
- */
-
-int memfile_rmnod(
-  rtems_filesystem_location_info_t  *parent_pathloc,  /* IN */
-  rtems_filesystem_location_info_t  *pathloc          /* IN */
-)
-{
-  IMFS_jnode_t *the_jnode;
-
-  the_jnode = (IMFS_jnode_t *) pathloc->node_access;
-
-  /*
-   * Take the node out of the parent's chain that contains this node
-   */
-
-  if ( the_jnode->Parent != NULL ) {
-    rtems_chain_extract( (rtems_chain_node *) the_jnode );
-    the_jnode->Parent = NULL;
-  }
-
-  /*
-   * Decrement the link counter and see if we can free the space.
-   */
-
-  the_jnode->st_nlink--;
-  IMFS_update_ctime( the_jnode );
-
-  return memfile_check_rmnod( the_jnode );
-}
-
-
-int  memfile_check_rmnod( IMFS_jnode_t *the_jnode ){
-
-  /*
-   * The file cannot be open and the link must be less than 1 to free.
-   */
-
-  if ( !rtems_libio_is_file_open( the_jnode ) && (the_jnode->st_nlink < 1) ) {
-
-    /*
-     * Is the rtems_filesystem_current is this node?
-     */
-
-    if ( rtems_filesystem_current.node_access == the_jnode )
-       rtems_filesystem_current.node_access = NULL;
-
-    /*
-     * Free memory associated with a memory file.
-     */
-    if (the_jnode->type != IMFS_LINEAR_FILE)
-      IMFS_memfile_remove( the_jnode );
-
-    free( the_jnode );
-  }
-
-  return 0;
-}



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20100608/5a6513d9/attachment.html>


More information about the vc mailing list