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