+static void *bg_gc_func(void *dummy)
+{
+ struct yaffs_dev *dev;
+ int urgent = 0;
+ int result;
+ int next_urgent;
+
+ (void)dummy;
+
+ /* Sleep for a bit to allow start up */
+ sleep(2);
+
+
+ while (1) {
+ /* Iterate through devices, do bg gc updating ungency */
+ yaffs_dev_rewind();
+ next_urgent = 0;
+
+ while ((dev = yaffs_next_dev()) != NULL) {
+ result = yaffs_do_background_gc_reldev(dev, urgent);
+ if (result > 0)
+ next_urgent = 1;
+ }
+
+ urgent = next_urgent;
+
+ if (next_urgent)
+ sleep(1);
+ else
+ sleep(5);
+ }
+
+ /* Don't ever return. */
+ return NULL;
+}
+