change log for rtems (2010-05-17)

rtems-vc at rtems.org rtems-vc at rtems.org
Mon May 17 08:10:55 UTC 2010


 *sh*:
2010-05-17	Oleg Kravtsov <Oleg.Kravtsov at oktetlabs.ru>

	PR 1449/cpukit
	* libblock/src/diskdevs.c: rtems_disk_next() will now implicitly
	obtain the returned disk.
	* libblock/include/rtems/diskdevs.h: Documentation.

M 1.2294  cpukit/ChangeLog
M   1.19  cpukit/libblock/include/rtems/diskdevs.h
M   1.25  cpukit/libblock/src/diskdevs.c

diff -u rtems/cpukit/ChangeLog:1.2293 rtems/cpukit/ChangeLog:1.2294
--- rtems/cpukit/ChangeLog:1.2293	Sat May 15 01:29:55 2010
+++ rtems/cpukit/ChangeLog	Mon May 17 03:08:30 2010
@@ -1,3 +1,10 @@
+2010-05-17	Oleg Kravtsov <Oleg.Kravtsov at oktetlabs.ru>
+
+	PR 1449/cpukit
+	* libblock/src/diskdevs.c: rtems_disk_next() will now implicitly
+	obtain the returned disk.
+	* libblock/include/rtems/diskdevs.h: Documentation.
+
 2010-05-15	Chris Johns <chrisj at rtems.org>
 
 	* libfs/src/imfs/imfs_initsupp.c, libfs/src/imfs/imfs.h,

diff -u rtems/cpukit/libblock/include/rtems/diskdevs.h:1.18 rtems/cpukit/libblock/include/rtems/diskdevs.h:1.19
--- rtems/cpukit/libblock/include/rtems/diskdevs.h:1.18	Fri Dec 18 09:59:29 2009
+++ rtems/cpukit/libblock/include/rtems/diskdevs.h	Mon May 17 03:08:30 2010
@@ -323,10 +323,12 @@
  * one to start the search.
  *
  * @code
- * rtems_disk_device *dd = rtems_disk_next((dev_t) -1);
+ * rtems_status_code sc = RTEMS_SUCCESSFUL;
+ * rtems_disk_device *dd = (dev_t) -1;
  *
- * while (dd != NULL) {
- *   dd = rtems_disk_next(dd->dev);
+ * while (sc == RTEMS_SUCCESSFUL && (dd = rtems_disk_next(dev)) != NULL) {
+ *   dev = rtems_disk_get_device_identifier(dd);
+ *   sc = rtems_disk_release(dd);
  * }
  * @endcode
  */

diff -u rtems/cpukit/libblock/src/diskdevs.c:1.24 rtems/cpukit/libblock/src/diskdevs.c:1.25
--- rtems/cpukit/libblock/src/diskdevs.c:1.24	Thu Apr 29 06:34:59 2010
+++ rtems/cpukit/libblock/src/diskdevs.c	Mon May 17 03:08:30 2010
@@ -462,33 +462,58 @@
 rtems_disk_device *
 rtems_disk_next(dev_t dev)
 {
-    rtems_device_major_number major;
-    rtems_device_minor_number minor;
-    rtems_disk_device_table *dtab;
+  rtems_status_code sc = RTEMS_SUCCESSFUL;
+  rtems_disk_device_table *dtab = NULL;
+  rtems_device_major_number major = 0;
+  rtems_device_minor_number minor = 0;
 
-    dev++;
-    rtems_filesystem_split_dev_t (dev, major, minor);
+  if (dev != (dev_t) -1) {
+    rtems_filesystem_split_dev_t(dev, major, minor);
 
-    if (major >= disktab_size)
+    /* If minor wraps around */
+    if ((minor + 1) < minor) {
+      /* If major wraps around */
+      if ((major + 1) < major) {
         return NULL;
+      }
+      ++major;
+      minor = 0;
+    } else {
+      ++minor;
+    }
+  }
+
+  sc = disk_lock();
+  if (sc != RTEMS_SUCCESSFUL) {
+    return NULL;
+  }
 
-    dtab = disktab + major;
-    while (true)
-    {
-        if ((dtab == NULL) || (minor >= dtab->size))
-        {
-             major++; minor = 0;
-             if (major >= disktab_size)
-                 return NULL;
-             dtab = disktab + major;
-        }
-        else if (dtab->minor[minor] == NULL)
-        {
-            minor++;
-        }
-        else
-            return dtab->minor[minor];
+  if (major >= disktab_size) {
+    disk_unlock();
+
+    return NULL;
+  }
+
+  dtab = disktab + major;
+  while (true) {
+    if (dtab->minor == NULL || minor >= dtab->size) {
+       minor = 0;
+       ++major;
+       if (major >= disktab_size) {
+         disk_unlock();
+
+         return NULL;
+       }
+       dtab = disktab + major;
+    } else if (dtab->minor [minor] == NULL) {
+      ++minor;
+    } else {
+      ++dtab->minor [minor]->uses;
+      disk_unlock();
+
+      return dtab->minor [minor];
     }
+  }
 }
 
 rtems_status_code



--

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/20100517/d648ab2f/attachment.html>


More information about the vc mailing list