summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2009-10-08 07:07:36 +0000
committerChris Johns <chrisj@rtems.org>2009-10-08 07:07:36 +0000
commiteb649786c8528f349a39b35ae2965e3f874e2088 (patch)
tree194f40f18f42b9f12ee58df2bee39b0e7d7a4cc3 /cpukit/score
parentRegenerate (diff)
downloadrtems-eb649786c8528f349a39b35ae2965e3f874e2088.tar.bz2
2009-10-08 Chris Johns <chrisj@rtems.org>
* Makefile.am, preinstall.am: Added statvfs.h. * libcsupport/Makefile.am: Add statvfs.c. * libcsupport/include/sys/statvfs.h, libcsupport/src/statvfs.c: New. * libcsupport/include/rtems/libio.h: Add a file system handler for the statvfs call. * libfs/src/devfs/devfs_init.c, libfs/src/dosfs/msdos_init.c, libfs/src/imfs/imfs_init.c, libfs/src/nfsclient/src/nfs.c: Set the statvfs handler to NULL. * include/rtems/fs.h: Add a second node access field for the RFS file system to hold a directory offset while the existing field holds the inode number. This save a rescan of the directory when working with directories. * libblock/include/rtems/bdbuf.h: Added references and user fields to the buffer descriptor. * libblock/src/bdbuf.c: Added dynamic buffer support for different block sizes. Fixed a number of bugs. * libblock/src/blkdev.c: Release the disk device on an error. * libblock/src/diskdevs.c: Set the block size to the media block size during initialisation of the disk device. * libblock/src/flashdisk.c, libblock/src/nvdisk.c, libblock/src/ramdisk.c: Updated the drivers to handle variable block sizes. * libfs/src/dosfs/fat.c, libfs/src/dosfs/fat.h: Release any buffers when an error occurs. The FAT buffer layer hangs onto a single buffer while mounted. This should be fixed. * sapi/inline/rtems/chain.inl: Added rtems_chain_set_off_chain, rtems_chain_is_node_off_chain, and rtems_chain_previous. * score/inline/rtems/score/chain.inl: Added _Chain_Set_off_chain, and _Chain_Is_node_off_chain. * libmisc/shell/main_ln.c, libmisc/shell/main_mknod.c, libmisc/shell/mknod-pack_dev.c, libmisc/shell/mknod-pack_dev.h: New shell commands. * libmisc/Makefile.am, libmisc/shell/shellconfig.h: Added ln and mknod commands. * libmisc/shell/hexdump-display.c: Fixed the reopen bug which showed up as a free with a bad pointer. * libmisc/shell/main_mount.c: List the user adding file system when listing the available file systems to mount. * libmisc/shell/utils-cp.c: Remove the fixed static copy buffer and use a large dynamic buffer. * score/inline/rtems/score/address.inl, score/src/coremsgsubmit.c, score/src/objectallocate.c, score/src/objectfree.c: Remove warnings.
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/inline/rtems/score/address.inl8
-rw-r--r--cpukit/score/inline/rtems/score/chain.inl30
-rw-r--r--cpukit/score/src/coremsgsubmit.c2
-rw-r--r--cpukit/score/src/objectallocate.c2
-rw-r--r--cpukit/score/src/objectfree.c4
5 files changed, 38 insertions, 8 deletions
diff --git a/cpukit/score/inline/rtems/score/address.inl b/cpukit/score/inline/rtems/score/address.inl
index 417c069648..6a1fd3e9a3 100644
--- a/cpukit/score/inline/rtems/score/address.inl
+++ b/cpukit/score/inline/rtems/score/address.inl
@@ -42,10 +42,10 @@
#include <rtems/bspIo.h>
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
- intptr_t offset
+ uintptr_t offset
)
{
- return (void *)((intptr_t)base + offset);
+ return (void *)((uintptr_t)base + offset);
}
/** @brief Subtract Offset from Offset
@@ -62,10 +62,10 @@ RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
RTEMS_INLINE_ROUTINE void *_Addresses_Subtract_offset (
const void *base,
- intptr_t offset
+ uintptr_t offset
)
{
- return (void *)((intptr_t)base - offset);
+ return (void *)((uintptr_t)base - offset);
}
/** @brief Subtract Two Offsets
diff --git a/cpukit/score/inline/rtems/score/chain.inl b/cpukit/score/inline/rtems/score/chain.inl
index ca60aa94f5..3bde7fb229 100644
--- a/cpukit/score/inline/rtems/score/chain.inl
+++ b/cpukit/score/inline/rtems/score/chain.inl
@@ -32,6 +32,36 @@
* @{
*/
+/** @brief Set off chain
+ *
+ * This function sets the next and previous fields of the @a node to NULL
+ * indicating the @a node is not part of a chain.
+ *
+ * @param[in] node the node set to off chain.
+ */
+RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(
+ Chain_Node *node
+)
+{
+ node->next = node->previous = NULL;
+}
+
+/** @brief Is the Node off Chain
+ *
+ * This function returns true if the @a node is not on a chain. A @a node is
+ * off chain if the next and previous fields are set to NULL.
+ *
+ * @param[in] node is the node off chain.
+ *
+ * @return This function returns true if the @a node is off chain.
+ */
+RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(
+ const Chain_Node *node
+)
+{
+ return (node->next == NULL) && (node->previous == NULL);
+}
+
/** @brief Are Two Nodes Equal
*
* This function returns true if @a left and @a right are equal,
diff --git a/cpukit/score/src/coremsgsubmit.c b/cpukit/score/src/coremsgsubmit.c
index 23f9f10256..a1cdae84ea 100644
--- a/cpukit/score/src/coremsgsubmit.c
+++ b/cpukit/score/src/coremsgsubmit.c
@@ -88,7 +88,7 @@ CORE_message_queue_Status _CORE_message_queue_Submit(
size
);
*(size_t *) the_thread->Wait.return_argument = size;
- the_thread->Wait.count = submit_type;
+ the_thread->Wait.count = (uint32_t) submit_type;
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
diff --git a/cpukit/score/src/objectallocate.c b/cpukit/score/src/objectallocate.c
index c924f39453..3a4e329ab6 100644
--- a/cpukit/score/src/objectallocate.c
+++ b/cpukit/score/src/objectallocate.c
@@ -73,7 +73,7 @@ Objects_Control *_Objects_Allocate(
if ( the_object ) {
uint32_t block;
- block = _Objects_Get_index( the_object->id ) -
+ block = (uint32_t) _Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
diff --git a/cpukit/score/src/objectfree.c b/cpukit/score/src/objectfree.c
index af12a0fe8b..f74394d0fa 100644
--- a/cpukit/score/src/objectfree.c
+++ b/cpukit/score/src/objectfree.c
@@ -50,8 +50,8 @@ void _Objects_Free(
if ( information->auto_extend ) {
uint32_t block;
- block =
- _Objects_Get_index( the_object->id ) - _Objects_Get_index( information->minimum_id );
+ block = (uint32_t) (_Objects_Get_index( the_object->id ) -
+ _Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
information->inactive_per_block[ block ]++;