2008-01-05 Chris Johns <chrisj@rtems.org>

* configure.ac: Fix typo in the strict order mutex CPU OPTs test.
	* libmisc/shell/shell.c: Handle '#' comment characters correctly.
	* libblock/include/rtems/flashdisk.h: Add docmentation about the
	control fields. Add more control fields to handle the flash when
	full.
	* libblock/src/flashdisk.c: Fix the descriptor erase test so it
	detects a descriptor is erased. Add support for unavailable blocks
	the user can configure. Print the used list as a diag. Fix the bug
	when a page is detected as failed and present on more than one
	queue. Add a count to the queues so queue length can be used to
	manage compaction.
This commit is contained in:
Chris Johns committed 2008-01-05 06:57:17 +00:00
1 parent 74ee68dd00
commit a5de1ef5fc
5 files changed
+411 -266

No files matched your search

+14
View File
@@ -1,3 +1,17 @@
2008-01-05 Chris Johns <chrisj@rtems.org>
* configure.ac: Fix typo in the strict order mutex CPU OPTs test.
* libmisc/shell/shell.c: Handle '#' comment characters correctly.
* libblock/include/rtems/flashdisk.h: Add docmentation about the
control fields. Add more control fields to handle the flash when
full.
* libblock/src/flashdisk.c: Fix the descriptor erase test so it
detects a descriptor is erased. Add support for unavailable blocks
the user can configure. Print the used list as a diag. Fix the bug
when a page is detected as failed and present on more than one
queue. Add a count to the queues so queue length can be used to
manage compaction.
2008-01-03 Till Straumann <strauman@slac.stanford.edu>
* score/src/threadhandler.c, sapi/src/exshutdown.c:
+1 -1
View File
@@ -234,7 +234,7 @@ RTEMS_CPUOPT([__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__],
## This gives the same behavior as 4.8 and older
RTEMS_CPUOPT([__STRICT_ORDER_MUTEX__],
[test x"${ENABLE_STRICT_ORDER_MUTEX}"= x"1"],
[test x"${ENABLE_STRICT_ORDER_MUTEX}" = x"1"],
[1],
[disable strict order mutex]
)
+39 -8
View File
@@ -57,6 +57,7 @@ typedef struct rtems_fdisk_monitor_data
{
uint32_t block_size;
uint32_t block_count;
uint32_t unavail_blocks;
uint32_t device_count;
uint32_t segment_count;
uint32_t page_count;
@@ -264,17 +265,47 @@ typedef struct rtems_fdisk_device_desc
/**
* RTEMS Flash Disk configuration table used to initialise the
* driver.
*
* The unavailable blocks count is the number of blocks less than the
* available number of blocks the file system is given. This means there
* will always be that number of blocks available when the file system
* thinks the disk is full. The compaction code needs blocks to compact
* with so you will never be able to have all the blocks allocated to the
* file system and be able to full the disk.
*
* The compacting segment count is the number of segments that are
* moved into a new segment. A high number will mean more segments with
* low active page counts and high used page counts will be moved into
* avaliable pages how-ever this extends the compaction time due to
* time it takes the erase the pages. There is no pont making this number
* greater than the maximum number of pages in a segment.
*
* The available compacting segment count is the level when compaction occurs
* when writing. If you set this to 0 then compaction will fail because
* there will be no segments to compact into.
*
* The info level can be 0 for off with error, and abort messages allowed.
* Level 1 is warning messages, level 1 is informational messages, and level 3
* is debugging type prints. The info level can be turned off with a compile
* time directive on the command line to the compiler of:
*
* -DRTEMS_FDISK_TRACE=0
*/
typedef struct rtems_flashdisk_config
{
uint32_t block_size; /**< The block size. */
uint32_t device_count; /**< The number of devices. */
const rtems_fdisk_device_desc* devices; /**< The device descriptions. */
uint32_t flags; /**< Set of flags to control
driver. */
uint32_t compact_segs; /**< Max number of segs to
compact in one pass. */
uint32_t info_level; /**< Default info level. */
uint32_t block_size; /**< The block size. */
uint32_t device_count; /**< The number of devices. */
const rtems_fdisk_device_desc* devices; /**< The device descriptions. */
uint32_t flags; /**< Set of flags to control
driver. */
uint32_t unavail_blocks; /**< Number of blocks not
available to the file sys. */
uint32_t compact_segs; /**< Max number of segs to
compact in one pass. */
uint32_t avail_compact_segs; /**< The number of segments
when compaction occurs
when writing. */
uint32_t info_level; /**< Default info level. */
} rtems_flashdisk_config;
/*
File diff suppressed because it is too large. Load diff
+4 -1
View File
@@ -498,8 +498,11 @@ rtems_boolean rtems_shell_main_loop(
if (*c == '\0') /* empty line */
continue;
if (*c == '#') /* comment character */
if (*c == '#') { /* comment character */
cmd[0] = 0;
continue;
}
if (!strcmp(cmd,"e")) { /* edit last command */
strcpy(cmd,last_cmd);