WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Re: [PATCH] mini-os: Fix forp xenbus and cleanup

To: Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] Re: [PATCH] mini-os: Fix forp xenbus and cleanup
From: Grzegorz Milos <gm281@xxxxxxxxx>
Date: Sat, 24 Mar 2007 17:21:54 +0100
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Sat, 24 Mar 2007 09:21:23 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <200703161519.43376.dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <200703161519.43376.dietmar.hahn@xxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5.0.9 (X11/20070104)
That looks good. Could you please apply Keir?

Thanks.
Gregor

Dietmar Hahn wrote:
Hi,

attached is a small patch which fixes a problem in xenbus.c.
In xenbus_wait_for_value() the function wait_for_watch() is called which adds an waiter to watch_queue but never removes this. Besides this I made wait_for_watch() a global function and changed the types of 2 variables in hypervisor.c to the type the reference variable has.
Thanks.

Dietmar.


------------------------------------------------------------------------

# HG changeset patch
# User dietmar.hahn@xxxxxxxxxxxxxxxxxxx
# Date 1174053768 -3600
# Node ID 60f93bf1835096d6807aedbdffaab9d15054d564
# Parent  cd8d2a4d46e44dd91fbd7eee3a4553dc9633a9cc
- 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>

diff -r cd8d2a4d46e4 -r 60f93bf18350 extras/mini-os/hypervisor.c
--- a/extras/mini-os/hypervisor.c       Thu Mar 15 23:03:22 2007 +0000
+++ b/extras/mini-os/hypervisor.c       Fri Mar 16 15:02:48 2007 +0100
@@ -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 cd8d2a4d46e4 -r 60f93bf18350 extras/mini-os/include/wait.h
--- a/extras/mini-os/include/wait.h     Thu Mar 15 23:03:22 2007 +0000
+++ b/extras/mini-os/include/wait.h     Fri Mar 16 15:02:48 2007 +0100
@@ -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 cd8d2a4d46e4 -r 60f93bf18350 extras/mini-os/include/xenbus.h
--- a/extras/mini-os/include/xenbus.h   Thu Mar 15 23:03:22 2007 +0000
+++ b/extras/mini-os/include/xenbus.h   Fri Mar 16 15:02:48 2007 +0100
@@ -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 cd8d2a4d46e4 -r 60f93bf18350 extras/mini-os/xenbus/xenbus.c
--- a/extras/mini-os/xenbus/xenbus.c    Thu Mar 15 23:03:22 2007 +0000
+++ b/extras/mini-os/xenbus/xenbus.c    Fri Mar 16 15:02:48 2007 +0100
@@ -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-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>