<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2011-07-03)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>ccj</strong></font>
 <font color='#225522'><em>(on branch rtems-4-10-branch)</em></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-07-04      Chris Johns <chrisj@rtems.org>

        PR 1827/filesystem
        * libfs/src/rfs/rtems-rfs-rtems.c: Skip the parent (..) path value
        when eval make moving up out of the RFS file system.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2865&r2=text&tr2=1.2866&diff_format=h">M</a></td><td width='1%'>1.2866</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2346.2.93&r2=text&tr2=1.2346.2.94&diff_format=h">M</a></td><td width='1%'>1.2346.2.94</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c.diff?r1=text&tr1=1.17&r2=text&tr2=1.18&diff_format=h">M</a></td><td width='1%'>1.18</td><td width='100%'>cpukit/libfs/src/rfs/rtems-rfs-rtems.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c.diff?r1=text&tr1=1.9.2.2&r2=text&tr2=1.9.2.3&diff_format=h">M</a></td><td width='1%'>1.9.2.3</td><td width='100%'>cpukit/libfs/src/rfs/rtems-rfs-rtems.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2865 rtems/cpukit/ChangeLog:1.2866
--- rtems/cpukit/ChangeLog:1.2865       Fri Jul  1 13:23:08 2011
+++ rtems/cpukit/ChangeLog      Sun Jul  3 19:31:25 2011
</font><font color='#997700'>@@ -1,3 +1,9 @@
</font><font color='#000088'>+2011-07-04    Chris Johns <chrisj@rtems.org>
+
+       PR 1827/filesystem
+       * libfs/src/rfs/rtems-rfs-rtems.c: Skip the parent (..) path value
+       when eval make moving up out of the RFS file system.<span style="background-color: #FF0000"> </span>
+
</font> 2011-07-01        Joel Sherrill <joel.sherrill@oarcorp.com>
 
        * libcsupport/src/malloc_initialize.c: After discussion with Till

<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2346.2.93 rtems/cpukit/ChangeLog:1.2346.2.94
--- rtems/cpukit/ChangeLog:1.2346.2.93  Fri Jun 10 13:17:01 2011
+++ rtems/cpukit/ChangeLog      Sun Jul  3 19:27:35 2011
</font><font color='#997700'>@@ -1,3 +1,9 @@
</font><font color='#000088'>+2011-07-04    Chris Johns <chrisj@rtems.org>
+
+       PR 1827/filesystem
+       * libfs/src/rfs/rtems-rfs-rtems.c: Skip the parent (..) path value
+       when eval make moving up out of the RFS file system.<span style="background-color: #FF0000"> </span>
+
</font> 2011-06-10        Joel Sherrill <joel.sherrilL@OARcorp.com>
 
        PR 1812/filesystem

<font color='#006600'>diff -u rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.17 rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.18
--- rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.17   Tue Mar 15 02:32:39 2011
+++ rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c        Sun Jul  3 19:31:25 2011
</font><font color='#997700'>@@ -367,7 +367,7 @@
</font>         rtems_rfs_inode_close (fs, &inode);
         rtems_rfs_rtems_unlock (fs);
         *pathloc = pathloc->mt_entry->mt_point_node;
<font color='#880000'>-        return (*pathloc->ops->evalformake_h)(path - node_len, pathloc, name);
</font><font color='#000088'>+        return (*pathloc->ops->evalformake_h)(path + 2, pathloc, name);
</font>       }
 
       /*

<font color='#006600'>diff -u rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.9.2.2 rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.9.2.3
--- rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c:1.9.2.2        Mon Feb  7 16:34:10 2011
+++ rtems/cpukit/libfs/src/rfs/rtems-rfs-rtems.c        Sun Jul  3 19:27:36 2011
</font><font color='#997700'>@@ -367,7 +367,7 @@
</font>         rtems_rfs_inode_close (fs, &inode);
         rtems_rfs_rtems_unlock (fs);
         *pathloc = pathloc->mt_entry->mt_point_node;
<font color='#880000'>-        return (*pathloc->ops->evalformake_h)(path - node_len, pathloc, name);
</font><font color='#000088'>+        return (*pathloc->ops->evalformake_h)(path + 2, pathloc, name);
</font>       }
 
       /*
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>ccj</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-07-04      Chris Johns <chrisj@rtems.org>

        * fileio/init.c, fileio/system.h: Add commands to
        create ram disks from the shell prompt. Helps testing.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/samples/ChangeLog.diff?r1=text&tr1=1.191&r2=text&tr2=1.192&diff_format=h">M</a></td><td width='1%'>1.192</td><td width='100%'>testsuites/samples/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/samples/fileio/init.c.diff?r1=text&tr1=1.33&r2=text&tr2=1.34&diff_format=h">M</a></td><td width='1%'>1.34</td><td width='100%'>testsuites/samples/fileio/init.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/testsuites/samples/fileio/system.h.diff?r1=text&tr1=1.17&r2=text&tr2=1.18&diff_format=h">M</a></td><td width='1%'>1.18</td><td width='100%'>testsuites/samples/fileio/system.h</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/testsuites/samples/ChangeLog:1.191 rtems/testsuites/samples/ChangeLog:1.192
--- rtems/testsuites/samples/ChangeLog:1.191    Mon Jun 20 02:25:09 2011
+++ rtems/testsuites/samples/ChangeLog  Sun Jul  3 19:34:00 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-07-04    Chris Johns <chrisj@rtems.org>
+
+       * fileio/init.c, fileio/system.h: Add commands to
+       create ram disks from the shell prompt. Helps testing.
+
</font> 2011-06-20        Ralf Corsépius <ralf.corsepius@rtems.org>
 
        * pppd/Makefile.am: Add ppp.conf, pppd.options to EXTRA_DIST.

<font color='#006600'>diff -u rtems/testsuites/samples/fileio/init.c:1.33 rtems/testsuites/samples/fileio/init.c:1.34
--- rtems/testsuites/samples/fileio/init.c:1.33 Sat Jun 11 11:41:56 2011
+++ rtems/testsuites/samples/fileio/init.c      Sun Jul  3 19:34:00 2011
</font><font color='#997700'>@@ -33,14 +33,138 @@
</font> #include <errno.h>
 #include <rtems.h>
 #include <fcntl.h>
<font color='#000088'>+#include <inttypes.h>
</font> #include <rtems/error.h>
 #include <rtems/dosfs.h>
 #include <ctype.h>
 #include <rtems/bdpart.h>
 #include <rtems/libcsupport.h>
 #include <rtems/fsmount.h>
<font color='#000088'>+#include <rtems/ramdisk.h>
+#include <rtems/nvdisk.h>
+#include <rtems/nvdisk-sram.h>
</font> 
 #if FILEIO_BUILD
<font color='#000088'>+
+/**
+ * Let the IO system allocation the next available major number.
+ */
+#define RTEMS_DRIVER_AUTO_MAJOR (0)
+
+/*
+ * RAM disk driver so you can create a RAM disk from the shell prompt.
+ */
+/**
+ * The RAM Disk configuration.
+ */
+rtems_ramdisk_config rtems_ramdisk_configuration[] =
+{
+  {
+    block_size: 512,
+    block_num:  1024,
+    location:   NULL
+  }
+};
+
+/**
+ * The number of RAM Disk configurations.
+ */
+size_t rtems_ramdisk_configuration_size = 1;
+
+/**
+ * Create the RAM Disk Driver entry.
+ */
+rtems_driver_address_table rtems_ramdisk_io_ops = {
+  initialization_entry: ramdisk_initialize,
+  open_entry:           rtems_blkdev_generic_open,
+  close_entry:          rtems_blkdev_generic_close,
+  read_entry:           rtems_blkdev_generic_read,
+  write_entry:          rtems_blkdev_generic_write,
+  control_entry:        rtems_blkdev_generic_ioctl
+};
+
+/**
+ * The NV Device descriptor. For this test it is just DRAM.
+ */
+rtems_nvdisk_device_desc rtems_nv_heap_device_descriptor[] =
+{
+  {
+    flags:  0,
+    base:   0,
+    size:   1 * 1024 * 1024,
+    nv_ops: &rtems_nvdisk_sram_handlers
+  }
+};
+
+/**
+ * The NV Disk configuration.
+ */
+const rtems_nvdisk_config rtems_nvdisk_configuration[] =
+{
+  {
+    block_size:         512,
+    device_count:       1,
+    devices:            &rtems_nv_heap_device_descriptor[0],
+    flags:              0,
+    info_level:         0
+  }
+};
+
+/**
+ * The number of NV Disk configurations.
+ */
+uint32_t rtems_nvdisk_configuration_size = 1;
+
+/**
+ * Create the NV Disk Driver entry.
+ */
+rtems_driver_address_table rtems_nvdisk_io_ops = {
+  initialization_entry: rtems_nvdisk_initialize,
+  open_entry:           rtems_blkdev_generic_open,
+  close_entry:          rtems_blkdev_generic_close,
+  read_entry:           rtems_blkdev_generic_read,
+  write_entry:          rtems_blkdev_generic_write,
+  control_entry:        rtems_blkdev_generic_ioctl
+};
+
+int
+setup_nvdisk (const char* mntpath)
+{
+  rtems_device_major_number major;
+  rtems_status_code         sc;
+
+  /*
+   * For our test we do not have any static RAM or EEPROM devices so
+   * we allocate the memory from the heap.
+   */
+  rtems_nv_heap_device_descriptor[0].base =
+    malloc (rtems_nv_heap_device_descriptor[0].size);
+
+  if (!rtems_nv_heap_device_descriptor[0].base)
+  {
+    printf ("error: no memory for NV disk\n");
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  /*
+   * Register the NV Disk driver.
+   */
+  printf ("Register NV Disk Driver: ");
+  sc = rtems_io_register_driver (RTEMS_DRIVER_AUTO_MAJOR,
+                                 &rtems_nvdisk_io_ops,
+                                 &major);
+  if (sc != RTEMS_SUCCESSFUL)
+  {
+    printf ("error: nvdisk driver not initialised: %s\n",
+            rtems_status_text (sc));
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  printf ("successful\n");
+
+  return 0;
+}
+
</font> /*
  * Table of FAT file systems that will be mounted
  * with the "fsmount" function.
<font color='#997700'>@@ -104,6 +228,384 @@
</font> #ifdef USE_SHELL
 #include <rtems/shell.h>
 
<font color='#000088'>+int
+shell_nvdisk_trace (int argc, char* argv[])
+{
+  const char* driver;
+  int         level;
+
+  if (argc != 3)
+  {
+    printf ("error: invalid number of options\n");
+    return 1;
+  }
+
+  driver = argv[1];
+  level  = strtoul (argv[2], 0, 0);
+<span style="background-color: #FF0000">  </span>
+  int fd = open (driver, O_WRONLY, 0);
+  if (fd < 0)
+  {
+    printf ("error: driver open failed: %s\n", strerror (errno));
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  if (ioctl (fd, RTEMS_NVDISK_IOCTL_INFO_LEVEL, level) < 0)
+  {
+    printf ("error: driver set level failed: %s\n", strerror (errno));
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  close (fd);
+<span style="background-color: #FF0000">  </span>
+  return 0;
+}
+
+int
+shell_nvdisk_erase (int argc, char* argv[])
+{
+  const char* driver = NULL;
+  int         arg;
+  int         fd;
+<span style="background-color: #FF0000">  </span>
+  for (arg = 1; arg < argc; arg++)
+  {
+    if (argv[arg][0] == '-')
+    {
+      printf ("error: invalid option: %s\n", argv[arg]);
+      return 1;
+    }
+    else
+    {
+      if (!driver)
+        driver = argv[arg];
+      else
+      {
+        printf ("error: only one driver name allowed: %s\n", argv[arg]);
+        return 1;
+      }
+    }
+  }
+<span style="background-color: #FF0000">  </span>
+  printf ("erase nv disk: %s\n", driver);
+<span style="background-color: #FF0000">  </span>
+  fd = open (driver, O_WRONLY, 0);
+  if (fd < 0)
+  {
+    printf ("error: nvdisk driver open failed: %s\n", strerror (errno));
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  if (ioctl (fd, RTEMS_NVDISK_IOCTL_ERASE_DISK) < 0)
+  {
+    printf ("error: nvdisk driver erase failed: %s\n", strerror (errno));
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  close (fd);
+<span style="background-color: #FF0000">  </span>
+  printf ("nvdisk erased successful\n");
+
+  return 0;
+}
+
+int
+shell_bdbuf_trace (int argc, char* argv[])
+{
+#if RTEMS_BDBUF_TRACE
+  extern bool rtems_bdbuf_tracer;
+  rtems_bdbuf_tracer = !rtems_bdbuf_tracer;
+  printf ("bdbuf trace: %d\n", rtems_bdbuf_tracer);
+#else
+  printf ("bdbuf trace disabled. Rebuild with enabled.\n");
+#endif
+  return 0;
+}
+
+int
+disk_test_set_block_size (dev_t dev, size_t size)
+{
+  rtems_disk_device* dd;
+  int                rc;
+<span style="background-color: #FF0000">  </span>
+  dd = rtems_disk_obtain (dev);
+  if (!dd)
+  {
+    printf ("error: cannot obtain disk\n");
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  rc = dd->ioctl (dd, RTEMS_BLKIO_SETBLKSIZE, &size);
+
+  rtems_disk_release (dd);
+
+  return rc;
+}
+
+int
+disk_test_write_blocks (dev_t dev, int start, int count, size_t size)
+{
+  int                 block;
+  uint32_t*           ip;
+  uint32_t            value = 0;
+  int                 i;
+  rtems_bdbuf_buffer* bd;
+  rtems_status_code   sc;
+<span style="background-color: #FF0000">  </span>
+  if (disk_test_set_block_size (dev, size) < 0)
+  {
+    printf ("error: set block size failed: %s\n", strerror (errno));
+    return 1;
+  }
+
+  for (block = start; block < (start + count); block++)
+  {
+    sc = rtems_bdbuf_read (dev, block, &bd);
+    if (sc != RTEMS_SUCCESSFUL)
+    {
+      printf ("error: get block %d bd failed: %s\n",
+              block, rtems_status_text (sc));
+      return 1;
+    }
+
+    ip = (uint32_t*) bd->buffer;
+    for (i = 0; i < (size / sizeof (uint32_t)); i++, ip++, value++)
+      *ip = (size << 16) | value;
+
+    sc = rtems_bdbuf_release_modified (bd);
+    if (sc != RTEMS_SUCCESSFUL)
+    {
+      printf ("error: release block %d bd failed: %s\n",
+              block, rtems_status_text (sc));
+      return 1;
+    }
+  }
+
+  return 0;
+}
+
+int
+disk_test_block_sizes (int argc, char *argv[])
+{
+  struct stat st;
+  char*       name;
+  int         start;
+  int         count;
+  int         size;
+<span style="background-color: #FF0000">  </span>
+  if (argc != (4 + 1))
+  {
+    printf ("error: need to supply a device path, start, block and size\n");
+    return 1;
+  }
+
+  name = argv[1];
+<span style="background-color: #FF0000">  </span>
+  if (stat (name, &st) < 0)
+  {
+    printf ("error: stat '%s' failed: %s\n", name, strerror (errno));
+    return 1;
+  }
+
+  start = strtoul (argv[2], 0, 0);
+  count = strtoul (argv[3], 0, 0);
+  size  = strtoul (argv[4], 0, 0);
+<span style="background-color: #FF0000">  </span>
+  return disk_test_write_blocks (st.st_rdev, start, count, size);
+}
+
+size_t
+parse_size_arg (const char* arg)
+{
+  size_t size;
+  size_t scalar = 1;
+<span style="background-color: #FF0000">  </span>
+  size = strtoul (arg, 0, 0);
+  switch (arg[strlen (arg) - 1])
+  {
+    case 'M':
+      scalar = 1000 * 1024;
+      break;
+    case 'm':
+      scalar = 1000000;
+      break;
+    case 'K':
+      scalar = 1024;
+      break;
+    case 'k':
+      scalar = 1000;
+      break;
+    default:
+      printf ("error: invalid scalar (M/m/K/k): %c\n", arg[strlen (arg) - 1]);
+      return 0;
+  }
+  return size * scalar;
+ }
+
+int
+create_ramdisk (int argc, char *argv[])
+{
+  rtems_device_major_number major;
+  rtems_status_code         sc;
+  int                       arg;
+  size_t                    size = 0;
+  size_t                    block_size = 0;
+
+  for (arg = 0; arg < argc; ++arg)
+  {
+    if (argv[arg][0] == '-')
+    {
+      switch (argv[arg][0])
+      {
+        case 's':
+          ++arg;
+          if (arg == argc)
+          {
+            printf ("error: -s needs a size\n");
+            return 1;
+          }
+          size = parse_size_arg (argv[arg]);
+          if (size == 0)
+            return 1;
+          break;
+        case 'b':
+          ++arg;
+          if (arg == argc)
+          {
+            printf ("error: -b needs a size\n");
+            return 1;
+          }
+          block_size = parse_size_arg (argv[arg]);
+          if (size == 0)
+            return 1;
+          break;
+        default:
+          printf ("error: invalid option: %s\n", argv[arg]);
+          return 1;
+      }
+    }
+  }
+
+  if (block_size)
+    rtems_ramdisk_configuration[0].block_size = block_size;
+  if (size)
+    rtems_ramdisk_configuration[0].block_num =
+      size / rtems_ramdisk_configuration[0].block_size;
+<span style="background-color: #FF0000">    </span>
+  /*
+   * Register the RAM Disk driver.
+   */
+  printf ("Register RAM Disk Driver [blocks=%" PRIu32 \
+          " block-size=%" PRIu32"]:",
+          rtems_ramdisk_configuration[0].block_num,
+          rtems_ramdisk_configuration[0].block_size);
+<span style="background-color: #FF0000">  </span>
+  sc = rtems_io_register_driver (RTEMS_DRIVER_AUTO_MAJOR,
+                                 &rtems_ramdisk_io_ops,
+                                 &major);
+  if (sc != RTEMS_SUCCESSFUL)
+  {
+    printf ("error: ramdisk driver not initialised: %s\n",
+            rtems_status_text (sc));
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  printf ("successful\n");
+
+  return 0;
+}
+
+int
+create_nvdisk (int argc, char *argv[])
+{
+  rtems_device_major_number major;
+  rtems_status_code         sc;
+  int                       arg;
+  size_t                    size = 0;
+#if ADD_WHEN_NVDISK_HAS_CHANGED
+  size_t                    block_size = 0;
+#endif
+<span style="background-color: #FF0000">  </span>
+  for (arg = 0; arg < argc; ++arg)
+  {
+    if (argv[arg][0] == '-')
+    {
+      switch (argv[arg][0])
+      {
+        case 's':
+          ++arg;
+          if (arg == argc)
+          {
+            printf ("error: -s needs a size\n");
+            return 1;
+          }
+          size = parse_size_arg (argv[arg]);
+          if (size == 0)
+            return 1;
+          break;
+#if ADD_WHEN_NVDISK_HAS_CHANGED
+        case 'b':
+          ++arg;
+          if (arg == argc)
+          {
+            printf ("error: -b needs a size\n");
+            return 1;
+          }
+          block_size = parse_size_arg (argv[arg]);
+          if (size == 0)
+            return 1;
+          break;
+#endif
+        default:
+          printf ("error: invalid option: %s\n", argv[arg]);
+          return 1;
+      }
+    }
+  }
+
+#if ADD_WHEN_NVDISK_HAS_CHANGED
+  if (block_size)
+    rtems_nvdisk_configuration[0].block_size = block_size;
+#endif
+  if (size)
+    rtems_nv_heap_device_descriptor[0].size = size;
+<span style="background-color: #FF0000">    </span>
+  /*
+   * For our test we do not have any static RAM or EEPROM devices so
+   * we allocate the memory from the heap.
+   */
+  rtems_nv_heap_device_descriptor[0].base =
+    malloc (rtems_nv_heap_device_descriptor[0].size);
+
+  if (!rtems_nv_heap_device_descriptor[0].base)
+  {
+    printf ("error: no memory for NV disk\n");
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  /*
+   * Register the RAM Disk driver.
+   */
+  printf ("Register NV Disk Driver [size=%" PRIu32 \
+          " block-size=%" PRIu32"]:",
+          rtems_nv_heap_device_descriptor[0].size,
+          rtems_nvdisk_configuration[0].block_size);
+<span style="background-color: #FF0000">  </span>
+  sc = rtems_io_register_driver (RTEMS_DRIVER_AUTO_MAJOR,
+                                 &rtems_nvdisk_io_ops,
+                                 &major);
+  if (sc != RTEMS_SUCCESSFUL)
+  {
+    printf ("error: nvdisk driver not initialised: %s\n",
+            rtems_status_text (sc));
+    return 1;
+  }
+<span style="background-color: #FF0000">  </span>
+  printf ("successful\n");
+
+  return 0;
+}
+
</font> static void writeFile(
   const char *name,
   mode_t      mode,
<font color='#997700'>@@ -186,7 +688,30 @@
</font>     "echo j2   DOES NOT have the magic first line\n"
   );
 
<font color='#880000'>-  printf(" =========================\n");
</font><font color='#000088'>+  rtems_shell_add_cmd ("mkrd", "files",
+                       "Create a RAM disk driver", create_ramdisk);
+  rtems_shell_add_cmd ("mknvd", "files",
+                       "Create a NV disk driver", create_nvdisk);
+  rtems_shell_add_cmd ("nverase", "misc",
+                       "nverase driver", shell_nvdisk_erase);
+  rtems_shell_add_cmd ("nvtrace", "misc",
+                       "nvtrace driver level", shell_nvdisk_trace);
+  rtems_shell_add_cmd ("bdbuftrace", "files",
+                       "bdbuf trace toggle", shell_bdbuf_trace);
+  rtems_shell_add_cmd ("td", "files",
+                       "Test disk", disk_test_block_sizes);
+#if RTEMS_RFS_TRACE
+  rtems_shell_add_cmd ("rfs", "files",
+                       "RFS trace",
+                       rtems_rfs_trace_shell_command);
+#endif
+#if RTEMS_RFS_RTEMS_TRACE
+  rtems_shell_add_cmd ("rrfs", "files",
+                       "RTEMS RFS trace",
+                       rtems_rfs_rtems_trace_shell_command);
+#endif
+
+  printf("\n =========================\n");
</font>   printf(" starting shell\n");
   printf(" =========================\n");
   rtems_shell_init(
<font color='#997700'>@@ -196,7 +721,7 @@
</font>     "/dev/console",                  /* devname */
     false,                           /* forever */
     true,                            /* wait */
<font color='#880000'>-    rtems_shell_login_check          /* login */
</font><font color='#000088'>+    NULL                             /* login */
</font>   );
 }
 #endif /* USE_SHELL */

<font color='#006600'>diff -u rtems/testsuites/samples/fileio/system.h:1.17 rtems/testsuites/samples/fileio/system.h:1.18
--- rtems/testsuites/samples/fileio/system.h:1.17       Thu May  5 11:45:40 2011
+++ rtems/testsuites/samples/fileio/system.h    Sun Jul  3 19:34:00 2011
</font><font color='#997700'>@@ -39,13 +39,21 @@
</font> #include <libchip/ide_ctrl.h> /* for general ide driver prototype */
 #endif
 
<font color='#000088'>+#define CONFIGURE_MAXIMUM_DRIVERS           4
</font> #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
 #ifdef RTEMS_BSP_HAS_IDE_DRIVER
 #define CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
<font color='#000088'>+#define CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
+#define CONFIGURE_ATA_DRIVER_TASK_PRIORITY  14
</font> #endif
 #define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
<font color='#000088'>+#define CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS  2
+#define CONFIGURE_BDBUF_MAX_WRITE_BLOCKS       8
+#define CONFIGURE_SWAPOUT_TASK_PRIORITY        15
</font> #define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
<font color='#000088'>+#define CONFIGURE_FILESYSTEM_RFS
+#define CONFIGURE_FILESYSTEM_DOSFS
</font> 
 /*
  * XXX: these values are higher than needed...
</pre>
<p> </p>

<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>