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