# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Date 1174296882 0
# Node ID f40079acf646a14bf891e126dc3ac2e798c3d4bb
# Parent b795b90e4ff6ad9ce0c9fc47d921f91a4fb12cc5
minios: Various small fixes.
- Fixed type of variables in hypervisor.c.
- Fixed not removing a waiter from watch_queue.
- Make wait_for_watch() global accessible.
Signed-off-by: Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
---
extras/mini-os/hypervisor.c | 4 ++--
extras/mini-os/include/wait.h | 7 +++++++
extras/mini-os/include/xenbus.h | 1 +
extras/mini-os/xenbus/xenbus.c | 3 ++-
4 files changed, 12 insertions(+), 3 deletions(-)
diff -r b795b90e4ff6 -r f40079acf646 extras/mini-os/hypervisor.c
--- a/extras/mini-os/hypervisor.c Mon Mar 19 09:32:52 2007 +0000
+++ b/extras/mini-os/hypervisor.c Mon Mar 19 09:34:42 2007 +0000
@@ -35,8 +35,8 @@
void do_hypervisor_callback(struct pt_regs *regs)
{
- u32 l1, l2;
- unsigned int l1i, l2i, port;
+ unsigned long l1, l2, l1i, l2i;
+ unsigned int port;
int cpu = 0;
shared_info_t *s = HYPERVISOR_shared_info;
vcpu_info_t *vcpu_info = &s->vcpu_info[cpu];
diff -r b795b90e4ff6 -r f40079acf646 extras/mini-os/include/wait.h
--- a/extras/mini-os/include/wait.h Mon Mar 19 09:32:52 2007 +0000
+++ b/extras/mini-os/include/wait.h Mon Mar 19 09:34:42 2007 +0000
@@ -74,6 +74,13 @@ static inline void wake_up(struct wait_q
local_irq_restore(flags); \
} while (0)
+#define remove_waiter(w) do { \
+ unsigned long flags; \
+ local_irq_save(flags); \
+ remove_wait_queue(&w); \
+ local_irq_restore(flags); \
+} while (0)
+
#define wait_event(wq, condition) do{ \
unsigned long flags; \
if(condition) \
diff -r b795b90e4ff6 -r f40079acf646 extras/mini-os/include/xenbus.h
--- a/extras/mini-os/include/xenbus.h Mon Mar 19 09:32:52 2007 +0000
+++ b/extras/mini-os/include/xenbus.h Mon Mar 19 09:34:42 2007 +0000
@@ -13,6 +13,7 @@ char *xenbus_read(xenbus_transaction_t x
char *xenbus_read(xenbus_transaction_t xbt, const char *path, char **value);
char *xenbus_watch_path(xenbus_transaction_t xbt, const char *path);
+void wait_for_watch(void);
char* xenbus_wait_for_value(const char*,const char*);
/* Associates a value with a path. Returns a malloc'd error string on
diff -r b795b90e4ff6 -r f40079acf646 extras/mini-os/xenbus/xenbus.c
--- a/extras/mini-os/xenbus/xenbus.c Mon Mar 19 09:32:52 2007 +0000
+++ b/extras/mini-os/xenbus/xenbus.c Mon Mar 19 09:34:42 2007 +0000
@@ -72,11 +72,12 @@ static void memcpy_from_ring(const void
memcpy(dest + c1, ring, c2);
}
-static inline void wait_for_watch(void)
+void wait_for_watch(void)
{
DEFINE_WAIT(w);
add_waiter(w,watch_queue);
schedule();
+ remove_waiter(w);
wake(current);
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|