aboutsummaryrefslogtreecommitdiffstats
path: root/extras/mini-os/fbfront.c
diff options
context:
space:
mode:
Diffstat (limited to 'extras/mini-os/fbfront.c')
-rw-r--r--extras/mini-os/fbfront.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/extras/mini-os/fbfront.c b/extras/mini-os/fbfront.c
index fa4fc428cc..6d2268e27e 100644
--- a/extras/mini-os/fbfront.c
+++ b/extras/mini-os/fbfront.c
@@ -262,7 +262,7 @@ void shutdown_kbdfront(struct kbdfront_dev *dev)
goto close_kbdfront;
}
state = xenbus_read_integer(path);
- if (state < XenbusStateClosed) {
+ while (state < XenbusStateClosed) {
err = xenbus_wait_for_state_change(path, &state, &dev->events);
if (err) free(err);
}
@@ -272,8 +272,10 @@ void shutdown_kbdfront(struct kbdfront_dev *dev)
XenbusStateInitialising, err);
goto close_kbdfront;
}
- // does not work yet.
- //xenbus_wait_for_value(path, "2", &dev->events);
+ err = NULL;
+ state = xenbus_read_integer(path);
+ while (err == NULL && (state < XenbusStateInitWait || state >= XenbusStateClosed))
+ err = xenbus_wait_for_state_change(path, &state, &dev->events);
close_kbdfront:
if (err) free(err);
@@ -660,8 +662,11 @@ void shutdown_fbfront(struct fbfront_dev *dev)
XenbusStateInitialising, err);
goto close_fbfront;
}
- // does not work yet
- //xenbus_wait_for_value(path, "2", &dev->events);
+
+ err = NULL;
+ state = xenbus_read_integer(path);
+ while (err == NULL && (state < XenbusStateInitWait || state >= XenbusStateClosed))
+ err = xenbus_wait_for_state_change(path, &state, &dev->events);
close_fbfront:
if (err) free(err);